99
99
SetQuirk(Quirk::VISIBLE, (WindowManager::Default().WorkspaceCount() > 1));
102
AbstractLauncherIcon::MenuItemsVector ExpoLauncherIcon::GetMenus()
104
MenuItemsVector result;
105
glib::Object<DbusmenuMenuitem> menu_item;
106
typedef glib::Signal<void, DbusmenuMenuitem*, int> ItemSignal;
108
auto& wm = WindowManager::Default();
109
int h_size = wm.GetViewportHSize();
110
int v_size = wm.GetViewportVSize();
111
auto const& current_vp = wm.GetCurrentViewport();
113
for (int h = 0; h < h_size; ++h)
115
for (int v = 0; v < v_size; ++v)
117
menu_item = dbusmenu_menuitem_new();
118
glib::String label((v_size < 2) ? g_strdup_printf(_("Workspace %d"), (h+1)) :
119
g_strdup_printf(_("Workspace %dx%d"), (h+1), (v+1)));
120
dbusmenu_menuitem_property_set(menu_item, DBUSMENU_MENUITEM_PROP_LABEL, label);
121
dbusmenu_menuitem_property_set_bool(menu_item, DBUSMENU_MENUITEM_PROP_ENABLED, true);
122
dbusmenu_menuitem_property_set_bool(menu_item, DBUSMENU_MENUITEM_PROP_VISIBLE, true);
124
if (current_vp.x == h && current_vp.y == v)
126
dbusmenu_menuitem_property_set(menu_item, DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, DBUSMENU_MENUITEM_TOGGLE_RADIO);
127
dbusmenu_menuitem_property_set_int(menu_item, DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED);
130
signals_.Add(new ItemSignal(menu_item, DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, [h, v] (DbusmenuMenuitem*, int) {
131
WindowManager::Default().SetCurrentViewport({h, v});
133
result.push_back(menu_item);
102
140
std::string ExpoLauncherIcon::GetName() const
104
142
return "ExpoLauncherIcon";