changing the number of workspaces in the rc does something without restarting now!
This commit is contained in:
parent
f586e55a8c
commit
256bcbed81
3 changed files with 27 additions and 17 deletions
|
@ -686,6 +686,23 @@ void BScreen::load_rc(void) {
|
|||
}
|
||||
|
||||
|
||||
void BScreen::changeWorkspaceCount(unsigned int new_count) {
|
||||
assert(new_count > 0);
|
||||
|
||||
if (new_count < workspacesList.size()) {
|
||||
// shrink
|
||||
for (unsigned int i = workspacesList.size(); i > new_count; --i)
|
||||
removeLastWorkspace();
|
||||
// removeLast already sets the current workspace to the
|
||||
// last available one.
|
||||
} else if (new_count > workspacesList.size()) {
|
||||
// grow
|
||||
for(unsigned int i = workspacesList.size(); i < new_count; ++i)
|
||||
addWorkspace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BScreen::reconfigure(void) {
|
||||
// don't reconfigure while saving the initial rc file, it's a waste and it
|
||||
// breaks somethings (workspace names)
|
||||
|
@ -696,6 +713,10 @@ void BScreen::reconfigure(void) {
|
|||
slit->load_rc();
|
||||
LoadStyle();
|
||||
|
||||
// we need to do this explicitly, because just loading this value from the rc
|
||||
// does nothing
|
||||
changeWorkspaceCount(resource.workspaces);
|
||||
|
||||
XGCValues gcv;
|
||||
gcv.foreground = WhitePixel(blackbox->getXDisplay(),
|
||||
getScreenNumber());
|
||||
|
|
|
@ -267,6 +267,8 @@ public:
|
|||
inline int getColPlacementDirection(void) const
|
||||
{ return resource.col_direction; }
|
||||
|
||||
void changeWorkspaceCount(unsigned int new_count);
|
||||
|
||||
inline void setRootColormapInstalled(bool r) { root_colormap_installed = r; }
|
||||
void saveSloppyFocus(bool s);
|
||||
void saveAutoRaise(bool a);
|
||||
|
|
|
@ -755,7 +755,8 @@ void Blackbox::process_event(XEvent *e) {
|
|||
else
|
||||
win->show();
|
||||
screen->reassociateWindow(win, wksp, True);
|
||||
} else if (wksp == 0xfffffffe) { // XXX: BUG, BUT DOING THIS SO KDE WORKS FOR NOW!!
|
||||
} else if (wksp == 0xfffffffe || // XXX: BUG, BUT DOING THIS SO KDE WORKS FOR NOW!!
|
||||
wksp == 0xffffffff) {
|
||||
if (win->isIconic()) win->deiconify(False, True);
|
||||
if (! win->isStuck()) win->stick();
|
||||
if (! win->isVisible()) win->show();
|
||||
|
@ -781,22 +782,8 @@ void Blackbox::process_event(XEvent *e) {
|
|||
// NET_NUMBER_OF_DESKTOPS
|
||||
BScreen *screen = searchScreen(e->xclient.window);
|
||||
|
||||
if (e->xclient.data.l[0] > 0) {
|
||||
if ((unsigned) e->xclient.data.l[0] < screen->getWorkspaceCount()) {
|
||||
// shrink
|
||||
for (int i = screen->getWorkspaceCount();
|
||||
i > e->xclient.data.l[0]; --i)
|
||||
screen->removeLastWorkspace();
|
||||
// removeLast already sets the current workspace to the
|
||||
// last available one.
|
||||
} else if ((unsigned) e->xclient.data.l[0] >
|
||||
screen->getWorkspaceCount()) {
|
||||
// grow
|
||||
for(int i = screen->getWorkspaceCount();
|
||||
i < e->xclient.data.l[0]; ++i)
|
||||
screen->addWorkspace();
|
||||
}
|
||||
}
|
||||
if (e->xclient.data.l[0] > 0)
|
||||
screen->changeWorkspaceCount((unsigned) e->xclient.data.l[0]);
|
||||
} else if (e->xclient.message_type ==
|
||||
xatom->getAtom(XAtom::net_close_window)) {
|
||||
// NET_CLOSE_WINDOW
|
||||
|
|
Loading…
Reference in a new issue