mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-11 14:01:43 -08:00
Fix assertions in popping up menus on TTY (Bug#19862)
Do not merge this commit to trunk! src/menu.c (Fx_popup_menu) [HAVE_X_WINDOWS]: Call mouse_position_for_popup only for X frames.
This commit is contained in:
parent
0077b36e2e
commit
432b00e659
2 changed files with 34 additions and 25 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2015-02-14 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* menu.c (Fx_popup_menu) [HAVE_X_WINDOWS]: Call
|
||||
mouse_position_for_popup only for X frames. (Bug#19862)
|
||||
|
||||
2015-02-13 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* buffer.c (syms_of_buffer): Doc fix. (Bug#19841)
|
||||
|
|
|
|||
54
src/menu.c
54
src/menu.c
|
|
@ -1238,35 +1238,39 @@ no quit occurs and `x-popup-menu' returns nil. */)
|
|||
/* Use the mouse's current position. */
|
||||
struct frame *new_f = SELECTED_FRAME ();
|
||||
#ifdef HAVE_X_WINDOWS
|
||||
/* Can't use mouse_position_hook for X since it returns
|
||||
coordinates relative to the window the mouse is in,
|
||||
we need coordinates relative to the edit widget always. */
|
||||
if (new_f != 0)
|
||||
if (FRAME_X_P (new_f))
|
||||
{
|
||||
int cur_x, cur_y;
|
||||
/* Can't use mouse_position_hook for X since it returns
|
||||
coordinates relative to the window the mouse is in,
|
||||
we need coordinates relative to the edit widget always. */
|
||||
if (new_f != 0)
|
||||
{
|
||||
int cur_x, cur_y;
|
||||
|
||||
mouse_position_for_popup (new_f, &cur_x, &cur_y);
|
||||
/* cur_x/y may be negative, so use make_number. */
|
||||
x = make_number (cur_x);
|
||||
y = make_number (cur_y);
|
||||
mouse_position_for_popup (new_f, &cur_x, &cur_y);
|
||||
/* cur_x/y may be negative, so use make_number. */
|
||||
x = make_number (cur_x);
|
||||
y = make_number (cur_y);
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif /* HAVE_X_WINDOWS */
|
||||
{
|
||||
Lisp_Object bar_window;
|
||||
enum scroll_bar_part part;
|
||||
Time time;
|
||||
void (*mouse_position_hook) (struct frame **, int,
|
||||
Lisp_Object *,
|
||||
enum scroll_bar_part *,
|
||||
Lisp_Object *,
|
||||
Lisp_Object *,
|
||||
Time *) =
|
||||
FRAME_TERMINAL (new_f)->mouse_position_hook;
|
||||
|
||||
#else /* not HAVE_X_WINDOWS */
|
||||
Lisp_Object bar_window;
|
||||
enum scroll_bar_part part;
|
||||
Time time;
|
||||
void (*mouse_position_hook) (struct frame **, int,
|
||||
Lisp_Object *,
|
||||
enum scroll_bar_part *,
|
||||
Lisp_Object *,
|
||||
Lisp_Object *,
|
||||
Time *) =
|
||||
FRAME_TERMINAL (new_f)->mouse_position_hook;
|
||||
|
||||
if (mouse_position_hook)
|
||||
(*mouse_position_hook) (&new_f, 1, &bar_window,
|
||||
&part, &x, &y, &time);
|
||||
#endif /* not HAVE_X_WINDOWS */
|
||||
if (mouse_position_hook)
|
||||
(*mouse_position_hook) (&new_f, 1, &bar_window,
|
||||
&part, &x, &y, &time);
|
||||
}
|
||||
|
||||
if (new_f != 0)
|
||||
XSETFRAME (window, new_f);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue