- GSList *it;
-
- for (it = self->entry->data.normal.actions; it;
- it = g_slist_next(it))
- {
- ObAction *act = it->data;
- act->data.any.c = self->frame->client;
- act->func(&act->data);
- }
+ /* grab all this shizzle, cuz when the menu gets hidden, 'self'
+ gets freed */
+ ObMenuEntry *entry = self->entry;
+ ObMenuExecuteFunc func = self->frame->menu->execute_func;
+ gpointer data = self->frame->menu->data;
+ GSList *acts = self->entry->data.normal.actions;
+
+ /* release grabs before executing the shit */