diff options
| author | Jan Djärv | 2004-12-27 15:24:12 +0000 |
|---|---|---|
| committer | Jan Djärv | 2004-12-27 15:24:12 +0000 |
| commit | 9f6fcdc51615be98d2a026c302868061045176ec (patch) | |
| tree | 6eb484c1f70ce413f20d979a3adec8b5f6bcaa63 /src | |
| parent | e89f4e4bd8bb43ecd709695deeb1957a5b39fcb6 (diff) | |
| download | emacs-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/ChangeLog | 15 | ||||
| -rw-r--r-- | src/gtkutil.c | 13 | ||||
| -rw-r--r-- | src/xfns.c | 10 | ||||
| -rw-r--r-- | src/xmenu.c | 20 |
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 @@ | |||
| 1 | 2004-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 | |||
| 1 | 2004-12-25 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | 16 | 2004-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) | |||
| 3578 | void | 3578 | void |
| 3579 | xg_initialize () | 3579 | xg_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 | } |