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,
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);
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))