* src/xdisp.c (pending_menu_activation): Remove extern declaration.
(prepare_menu_bars): Remove setting of pending_menu_activation.
* src/xmenu.c (pending_menu_activation): Remove.
(x_activate_menubar): Set popup_activated_flag for Xt also. Remove
setting of pending_menu_activation.
(set_frame_menubar): Remove check of pending_menu_activation.
Declare menubar_size before code. Correct spelling in comment.
* src/xterm.c (xm_scroll_callback, x_process_timeouts): K&R => prototype.
(SET_SAVED_KEY_EVENT): Remove (not used).
(SET_SAVED_MENU_EVENT): Rename to SET_SAVED_BUTTON_EVENT and
remove size parameter.
(handle_one_xevent): Check popup_activated () for menu for Xt also.
Remove #ifdef USE_GTK around finish = X_EVENT_DROP.
Remove #ifdef USE_MOTIF code that did SET_SAVED_BUTTON_EVENT for
ButtonRelease.
+2010-07-14 Jan Djärv <jan.h.d@swipnet.se>
+
+ * xterm.c (xm_scroll_callback, x_process_timeouts): K&R => prototype.
+ (SET_SAVED_KEY_EVENT): Remove (not used).
+ (SET_SAVED_MENU_EVENT): Rename to SET_SAVED_BUTTON_EVENT and
+ remove size parameter.
+ (handle_one_xevent): Check popup_activated () for menu for Xt also.
+ Remove #ifdef USE_GTK around finish = X_EVENT_DROP.
+ Remove #ifdef USE_MOTIF code that did SET_SAVED_BUTTON_EVENT for
+ ButtonRelease.
+
+ * xdisp.c (pending_menu_activation): Remove extern declaration.
+ (prepare_menu_bars): Remove setting of pending_menu_activation.
+
+ * xmenu.c (pending_menu_activation): Remove.
+ (x_activate_menubar): Set popup_activated_flag for Xt also. Remove
+ setting of pending_menu_activation.
+ (set_frame_menubar): Remove check of pending_menu_activation.
+ Declare menubar_size before code. Correct spelling in comment.
+
2010-07-14 Kenichi Handa <handa@m17n.org>
* font.c (font_open_entity): Cancel previous change.
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \
|| defined(HAVE_NS) || defined (USE_GTK)
extern void set_frame_menubar (struct frame *f, int, int);
-extern int pending_menu_activation;
#endif
extern int interrupt_input;
update_tool_bar (sf, 1);
#endif
}
-
- /* Motif needs this. See comment in xmenu.c. Turn it off when
- pending_menu_activation is not defined. */
-#ifdef USE_X_TOOLKIT
- pending_menu_activation = 0;
-#endif
}
extern widget_value *digest_single_submenu (int, int, int);
#endif
-/* This is set nonzero after the user activates the menu bar, and set
- to zero again after the menu bars are redisplayed by prepare_menu_bar.
- While it is nonzero, all calls to set_frame_menubar go deep.
-
- I don't understand why this is needed, but it does seem to be
- needed on Motif, according to Marcus Daniels <marcus@sysc.pdx.edu>. */
-
-int pending_menu_activation;
\f
#ifdef USE_X_TOOLKIT
set_frame_menubar (f, 0, 1);
BLOCK_INPUT;
+ popup_activated_flag = 1;
#ifdef USE_GTK
/* If we click outside any menu item, the menu bar still grabs.
So we send Press and the Release. If outside, grab is released.
f->output_data.x->saved_menu_event->type = ButtonPress;
XPutBackEvent (f->output_data.x->display_info->display,
f->output_data.x->saved_menu_event);
- popup_activated_flag = 1;
#else
XtDispatchEvent (f->output_data.x->saved_menu_event);
#endif
UNBLOCK_INPUT;
-#ifdef USE_MOTIF
- if (f->output_data.x->saved_menu_event->type == ButtonRelease)
- pending_menu_activation = 1;
-#endif
/* Ignore this if we get it a second time. */
f->output_data.x->saved_menu_event->type = 0;
if (! menubar_widget)
deep_p = 1;
- else if (pending_menu_activation && !deep_p)
- deep_p = 1;
/* Make the first call for any given frame always go deep. */
else if (!f->output_data.x->saved_menu_event && !deep_p)
{
}
{
+ int menubar_size;
if (f->output_data.x->menubar_widget)
XtRealizeWidget (f->output_data.x->menubar_widget);
- int menubar_size
+ menubar_size
= (f->output_data.x->menubar_widget
? (f->output_data.x->menubar_widget->core.height
+ f->output_data.x->menubar_widget->core.border_width)
#if 1 /* Experimentally, we now get the right results
for -geometry -0-0 without this. 24 Aug 96, rms.
Maybe so, but the menu bar size is missing the pixels so the
- WM size hints are off by theses pixel. Jan D, oct 2009. */
+ WM size hints are off by these pixels. Jan D, oct 2009. */
#ifdef USE_LUCID
if (FRAME_EXTERNAL_MENU_BAR (f))
{
CALL_DATA is a pointer to a XmScrollBarCallbackStruct. */
static void
-xm_scroll_callback (widget, client_data, call_data)
- Widget widget;
- XtPointer client_data, call_data;
+xm_scroll_callback (Widget widget, XtPointer client_data, XtPointer call_data)
{
struct scroll_bar *bar = (struct scroll_bar *) client_data;
XmScrollBarCallbackStruct *cs = (XmScrollBarCallbackStruct *) call_data;
static struct x_display_info *next_noop_dpyinfo;
-#define SET_SAVED_MENU_EVENT(size) \
+#define SET_SAVED_BUTTON_EVENT \
do \
{ \
if (f->output_data.x->saved_menu_event == 0) \
f->output_data.x->saved_menu_event \
= (XEvent *) xmalloc (sizeof (XEvent)); \
- memcpy (f->output_data.x->saved_menu_event, &event, size); \
+ *f->output_data.x->saved_menu_event = event; \
inev.ie.kind = MENU_BAR_ACTIVATE_EVENT; \
XSETFRAME (inev.ie.frame_or_window, f); \
} \
while (0)
-#define SET_SAVED_BUTTON_EVENT SET_SAVED_MENU_EVENT (sizeof (XButtonEvent))
-#define SET_SAVED_KEY_EVENT SET_SAVED_MENU_EVENT (sizeof (XKeyEvent))
-
-
enum
{
X_EVENT_NORMAL,
Instead, save it away
and we will pass it to Xt from kbd_buffer_get_event.
That way, we can run some Lisp code first. */
- if (
+ if (! popup_activated ()
#ifdef USE_GTK
- ! popup_activated ()
/* Gtk+ menus only react to the first three buttons. */
&& event.xbutton.button < 3
- &&
#endif
- f && event.type == ButtonPress
+ && f && event.type == ButtonPress
/* Verify the event is really within the menu bar
and not just sent to it due to grabbing. */
&& event.xbutton.x >= 0
{
SET_SAVED_BUTTON_EVENT;
XSETFRAME (last_mouse_press_frame, f);
-#ifdef USE_GTK
*finish = X_EVENT_DROP;
-#endif
}
else if (event.type == ButtonPress)
{
last_mouse_press_frame = Qnil;
goto OTHER;
}
-
-#ifdef USE_MOTIF /* This should do not harm for Lucid,
- but I am trying to be cautious. */
- else if (event.type == ButtonRelease)
- {
- if (!NILP (last_mouse_press_frame))
- {
- f = XFRAME (last_mouse_press_frame);
- if (f->output_data.x)
- SET_SAVED_BUTTON_EVENT;
- }
- else
- goto OTHER;
- }
-#endif /* USE_MOTIF */
else
goto OTHER;
#endif /* USE_X_TOOLKIT || USE_GTK */
that slows us down. */
static void
-x_process_timeouts (timer)
- struct atimer *timer;
+x_process_timeouts (struct atimer *timer)
{
BLOCK_INPUT;
x_timeout_atimer_activated_flag = 0;