X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fprompt.c;h=77398c5fa7ba01c006e28d97fdaa081ab934dcfc;hb=4eb9a0c59efb6bfd598e35fe692e6b4b994e499c;hp=9fd56773a726ee3d04205f1fae0498bede663e09;hpb=41dbce908a981214d2d61e813c17d9415f938d87;p=chaz%2Fopenbox diff --git a/openbox/prompt.c b/openbox/prompt.c index 9fd56773..77398c5f 100644 --- a/openbox/prompt.c +++ b/openbox/prompt.c @@ -152,7 +152,7 @@ ObPrompt* prompt_new(const gchar *msg, const gchar *title, attrib.override_redirect = FALSE; - self = g_new0(ObPrompt, 1); + self = g_slice_new0(ObPrompt); self->ref = 1; self->func = func; self->cleanup = cleanup; @@ -250,7 +250,7 @@ void prompt_unref(ObPrompt *self) XDestroyWindow(obt_display, self->msg.window); XDestroyWindow(obt_display, self->super.window); - g_free(self); + g_slice_free(ObPrompt, self); } } @@ -269,9 +269,8 @@ static void prompt_layout(ObPrompt *self) b += OUTSIDE_MARGIN; { - Rect *area = screen_physical_area_all_monitors(); + const Rect *area = screen_physical_area_all_monitors(); maxw = MIN(MAX_WIDTH, area->width*4/5); - g_free(area); } /* find the button sizes and how much space we need for them */ @@ -463,7 +462,7 @@ void prompt_show(ObPrompt *self, ObClient *parent, gboolean modal) /* activate the prompt */ OBT_PROP_MSG(ob_screen, self->super.window, NET_ACTIVE_WINDOW, 1, /* from an application.. */ - event_curtime, + event_time(), 0, 0, 0); return; @@ -525,6 +524,7 @@ gboolean prompt_key_event(ObPrompt *self, XEvent *e) { gboolean shift; guint shift_mask, mods; + KeySym sym; if (e->type != KeyPress) return FALSE; @@ -536,23 +536,18 @@ gboolean prompt_key_event(ObPrompt *self, XEvent *e) if (mods != 0 && mods != shift_mask) return FALSE; - if (ob_keycode_match(e->xkey.keycode, OB_KEY_ESCAPE)) + sym = obt_keyboard_keypress_to_keysym(e); + + if (sym == XK_Escape) prompt_cancel(self); - else if (ob_keycode_match(e->xkey.keycode, OB_KEY_RETURN) || - ob_keycode_match(e->xkey.keycode, OB_KEY_SPACE)) - { + else if (sym == XK_Return || sym == XK_KP_Enter || sym == XK_space) prompt_run_callback(self, self->focus->result); - } - else if (ob_keycode_match(e->xkey.keycode, OB_KEY_TAB) || - ob_keycode_match(e->xkey.keycode, OB_KEY_LEFT) || - ob_keycode_match(e->xkey.keycode, OB_KEY_RIGHT)) - { + else if (sym == XK_Tab || sym == XK_Left || sym == XK_Right) { gint i; gboolean left; ObPromptElement *oldfocus; - left = ob_keycode_match(e->xkey.keycode, OB_KEY_LEFT) || - (ob_keycode_match(e->xkey.keycode, OB_KEY_TAB) && shift); + left = (sym == XK_Left) || ((sym == XK_Tab) && shift); oldfocus = self->focus; for (i = 0; i < self->n_buttons; ++i)