unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Andreas Politz <politza@hochschule-trier.de>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 5721@debbugs.gnu.org
Subject: bug#5721: Feature request: Function that returns absolute coordinates
Date: Fri, 04 Oct 2013 12:33:57 +0200	[thread overview]
Message-ID: <87txgxfhpm.fsf@hochschule-trier.de> (raw)
In-Reply-To: <837gdtct50.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 04 Oct 2013 11:55:23 +0300")

[-- Attachment #1: Type: text/plain, Size: 457 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

> One more nit, about these fragments: [...] it is better to check the
> frame type at run time, [...]

>  #ifdef HAVE_X_WINDOWS
>    if (FRAME_X_P (f))
>      *add_y += FRAME_X_OUTPUT (f)->y_pixels_outer_diff;
>    else
>  #elif defined (HAVE_NTGUI)
>    if (FRAME_W32_P (f))
>      *add_y += f->y_pixels_diff;
>  #endif
>
> etc., you get the idea.

I don't think that quite does what you have in mind, but I get it.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: window-absolute-pixel-v3.diff --]
[-- Type: text/x-diff, Size: 3154 bytes --]

=== modified file 'src/window.c'
*** src/window.c	2013-10-02 12:08:27 +0000
--- src/window.c	2013-10-04 10:13:26 +0000
***************
*** 935,945 ****
--- 935,974 ----
  		 WINDOW_RIGHT_EDGE_X (w), WINDOW_BOTTOM_EDGE_Y (w));
  }
  
+ #ifdef HAVE_WINDOW_SYSTEM
  static void
  calc_absolute_offset (struct window *w, int *add_x, int *add_y)
  {
    struct frame *f = XFRAME (w->frame);
+ 
+   if (! FRAME_WINDOW_P (f))
+     {
+       *add_x = *add_y = 0;
+       return;
+     }
    *add_y = f->top_pos;
+   *add_x = f->left_pos;
+   switch (f->output_method)
+     {
+ #ifdef HAVE_X_WINDOWS
+     case output_x_window:
+       *add_y += FRAME_X_OUTPUT (f)->y_pixels_outer_diff;
+       *add_x += FRAME_X_OUTPUT (f)->x_pixels_outer_diff;
+       break;
+ #endif
+ #ifdef HAVE_NTGUI
+     case output_w32:
+       *add_y += f->y_pixels_diff;
+       *add_x += f->x_pixels_diff;
+       break;
+ #endif
+ #ifdef HAVE_NS
+     case output_ns:
+       /* FIXME: Add proper offsets. */
+       break;
+ #endif
+     }
+ 
  #ifdef FRAME_MENUBAR_HEIGHT
    *add_y += FRAME_MENUBAR_HEIGHT (f);
  #endif
***************
*** 951,961 ****
  #ifdef FRAME_NS_TITLEBAR_HEIGHT
    *add_y += FRAME_NS_TITLEBAR_HEIGHT (f);
  #endif
!   *add_x = f->left_pos;
  #ifdef FRAME_TOOLBAR_LEFT_WIDTH
    *add_x += FRAME_TOOLBAR_LEFT_WIDTH (f);
  #endif
  }
  
  DEFUN ("window-absolute-pixel-edges", Fwindow_absolute_pixel_edges,
         Swindow_absolute_pixel_edges, 0, 1, 0,
--- 980,991 ----
  #ifdef FRAME_NS_TITLEBAR_HEIGHT
    *add_y += FRAME_NS_TITLEBAR_HEIGHT (f);
  #endif
! 
  #ifdef FRAME_TOOLBAR_LEFT_WIDTH
    *add_x += FRAME_TOOLBAR_LEFT_WIDTH (f);
  #endif
  }
+ #endif /* HAVE_WINDOW_SYSTEM */
  
  DEFUN ("window-absolute-pixel-edges", Fwindow_absolute_pixel_edges,
         Swindow_absolute_pixel_edges, 0, 1, 0,
***************
*** 975,982 ****
    register struct window *w = decode_valid_window (window);
    int add_x, add_y;
  
    calc_absolute_offset (w, &add_x, &add_y);
! 
    return list4i (WINDOW_LEFT_EDGE_X (w) + add_x,
  		 WINDOW_TOP_EDGE_Y (w) + add_y,
  		 WINDOW_RIGHT_EDGE_X (w) + add_x,
--- 1005,1015 ----
    register struct window *w = decode_valid_window (window);
    int add_x, add_y;
  
+ #ifdef HAVE_WINDOW_SYSTEM
    calc_absolute_offset (w, &add_x, &add_y);
! #else
!   add_x = add_y = 0;
! #endif
    return list4i (WINDOW_LEFT_EDGE_X (w) + add_x,
                   WINDOW_TOP_EDGE_Y (w) + add_y,
                   WINDOW_RIGHT_EDGE_X (w) + add_x,
***************
*** 1056,1063 ****
    register struct window *w = decode_live_window (window);
    int add_x, add_y;
  
    calc_absolute_offset (w, &add_x, &add_y);
! 
    return list4i ((WINDOW_BOX_LEFT_EDGE_X (w)
  		  + WINDOW_LEFT_MARGIN_WIDTH (w)
  		  + WINDOW_LEFT_FRINGE_WIDTH (w) + add_x),
--- 1089,1099 ----
    register struct window *w = decode_live_window (window);
    int add_x, add_y;
  
+ #ifdef HAVE_WINDOW_SYSTEM
    calc_absolute_offset (w, &add_x, &add_y);
! #else
!   add_x = add_y = 0;
! #endif
    return list4i ((WINDOW_BOX_LEFT_EDGE_X (w)
                    + WINDOW_LEFT_MARGIN_WIDTH (w)
                    + WINDOW_LEFT_FRINGE_WIDTH (w) + add_x),


[-- Attachment #3: Type: text/plain, Size: 5 bytes --]


-ap

  reply	other threads:[~2013-10-04 10:33 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-15 14:33 bug#5721: Feature request: Function that returns absolute coordinates IRIE Shinsuke
2010-03-30 17:50 ` Jan Djärv
2010-05-31 10:28   ` IRIE Shinsuke
2010-06-01  1:16     ` YAMAMOTO Mitsuharu
2010-07-02  2:10       ` YAMAMOTO Mitsuharu
2010-07-02  7:06         ` Jan Djärv
2010-07-02  9:15           ` YAMAMOTO Mitsuharu
2010-07-14 15:22             ` Jan Djärv
2010-07-15  0:17               ` YAMAMOTO Mitsuharu
2010-07-15  6:07                 ` Jan Djärv
2010-07-15  6:49                   ` YAMAMOTO Mitsuharu
2010-07-15  7:50                     ` Jan Djärv
2010-07-15  7:59                       ` YAMAMOTO Mitsuharu
2010-07-15  8:06                         ` Jan Djärv
2010-07-15  8:18                           ` YAMAMOTO Mitsuharu
2010-07-15  8:35                             ` Jan Djärv
2010-07-15  8:44                               ` YAMAMOTO Mitsuharu
2010-07-15  8:59                                 ` Jan Djärv
2010-07-15  9:27                                   ` YAMAMOTO Mitsuharu
2010-07-15  9:35                                     ` Jan Djärv
2010-07-15  9:38                                       ` YAMAMOTO Mitsuharu
2010-07-15 10:32                                         ` Jan Djärv
2010-07-16  0:25                                           ` YAMAMOTO Mitsuharu
2010-07-16  6:39                                             ` Jan Djärv
2010-07-16  9:14                                               ` YAMAMOTO Mitsuharu
2010-07-16 12:20                                                 ` Jan Djärv
2010-07-15  9:57                                       ` YAMAMOTO Mitsuharu
2010-07-15 10:56                                         ` Jan Djärv
2010-07-16  0:35                                           ` YAMAMOTO Mitsuharu
2010-07-16  6:38                                             ` Jan Djärv
2010-07-16  8:37                                               ` YAMAMOTO Mitsuharu
2010-07-16  8:49                                                 ` Jan Djärv
2010-07-16  8:58                                                   ` YAMAMOTO Mitsuharu
2010-07-16 12:19                                                     ` Jan Djärv
2010-07-17  0:30                                                       ` YAMAMOTO Mitsuharu
2010-07-17  5:32                                                         ` YAMAMOTO Mitsuharu
2010-07-17  8:37                                                           ` Jan Djärv
2010-07-17  8:42                                                             ` YAMAMOTO Mitsuharu
2010-07-01 12:37 ` Jan Djärv
2010-07-01 16:52   ` bug#5721: Feature request: Function that returnsabsolute coordinates Drew Adams
2010-07-01 17:20     ` Jan Djärv
2010-07-01 17:27       ` Drew Adams
2010-07-01 18:26         ` Jan Djärv
2010-07-01 18:52           ` Drew Adams
2010-07-01 20:08           ` Juanma Barranquero
2010-07-01 22:05           ` Lennart Borgman
     [not found]   ` <87r5jn148f.wl%irieshinsuke@yahoo.co.jp>
2010-07-01 18:14     ` bug#5721: Feature request: Function that returns absolute coordinates Jan Djärv
2010-07-02  0:33 ` MON KEY
2013-09-28 20:06 ` Andreas Politz
2013-09-29 10:26   ` martin rudalics
2013-09-29 15:41     ` Andreas Politz
2013-09-29 16:02       ` Jan Djärv
2013-09-29 16:05         ` Jan Djärv
2013-09-29 17:21           ` Andreas Politz
2013-09-29 18:09             ` Jan Djärv
2013-09-29 18:47             ` martin rudalics
2013-09-29 18:47         ` martin rudalics
2013-09-29 20:10           ` Jan Djärv
2013-10-03 17:25             ` Andreas Politz
2013-10-03 20:25               ` Eli Zaretskii
2013-10-03 21:09                 ` Andreas Politz
2013-10-04  6:47                   ` Eli Zaretskii
2013-10-04  8:28                     ` Andreas Politz
2013-10-04  8:55                       ` Eli Zaretskii
2013-10-04 10:33                         ` Andreas Politz [this message]
2013-09-29 18:46       ` martin rudalics
2013-09-29 20:25         ` Andreas Politz
2013-09-29 15:59     ` Jan Djärv

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87txgxfhpm.fsf@hochschule-trier.de \
    --to=politza@hochschule-trier.de \
    --cc=5721@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).