Commit 432b00e6 authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

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.
parent 0077b36e
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)
......
......@@ -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;
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);
/* 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);
}
}
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;
if (mouse_position_hook)
(*mouse_position_hook) (&new_f, 1, &bar_window,
&part, &x, &y, &time);
}
#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 (new_f != 0)
XSETFRAME (window, new_f);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment