X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fmenuframe.c;h=2010bf8fe4289b799ff96c3d422d41ee92c4245d;hb=a3b4b4aa1ac0e8c16855e3070a20b74e01d0d000;hp=fa9e8e9d9ab1ab59e1c93a9670f2615c663232e2;hpb=6a79805b7c4116ee6ced87e78fb488f3274098ef;p=chaz%2Fopenbox diff --git a/openbox/menuframe.c b/openbox/menuframe.c index fa9e8e9d..2010bf8f 100644 --- a/openbox/menuframe.c +++ b/openbox/menuframe.c @@ -21,6 +21,7 @@ #include "client.h" #include "menu.h" #include "screen.h" +#include "actions.h" #include "grab.h" #include "openbox.h" #include "mainloop.h" @@ -343,6 +344,8 @@ void menu_frame_move_on_screen(ObMenuFrame *self, gint x, gint y, *dx = MAX(*dx, a->x - x); *dy = MAX(*dy, a->y - y); } + + g_free(a); } static void menu_entry_frame_render(ObMenuEntryFrame *self) @@ -398,6 +401,7 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self) text_a->texture[0].data.text.string = self->entry->data.normal.label; if (self->entry->data.normal.shortcut && (self->frame->menu->show_all_shortcuts || + self->entry->data.normal.shortcut_always_show || self->entry->data.normal.shortcut_position > 0)) { text_a->texture[0].data.text.shortcut = TRUE; @@ -413,6 +417,7 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self) sub = self->entry->data.submenu.submenu; text_a->texture[0].data.text.string = sub ? sub->title : ""; if (sub->shortcut && (self->frame->menu->show_all_shortcuts || + sub->shortcut_always_show || sub->shortcut_position > 0)) { text_a->texture[0].data.text.shortcut = TRUE; @@ -731,7 +736,7 @@ void menu_frame_render(ObMenuFrame *self) if (e->entry->data.separator.label != NULL) { e->a_text_title->texture[0].data.text.string = e->entry->data.separator.label; - tw = RrMinWidth(e->a_text_title); + tw = RrMinWidth(e->a_text_title) + 2*ob_rr_theme->paddingx; tw = MIN(tw, MAX_MENU_WIDTH); th = ob_rr_theme->menu_title_height + (ob_rr_theme->mbwidth - PADDING) *2; @@ -888,6 +893,8 @@ static void menu_frame_update(ObMenuFrame *self) } } + g_free(a); + menu_frame_render(self); } @@ -936,7 +943,7 @@ static gboolean menu_frame_show(ObMenuFrame *self) } gboolean menu_frame_show_topmenu(ObMenuFrame *self, gint x, gint y, - gint button) + gboolean mouse) { gint px, py; guint i; @@ -949,14 +956,16 @@ gboolean menu_frame_show_topmenu(ObMenuFrame *self, gint x, gint y, /* find the monitor the menu is on */ for (i = 0; i < screen_num_monitors; ++i) { Rect *a = screen_physical_area_monitor(i); - if (RECT_CONTAINS(*a, x, y)) { + gboolean contains = RECT_CONTAINS(*a, x, y); + g_free(a); + if (contains) { self->monitor = i; break; } } if (self->menu->place_func) - self->menu->place_func(self, &x, &y, button, self->menu->data); + self->menu->place_func(self, &x, &y, mouse, self->menu->data); else menu_frame_place_topmenu(self, &x, &y); @@ -1058,8 +1067,6 @@ void menu_frame_hide_all() } if ((it = g_list_last(menu_frame_visible))) menu_frame_hide(it->data); - - menu_clear_pipe_caches(); } void menu_frame_hide_all_client(ObClient *client) @@ -1070,8 +1077,6 @@ void menu_frame_hide_all_client(ObClient *client) if (f->client == client) menu_frame_hide(f); } - - menu_clear_pipe_caches(); } @@ -1176,7 +1181,7 @@ void menu_entry_frame_show_submenu(ObMenuEntryFrame *self) menu_frame_show_submenu(f, self->frame, self); } -void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state, Time time) +void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state) { if (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL && self->entry->data.normal.enabled) @@ -1197,9 +1202,10 @@ void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state, Time time) } if (func) - func(entry, frame, client, state, data, time); + func(entry, frame, client, state, data); else - action_run(acts, client, state, time); + actions_run_acts(acts, OB_USER_ACTION_MENU_SELECTION, + state, -1, -1, 0, OB_FRAME_CONTEXT_NONE, client); } }