diff options
author | Jan D <[email protected]> | 2010-07-14 16:32:25 +0200 |
---|---|---|
committer | Jan D <[email protected]> | 2010-07-14 16:32:25 +0200 |
commit | cf28cebc2e93dbd2cd0e6eb2f1a9543a015a1235 (patch) | |
tree | f342da6952fb8e6e523fff9ef43f26fa2a641088 /src | |
parent | ebd3d6afa42948e3fb136583f12f9f72e7830ec5 (diff) |
Fix menu bar activation with click for Motif/Lesstif.
* 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.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 20 | ||||
-rw-r--r-- | src/xdisp.c | 7 | ||||
-rw-r--r-- | src/xmenu.c | 21 | ||||
-rw-r--r-- | src/xterm.c | 38 |
4 files changed, 30 insertions, 56 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 923ba3afaf..6ca09f99fe 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,23 @@ +2010-07-14 Jan Djärv <[email protected]> + + * 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 <[email protected]> * font.c (font_open_entity): Cancel previous change. diff --git a/src/xdisp.c b/src/xdisp.c index 3464efd643..53fba8caa9 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -271,7 +271,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #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; @@ -9866,12 +9865,6 @@ prepare_menu_bars (void) 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 } diff --git a/src/xmenu.c b/src/xmenu.c index b0bdbcfeca..4b99297e77 100644 --- a/src/xmenu.c +++ b/src/xmenu.c @@ -151,14 +151,6 @@ extern widget_value *xmalloc_widget_value (void); 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 <[email protected]>. */ - -int pending_menu_activation; #ifdef USE_X_TOOLKIT @@ -670,6 +662,7 @@ x_activate_menubar (FRAME_PTR f) 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. @@ -681,15 +674,10 @@ x_activate_menubar (FRAME_PTR f) 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; @@ -991,8 +979,6 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p) 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) { @@ -1274,10 +1260,11 @@ set_frame_menubar (FRAME_PTR f, int first_time, int 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) @@ -1286,7 +1273,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p) #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)) { diff --git a/src/xterm.c b/src/xterm.c index 2f581d9f59..e66845df26 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -4159,9 +4159,7 @@ x_scroll_bar_to_input_event (XEvent *event, struct input_event *ievent) 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; @@ -5546,22 +5544,18 @@ struct x_display_info *XTread_socket_fake_io_error; 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, @@ -6755,14 +6749,12 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventp, int *finish, 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 @@ -6773,30 +6765,13 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventp, int *finish, { 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 */ @@ -10336,8 +10311,7 @@ x_delete_display (struct x_display_info *dpyinfo) 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; |