aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan Djärv2004-12-27 15:24:12 +0000
committerJan Djärv2004-12-27 15:24:12 +0000
commit9f6fcdc51615be98d2a026c302868061045176ec (patch)
tree6eb484c1f70ce413f20d979a3adec8b5f6bcaa63 /src
parente89f4e4bd8bb43ecd709695deeb1957a5b39fcb6 (diff)
downloademacs-9f6fcdc51615be98d2a026c302868061045176ec.tar.gz
emacs-9f6fcdc51615be98d2a026c302868061045176ec.zip
* xmenu.c (popup_get_selection): Pop down on C-g.
(set_frame_menubar): Install translations for Lucid/Motif/Lesstif that pops down menu on C-g. (xdialog_show): If dialog popped down and no button in the dialog was pushed, call Fsignal to quit. (xmenu_show): In no toolkit version, if menu returns NO_SELECT call Fsignal to quit. * xfns.c (Fx_file_dialog): Motif/Lesstif version: Pop down on C-g. * gtkutil.c (xg_initialize): Install bindings for C-g so that dialogs and menus pop down.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog15
-rw-r--r--src/gtkutil.c13
-rw-r--r--src/xfns.c10
-rw-r--r--src/xmenu.c20
4 files changed, 58 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 5593e98906d..d93105c4f06 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,18 @@
12004-12-27 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2
3 * xmenu.c (popup_get_selection): Pop down on C-g.
4 (set_frame_menubar): Install translations for Lucid/Motif/Lesstif that
5 pops down menu on C-g.
6 (xdialog_show): If dialog popped down and no button in the dialog was
7 pushed, call Fsignal to quit.
8 (xmenu_show): In no toolkit version, if menu returns NO_SELECT call
9 Fsignal to quit.
10
11 * xfns.c (Fx_file_dialog): Motif/Lesstif version: Pop down on C-g.
12
13 * gtkutil.c (xg_initialize): Install bindings for C-g so that
14 dialogs and menus pop down.
15
12004-12-25 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 162004-12-25 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2 17
3 * gtkutil.c (update_frame_tool_bar): Make the value of 18 * gtkutil.c (update_frame_tool_bar): Make the value of
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 5d2b9becb9d..22919230a65 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -3578,6 +3578,8 @@ free_frame_tool_bar (f)
3578void 3578void
3579xg_initialize () 3579xg_initialize ()
3580{ 3580{
3581 GtkBindingSet *binding_set;
3582
3581 xg_ignore_gtk_scrollbar = 0; 3583 xg_ignore_gtk_scrollbar = 0;
3582 xg_detached_menus = 0; 3584 xg_detached_menus = 0;
3583 xg_menu_cb_list.prev = xg_menu_cb_list.next = 3585 xg_menu_cb_list.prev = xg_menu_cb_list.next =
@@ -3600,6 +3602,17 @@ xg_initialize ()
3600 "gtk-key-theme-name", 3602 "gtk-key-theme-name",
3601 "Emacs", 3603 "Emacs",
3602 EMACS_CLASS); 3604 EMACS_CLASS);
3605
3606 /* Make dialogs close on C-g. Since file dialog inherits from
3607 dialog, this works for them also. */
3608 binding_set = gtk_binding_set_by_class (gtk_type_class (GTK_TYPE_DIALOG));
3609 gtk_binding_entry_add_signal (binding_set, GDK_g, GDK_CONTROL_MASK,
3610 "close", 0);
3611
3612 /* Make menus close on C-g. */
3613 binding_set = gtk_binding_set_by_class (gtk_type_class (GTK_TYPE_MENU_SHELL));
3614 gtk_binding_entry_add_signal (binding_set, GDK_g, GDK_CONTROL_MASK,
3615 "cancel", 0);
3603} 3616}
3604 3617
3605#endif /* USE_GTK */ 3618#endif /* USE_GTK */
diff --git a/src/xfns.c b/src/xfns.c
index aa66c017f3c..9ee459680aa 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -5243,6 +5243,16 @@ or directory must exist. ONLY-DIR-P is ignored." */)
5243 XEvent event; 5243 XEvent event;
5244 x_menu_wait_for_event (0); 5244 x_menu_wait_for_event (0);
5245 XtAppNextEvent (Xt_app_con, &event); 5245 XtAppNextEvent (Xt_app_con, &event);
5246 if (event.type == KeyPress
5247 && FRAME_X_DISPLAY (f) == event.xkey.display)
5248 {
5249 KeySym keysym = XLookupKeysym (&event.xkey, 0);
5250
5251 /* Pop down on C-g. */
5252 if (keysym == XK_g && (event.xkey.state & ControlMask) != 0)
5253 XtUnmanageChild (dialog);
5254 }
5255
5246 (void) x_dispatch_event (&event, FRAME_X_DISPLAY (f)); 5256 (void) x_dispatch_event (&event, FRAME_X_DISPLAY (f));
5247 } 5257 }
5248 5258
diff --git a/src/xmenu.c b/src/xmenu.c
index ff012634b50..b20147417be 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -1243,6 +1243,11 @@ popup_get_selection (initial_event, dpyinfo, id, do_timers, down_on_keypress)
1243 && dpyinfo->display == event.xbutton.display) 1243 && dpyinfo->display == event.xbutton.display)
1244 { 1244 {
1245 KeySym keysym = XLookupKeysym (&event.xkey, 0); 1245 KeySym keysym = XLookupKeysym (&event.xkey, 0);
1246
1247 /* Pop down on C-g. */
1248 if (keysym == XK_g && (event.xkey.state & ControlMask) != 0)
1249 popup_activated_flag = 0;
1250
1246 if (!IsModifierKey (keysym) 1251 if (!IsModifierKey (keysym)
1247 && x_any_window_to_frame (dpyinfo, event.xany.window) != NULL) 1252 && x_any_window_to_frame (dpyinfo, event.xany.window) != NULL)
1248 popup_activated_flag = 0; 1253 popup_activated_flag = 0;
@@ -2226,6 +2231,9 @@ set_frame_menubar (f, first_time, deep_p)
2226 } 2231 }
2227 else 2232 else
2228 { 2233 {
2234 char menuOverride[] = "Ctrl<KeyPress>g: MenuGadgetEscape()";
2235 XtTranslations override = XtParseTranslationTable (menuOverride);
2236
2229 menubar_widget = lw_create_widget ("menubar", "menubar", id, first_wv, 2237 menubar_widget = lw_create_widget ("menubar", "menubar", id, first_wv,
2230 f->output_data.x->column_widget, 2238 f->output_data.x->column_widget,
2231 0, 2239 0,
@@ -2234,6 +2242,9 @@ set_frame_menubar (f, first_time, deep_p)
2234 popup_deactivate_callback, 2242 popup_deactivate_callback,
2235 menu_highlight_callback); 2243 menu_highlight_callback);
2236 f->output_data.x->menubar_widget = menubar_widget; 2244 f->output_data.x->menubar_widget = menubar_widget;
2245
2246 /* Make menu pop down on C-g. */
2247 XtOverrideTranslations (menubar_widget, override);
2237 } 2248 }
2238 2249
2239 { 2250 {
@@ -3155,6 +3166,9 @@ xdialog_show (f, keymaps, title, error)
3155 } 3166 }
3156 } 3167 }
3157 } 3168 }
3169 else
3170 /* Make "Cancel" equivalent to C-g. */
3171 Fsignal (Qquit, Qnil);
3158 3172
3159 return Qnil; 3173 return Qnil;
3160} 3174}
@@ -3500,7 +3514,13 @@ xmenu_show (f, x, y, for_click, keymaps, title, error)
3500 case XM_FAILURE: 3514 case XM_FAILURE:
3501 *error = "Can't activate menu"; 3515 *error = "Can't activate menu";
3502 case XM_IA_SELECT: 3516 case XM_IA_SELECT:
3517 entry = Qnil;
3518 break;
3503 case XM_NO_SELECT: 3519 case XM_NO_SELECT:
3520 /* Make "Cancel" equivalent to C-g unless this menu was popped up by
3521 a mouse press. */
3522 if (! for_click)
3523 Fsignal (Qquit, Qnil);
3504 entry = Qnil; 3524 entry = Qnil;
3505 break; 3525 break;
3506 } 3526 }