+void
+Keyboard::reset_relevant_modifier_key_mask ()
+{
+ RelevantModifierKeyMask = (GdkModifierType) gtk_accelerator_get_default_mod_mask ();
+
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | PrimaryModifier);
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | SecondaryModifier);
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | TertiaryModifier);
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | Level4Modifier);
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | CopyModifier);
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | RangeSelectModifier);
+
+ gtk_accelerator_set_default_mod_mask (RelevantModifierKeyMask);
+
+ RelevantModifierKeysChanged(); /* EMIT SIGNAL */
+}
+
+void
+Keyboard::close_current_dialog ()
+{
+ if (current_window) {
+ current_window->hide ();
+ current_window = 0;
+
+ if (pre_dialog_active_window) {
+ pre_dialog_active_window->present ();
+ pre_dialog_active_window = 0;
+ }
+ }
+}
+
+bool
+Keyboard::catch_user_event_for_pre_dialog_focus (GdkEvent* ev, Gtk::Window* w)
+{
+ switch (ev->type) {
+ case GDK_BUTTON_PRESS:
+ case GDK_BUTTON_RELEASE:
+ case GDK_KEY_PRESS:
+ case GDK_KEY_RELEASE:
+ pre_dialog_active_window = w;
+ break;
+
+ case GDK_FOCUS_CHANGE:
+ if (ev->focus_change.in) {
+ pre_dialog_active_window = w;
+ }
+ break;
+
+ default:
+ break;
+ }
+ return false;
+}
+