aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/IconMenu.cc4
-rw-r--r--src/MenuCreator.cc4
-rw-r--r--src/WorkspaceCmd.cc2
-rw-r--r--src/WorkspaceMenu.cc29
4 files changed, 27 insertions, 12 deletions
diff --git a/src/IconMenu.cc b/src/IconMenu.cc
index 195f79b..6fbe0a6 100644
--- a/src/IconMenu.cc
+++ b/src/IconMenu.cc
@@ -32,8 +32,8 @@
32 32
33static void updateItems(FbTk::Menu &menu, BScreen &screen) { 33static void updateItems(FbTk::Menu &menu, BScreen &screen) {
34 menu.removeAll(); 34 menu.removeAll();
35 BScreen::Icons::iterator it = screen.getIconList().begin(); 35 BScreen::Icons::iterator it = screen.iconList().begin();
36 BScreen::Icons::iterator it_end = screen.getIconList().end(); 36 BScreen::Icons::iterator it_end = screen.iconList().end();
37 for (; it != it_end; ++it) { 37 for (; it != it_end; ++it) {
38 FluxboxWindow::ClientList::iterator client_it = (*it)->clientList().begin(); 38 FluxboxWindow::ClientList::iterator client_it = (*it)->clientList().begin();
39 FluxboxWindow::ClientList::iterator client_it_end = (*it)->clientList().end(); 39 FluxboxWindow::ClientList::iterator client_it_end = (*it)->clientList().end();
diff --git a/src/MenuCreator.cc b/src/MenuCreator.cc
index 0bbd14f..cb1f33c 100644
--- a/src/MenuCreator.cc
+++ b/src/MenuCreator.cc
@@ -290,8 +290,8 @@ static void translateMenuItem(Parser &parse, ParseItem &pitem) {
290 else if (str_key == "workspaces") { 290 else if (str_key == "workspaces") {
291 BScreen *screen = Fluxbox::instance()->findScreen(screen_number); 291 BScreen *screen = Fluxbox::instance()->findScreen(screen_number);
292 if (screen != 0) { 292 if (screen != 0) {
293 screen->getWorkspacemenu().setInternalMenu(); 293 screen->workspaceMenu().setInternalMenu();
294 menu.insert(str_label.c_str(), &screen->getWorkspacemenu()); 294 menu.insert(str_label.c_str(), &screen->workspaceMenu());
295 } 295 }
296 } else if (str_key == "separator") { 296 } else if (str_key == "separator") {
297 menu.insert(new FbTk::MenuSeparator()); 297 menu.insert(new FbTk::MenuSeparator());
diff --git a/src/WorkspaceCmd.cc b/src/WorkspaceCmd.cc
index 08473df..eba4616 100644
--- a/src/WorkspaceCmd.cc
+++ b/src/WorkspaceCmd.cc
@@ -127,7 +127,7 @@ JumpToWorkspaceCmd::JumpToWorkspaceCmd(int workspace_num):m_workspace_num(worksp
127 127
128void JumpToWorkspaceCmd::execute() { 128void JumpToWorkspaceCmd::execute() {
129 BScreen *screen = Fluxbox::instance()->mouseScreen(); 129 BScreen *screen = Fluxbox::instance()->mouseScreen();
130 if (screen != 0 && m_workspace_num >= 0 && m_workspace_num < screen->getNumberOfWorkspaces()) 130 if (screen != 0)
131 screen->changeWorkspaceID(m_workspace_num); 131 screen->changeWorkspaceID(m_workspace_num);
132} 132}
133 133
diff --git a/src/WorkspaceMenu.cc b/src/WorkspaceMenu.cc
index 8642cc2..bb8ae4b 100644
--- a/src/WorkspaceMenu.cc
+++ b/src/WorkspaceMenu.cc
@@ -29,9 +29,11 @@
29#include "WorkspaceCmd.hh" 29#include "WorkspaceCmd.hh"
30#include "MenuCreator.hh" 30#include "MenuCreator.hh"
31#include "CommandParser.hh" 31#include "CommandParser.hh"
32#include "FbCommands.hh"
32 33
33#include "FbTk/I18n.hh" 34#include "FbTk/I18n.hh"
34#include "FbTk/SimpleCommand.hh" 35#include "FbTk/SimpleCommand.hh"
36#include "FbTk/MacroCommand.hh"
35#include "FbTk/RefCount.hh" 37#include "FbTk/RefCount.hh"
36#include "FbTk/MenuItem.hh" 38#include "FbTk/MenuItem.hh"
37#include "FbTk/MenuSeparator.hh" 39#include "FbTk/MenuSeparator.hh"
@@ -71,7 +73,7 @@ void WorkspaceMenu::update(FbTk::Subject *subj) {
71 BScreen &screen = screen_subj.screen(); 73 BScreen &screen = screen_subj.screen();
72 if (subj == &screen.currentWorkspaceSig()) { 74 if (subj == &screen.currentWorkspaceSig()) {
73 FbTk::MenuItem *item = 0; 75 FbTk::MenuItem *item = 0;
74 for (unsigned int i = 0; i < screen.getCount(); ++i) { 76 for (unsigned int i = 0; i < screen.numberOfWorkspaces(); ++i) {
75 item = find(i + IDX_AFTER_ICONS); 77 item = find(i + IDX_AFTER_ICONS);
76 if (item && item->isSelected()) { 78 if (item && item->isSelected()) {
77 setItemSelected(i + IDX_AFTER_ICONS, false); 79 setItemSelected(i + IDX_AFTER_ICONS, false);
@@ -88,7 +90,7 @@ void WorkspaceMenu::update(FbTk::Subject *subj) {
88 } 90 }
89 // for each workspace add workspace name and it's menu 91 // for each workspace add workspace name and it's menu
90 // to our workspace menu 92 // to our workspace menu
91 for (size_t workspace = 0; workspace < screen.getCount(); 93 for (size_t workspace = 0; workspace < screen.numberOfWorkspaces();
92 ++workspace) { 94 ++workspace) {
93 Workspace *wkspc = screen.getWorkspace(workspace); 95 Workspace *wkspc = screen.getWorkspace(workspace);
94 wkspc->menu().setInternalMenu(); 96 wkspc->menu().setInternalMenu();
@@ -121,7 +123,7 @@ void WorkspaceMenu::init(BScreen &screen) {
121 MenuCreator::createMenuType("iconmenu", screen.screenNumber())); 123 MenuCreator::createMenuType("iconmenu", screen.screenNumber()));
122 insert(new FbTk::MenuSeparator()); 124 insert(new FbTk::MenuSeparator());
123 // for each workspace add workspace name and it's menu to our workspace menu 125 // for each workspace add workspace name and it's menu to our workspace menu
124 for (size_t workspace = 0; workspace < screen.getCount(); ++workspace) { 126 for (size_t workspace = 0; workspace < screen.numberOfWorkspaces(); ++workspace) {
125 Workspace *wkspc = screen.getWorkspace(workspace); 127 Workspace *wkspc = screen.getWorkspace(workspace);
126 wkspc->menu().setInternalMenu(); 128 wkspc->menu().setInternalMenu();
127 FbTk::MultiButtonMenuItem* mb_menu = new FbTk::MultiButtonMenuItem(5, 129 FbTk::MultiButtonMenuItem* mb_menu = new FbTk::MultiButtonMenuItem(5,
@@ -133,17 +135,30 @@ void WorkspaceMenu::init(BScreen &screen) {
133 } 135 }
134 setItemSelected(screen.currentWorkspace()->workspaceID() + IDX_AFTER_ICONS, true); 136 setItemSelected(screen.currentWorkspace()->workspaceID() + IDX_AFTER_ICONS, true);
135 137
136 RefCount<Command> new_workspace(new SimpleCommand<BScreen, int>(screen, &BScreen::addWorkspace)); 138
137 RefCount<Command> remove_last(new SimpleCommand<BScreen, int>(screen, &BScreen::removeLastWorkspace)); 139 RefCount<Command> saverc_cmd(new FbCommands::SaveResources());
140
141 MacroCommand *new_workspace_macro = new MacroCommand();
142 RefCount<Command> addworkspace(new SimpleCommand<BScreen, int>(screen, &BScreen::addWorkspace));
143 new_workspace_macro->add(addworkspace);
144 new_workspace_macro->add(saverc_cmd);
145 RefCount<Command> new_workspace_cmd(new_workspace_macro);
146
147 MacroCommand *remove_workspace_macro = new MacroCommand();
148 RefCount<Command> rmworkspace(new SimpleCommand<BScreen, int>(screen, &BScreen::removeLastWorkspace));
149 remove_workspace_macro->add(rmworkspace);
150 remove_workspace_macro->add(saverc_cmd);
151 RefCount<Command> remove_last_cmd(remove_workspace_macro);
152
138 RefCount<Command> start_edit(CommandParser::instance().parseLine("setworkspacenamedialog")); 153 RefCount<Command> start_edit(CommandParser::instance().parseLine("setworkspacenamedialog"));
139 154
140 insert(new FbTk::MenuSeparator()); 155 insert(new FbTk::MenuSeparator());
141 insert(_FBTEXT(Workspace, NewWorkspace, "New Workspace", "Add a new workspace"), 156 insert(_FBTEXT(Workspace, NewWorkspace, "New Workspace", "Add a new workspace"),
142 new_workspace); 157 new_workspace_cmd);
143 insert(_FBTEXT(Toolbar, EditWkspcName, "Edit current workspace name", "Edit current workspace name"), 158 insert(_FBTEXT(Toolbar, EditWkspcName, "Edit current workspace name", "Edit current workspace name"),
144 start_edit); 159 start_edit);
145 insert(_FBTEXT(Workspace, RemoveLast, "Remove Last", "Remove the last workspace"), 160 insert(_FBTEXT(Workspace, RemoveLast, "Remove Last", "Remove the last workspace"),
146 remove_last); 161 remove_last_cmd);
147 162
148 updateMenu(); 163 updateMenu();
149} 164}