[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
x-popup-menu pops up at funny positions
From: |
Jan D. |
Subject: |
x-popup-menu pops up at funny positions |
Date: |
Fri, 03 Jan 2003 17:15:18 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2a) Gecko/20020910 |
Hello.
While trying to reproduce a reported problem with x-popup-menu (that problem
seems to be gone), I saw that x-popup-menu doesn't put the menu in the correct
position if the (x y) variant is used, like this:
(x-popup-menu
(list '(1 1) (selected-window))
(list "title" (cons "title" '(("ignore" 'ignore)))
))
For lucid and motif, this puts the popup menu at a position that would be
correct if the Emacs edit window is at (0 0) on the root window. If Emacs is
anywhere else on the root window, this is wrong.
Here is a patch to fix that. Is it OK to check in?
Jan D.
*** src/xmenu.c.~1.239.~ 2002-12-27 16:43:12.000000000 +0100
--- src/xmenu.c 2003-01-03 16:48:42.000000000 +0100
***************
*** 2279,2315 ****
popup_deactivate_callback,
menu_highlight_callback);
- /* Adjust coordinates to relative to the outer (window manager) window. */
- {
- Window child;
- int win_x = 0, win_y = 0;
-
- /* Find the position of the outside upper-left corner of
- the inner window, with respect to the outer window. */
- if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO
(f)->root_window)
- {
- BLOCK_INPUT;
- XTranslateCoordinates (FRAME_X_DISPLAY (f),
-
- /* From-window, to-window. */
- f->output_data.x->window_desc,
- f->output_data.x->parent_desc,
-
- /* From-position, to-position. */
- 0, 0, &win_x, &win_y,
-
- /* Child of window. */
- &child);
- UNBLOCK_INPUT;
- x += win_x;
- y += win_y;
- }
- }
-
- /* Adjust coordinates to be root-window-relative. */
- x += f->output_data.x->left_pos;
- y += f->output_data.x->top_pos;
-
dummy.type = ButtonPress;
dummy.serial = 0;
dummy.send_event = 0;
--- 2279,2284 ----
***************
*** 2318,2327 ****
dummy.root = FRAME_X_DISPLAY_INFO (f)->root_window;
dummy.window = dummy.root;
dummy.subwindow = dummy.root;
- dummy.x_root = x;
- dummy.y_root = y;
dummy.x = x;
dummy.y = y;
dummy.state = (FRAME_X_DISPLAY_INFO (f)->grabbed >> 1) * Button1Mask;
dummy.button = 0;
for (i = 0; i < 5; i++)
--- 2287,2299 ----
dummy.root = FRAME_X_DISPLAY_INFO (f)->root_window;
dummy.window = dummy.root;
dummy.subwindow = dummy.root;
dummy.x = x;
dummy.y = y;
+ /* Adjust coordinates to be root-window-relative. */
+ x += f->output_data.x->left_pos;
+ y += f->output_data.x->top_pos;
+ dummy.x_root = x;
+ dummy.y_root = y;
dummy.state = (FRAME_X_DISPLAY_INFO (f)->grabbed >> 1) * Button1Mask;
dummy.button = 0;
for (i = 0; i < 5; i++)
- x-popup-menu pops up at funny positions,
Jan D. <=
- Re: x-popup-menu pops up at funny positions, Jan D., 2003/01/03
- Re: x-popup-menu pops up at funny positions, Richard Stallman, 2003/01/03
- Re: x-popup-menu pops up at funny positions, Jan D., 2003/01/04
- Re: x-popup-menu pops up at funny positions, Richard Stallman, 2003/01/05
- Re: x-popup-menu pops up at funny positions, Jan D., 2003/01/05
- Re: x-popup-menu pops up at funny positions, Jan D., 2003/01/05
- Re: x-popup-menu pops up at funny positions, Richard Stallman, 2003/01/07
- Re: x-popup-menu pops up at funny positions, Jan D., 2003/01/07
- Re: x-popup-menu pops up at funny positions, Richard Stallman, 2003/01/07
- Re: x-popup-menu pops up at funny positions, Jan D., 2003/01/07