- case OB_KEY_UP: {
- if (over != NULL) {
- if (over->parent->mouseover)
- over->parent->mouseover(over, FALSE);
- else
- menu_control_mouseover(over, FALSE);
- menu_entry_render(over);
-
- it = g_list_last(over->parent->entries);
- while (it != NULL && it->data != over)
- it = it->prev;
- }
-
- if (it && it->prev)
- over = (ObMenuEntry *)it->prev->data;
- else if (over == NULL) {
- it = g_list_last(menu_visible);
- if (it != NULL) {
- it = g_list_last(((ObMenu *)it->data)->entries);
- over = (ObMenuEntry *)(it != NULL ? it->data : NULL);
- }
- } else
- over = (over->parent->entries != NULL ?
- g_list_last(over->parent->entries)->data :
- NULL);
-
- if (over->parent->mouseover)
- over->parent->mouseover(over, TRUE);
- else
- menu_control_mouseover(over, TRUE);
- menu_entry_render(over);
- break;
- }
- case OB_KEY_RETURN: {
- if (over == NULL)
- return over;
-
- if (over->submenu) {
- if (over->parent->mouseover)
- over->parent->mouseover(over, FALSE);
- else
- menu_control_mouseover(over, FALSE);
- menu_entry_render(over);
-
- if (over->submenu->entries)
- over = over->submenu->entries->data;
-
- if (over->parent->mouseover)
- over->parent->mouseover(over, TRUE);
- else
- menu_control_mouseover(over, TRUE);
- menu_entry_render(over);
- }
- else {
- if (over->parent->mouseover)
- over->parent->mouseover(over, FALSE);
- else
- menu_control_mouseover(over, FALSE);
- menu_entry_render(over);
-
- menu_entry_fire(over);
- }
+}
+
+void menu_entry_set_label(ObMenuEntry *self, const gchar *label,
+ gboolean allow_shortcut)
+{
+ switch (self->type) {
+ case OB_MENU_ENTRY_TYPE_SEPARATOR:
+ g_free(self->data.separator.label);
+ self->data.separator.label = g_strdup(label);