X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fprompt.c;h=9fd56773a726ee3d04205f1fae0498bede663e09;hb=41dbce908a981214d2d61e813c17d9415f938d87;hp=4f8930d7872d4261de50fce567ad8b9c0b128c80;hpb=31f0c8c1ad8c9acf369ab8336765f4bf673b8e21;p=chaz%2Fopenbox diff --git a/openbox/prompt.c b/openbox/prompt.c index 4f8930d7..9fd56773 100644 --- a/openbox/prompt.c +++ b/openbox/prompt.c @@ -166,6 +166,8 @@ ObPrompt* prompt_new(const gchar *msg, const gchar *title, CopyFromParent, CWOverrideRedirect, &attrib); + self->ic = obt_keyboard_context_new(self->super.window, + self->super.window); /* make it a dialog type window */ OBT_PROP_SET32(self->super.window, NET_WM_WINDOW_TYPE, ATOM, @@ -239,6 +241,8 @@ void prompt_unref(ObPrompt *self) prompt_list = g_list_remove(prompt_list, self); + obt_keyboard_context_unref(self->ic); + for (i = 0; i < self->n_buttons; ++i) { window_remove(self->button[i].window); XDestroyWindow(obt_display, self->button[i].window); @@ -520,15 +524,16 @@ void prompt_hide(ObPrompt *self) gboolean prompt_key_event(ObPrompt *self, XEvent *e) { gboolean shift; - guint shift_mask; + guint shift_mask, mods; if (e->type != KeyPress) return FALSE; shift_mask = obt_keyboard_modkey_to_modmask(OBT_KEYBOARD_MODKEY_SHIFT); - shift = !!(e->xkey.state & shift_mask); + mods = obt_keyboard_only_modmasks(e->xkey.state); + shift = !!(mods & shift_mask); /* only accept shift */ - if (e->xkey.state != 0 && e->xkey.state != shift_mask) + if (mods != 0 && mods != shift_mask) return FALSE; if (ob_keycode_match(e->xkey.keycode, OB_KEY_ESCAPE))