1
Fork 0
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:
Eli Zaretskii 2015-02-14 15:03:20 +02:00
parent 0077b36e2e
commit 432b00e659
2 changed files with 34 additions and 25 deletions

View file

@ -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)

View file

@ -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);