summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Screen.cc25
-rw-r--r--src/Window.cc10
2 files changed, 17 insertions, 18 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 541b30a..720efed 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1201,6 +1201,13 @@ void BScreen::changeWorkspaceID(unsigned int id) {
1201 1201
1202 FbTk::App::instance()->sync(false); 1202 FbTk::App::instance()->sync(false);
1203 1203
1204 // set new workspace
1205 Workspace *old = currentWorkspace();
1206 m_current_workspace = getWorkspace(id);
1207
1208 // we show new workspace first in order to appear faster
1209 currentWorkspace()->showAll();
1210
1204 FluxboxWindow *focused = FocusControl::focusedFbWindow(); 1211 FluxboxWindow *focused = FocusControl::focusedFbWindow();
1205 1212
1206 if (focused && focused->isMoving()) { 1213 if (focused && focused->isMoving()) {
@@ -1227,28 +1234,14 @@ void BScreen::changeWorkspaceID(unsigned int id) {
1227 (*icon_it)->setWorkspace(id); 1234 (*icon_it)->setWorkspace(id);
1228 } 1235 }
1229 1236
1230 currentWorkspace()->hideAll(false);
1231
1232 // set new workspace
1233 m_current_workspace = getWorkspace(id);
1234
1235 // This is a little tricks to reduce flicker
1236 // this way we can set focus pixmap on frame before we show it
1237 // and using ExposeEvent to redraw without flicker
1238 /*
1239 WinClient *win = getLastFocusedWindow(currentWorkspaceID());
1240 if (win && win->fbwindow())
1241 win->fbwindow()->setFocusFlag(true);
1242 */
1243
1244 currentWorkspace()->showAll();
1245
1246 if (focused && focused->isMoving()) { 1237 if (focused && focused->isMoving()) {
1247 focused->focus(); 1238 focused->focus();
1248 focused->resumeMoving(); 1239 focused->resumeMoving();
1249 } else 1240 } else
1250 FocusControl::revertFocus(*this); 1241 FocusControl::revertFocus(*this);
1251 1242
1243 old->hideAll(false);
1244
1252 FbTk::App::instance()->sync(false); 1245 FbTk::App::instance()->sync(false);
1253 1246
1254 m_currentworkspace_sig.notify(); 1247 m_currentworkspace_sig.notify();
diff --git a/src/Window.cc b/src/Window.cc
index 5e2f7c8..9184a80 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -1954,7 +1954,7 @@ void FluxboxWindow::setFocusFlag(bool focus) {
1954 if (focus != frame().focused()) 1954 if (focus != frame().focused())
1955 frame().setFocus(focus); 1955 frame().setFocus(focus);
1956 1956
1957 if (screen().focusControl().isCycling()) 1957 if (focus && screen().focusControl().isCycling())
1958 tempRaise(); 1958 tempRaise();
1959 else if (screen().doAutoRaise()) { 1959 else if (screen().doAutoRaise()) {
1960 if (m_focused) 1960 if (m_focused)
@@ -2486,7 +2486,13 @@ void FluxboxWindow::configureRequestEvent(XConfigureRequestEvent &cr) {
2486 2486
2487 if (now.tv_sec > m_creation_time + 1) 2487 if (now.tv_sec > m_creation_time + 1)
2488 m_creation_time = 0; 2488 m_creation_time = 0;
2489 else { 2489 else if (Remember::instance().isRemembered(*client,
2490 Remember::REM_MAXIMIZEDSTATE) ||
2491 Remember::instance().isRemembered(*client,
2492 Remember::REM_FULLSCREENSTATE)) {
2493 cr.value_mask = cr.value_mask & ~(CWWidth | CWHeight);
2494 cr.value_mask = cr.value_mask & ~(CWX | CWY);
2495 } else {
2490 if (Remember::instance().isRemembered(*client, 2496 if (Remember::instance().isRemembered(*client,
2491 Remember::REM_DIMENSIONS)) 2497 Remember::REM_DIMENSIONS))
2492 cr.value_mask = cr.value_mask & ~(CWWidth | CWHeight); 2498 cr.value_mask = cr.value_mask & ~(CWWidth | CWHeight);