+ act->data.any.c = client;
+
+ if (act->func == action_moveresize)
+ screen_pointer_pos(&act->data.moveresize.x,
+ &act->data.moveresize.y);
+
+ if (!(act->func == action_cycle_windows ||
+ act->func == action_desktop_dir ||
+ act->func == action_send_to_desktop_dir ||
+ act->func == action_showmenu))
+ {
+ act->func(&act->data);
+ }
+ }
+ }
+ }
+}
+
+void menu_frame_select_previous(ObMenuFrame *self)
+{
+ GList *it = NULL, *start;
+
+ if (self->entries) {
+ start = it = g_list_find(self->entries, self->selected);
+ while (TRUE) {
+ ObMenuEntryFrame *e;
+
+ it = it ? g_list_previous(it) : g_list_last(self->entries);
+ if (it == start)
+ break;
+
+ if (it) {
+ e = it->data;
+ if (e->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
+ break;
+ if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
+ e->entry->data.normal.enabled)
+ break;
+ }
+ }
+ }
+ menu_frame_select(self, it ? it->data : NULL);
+}
+
+void menu_frame_select_next(ObMenuFrame *self)
+{
+ GList *it = NULL, *start;
+
+ if (self->entries) {
+ start = it = g_list_find(self->entries, self->selected);
+ while (TRUE) {
+ ObMenuEntryFrame *e;
+
+ it = it ? g_list_next(it) : self->entries;
+ if (it == start)
+ break;
+
+ if (it) {
+ e = it->data;
+ if (e->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
+ break;
+ if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
+ e->entry->data.normal.enabled)
+ break;