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
next prev parent 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
* 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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.