#include "common/log.h"
#include "common/spawn.h"
#include "labwc.h"
+#include "menu/menu.h"
+
+static void
+show_menu(struct server *server, const char *menu)
+{
+ if (!menu) {
+ return;
+ }
+ if (!strcasecmp(menu, "root-menu")) {
+ server->input_mode = LAB_INPUT_STATE_MENU;
+ menu_move(server->rootmenu, server->seat.cursor->x,
+ server->seat.cursor->y);
+ }
+}
void
action(struct server *server, const char *action, const char *command)
{
if (!action)
return;
- if (!strcasecmp(action, "Exit")) {
- wl_display_terminate(server->wl_display);
+ if (!strcasecmp(action, "Debug")) {
+ /* nothing */
} else if (!strcasecmp(action, "Execute")) {
spawn_async_no_shell(command);
+ } else if (!strcasecmp(action, "Exit")) {
+ wl_display_terminate(server->wl_display);
} else if (!strcasecmp(action, "NextWindow")) {
server->cycle_view =
desktop_cycle_view(server, server->cycle_view);
} else if (!strcasecmp(action, "Reconfigure")) {
spawn_async_no_shell("killall -SIGHUP labwc");
- } else if (!strcasecmp(action, "Debug")) {
- dbg_show_views(server);
+ } else if (!strcasecmp(action, "ShowMenu")) {
+ show_menu(server, command);
} else {
warn("action (%s) not supported", action);
}
current_keybind->action = strdup(content);
} else if (!strcmp(nodename, "command.action")) {
current_keybind->command = strdup(content);
+ } else if (!strcmp(nodename, "menu.action")) {
+ current_keybind->command = strdup(content);
}
}
/* handle _press_ on desktop */
if (!view) {
/* launch root-menu */
- server->input_mode = LAB_INPUT_STATE_MENU;
- menu_move(server->rootmenu, server->seat.cursor->x,
- server->seat.cursor->y);
+ action(server, "ShowMenu", "root-menu");
return;
}
-
/* Handle _press_ on view */
desktop_focus_view(&server->seat, view);
switch (view_area) {