fix workspace warping and netizen updates for warping (Simon)
@@ -69,10 +69,10 @@ XSendEvent(m_display, window, False, NoEventMask, &event);
} -void Netizen::sendWindowAdd(Window w, unsigned long p) { +void Netizen::sendWindowAdd(Window w, unsigned long wkspc) { event.xclient.data.l[0] = FbAtoms::instance()->getFluxboxNotifyWindowAddAtom(); event.xclient.data.l[1] = w; - event.xclient.data.l[2] = p; + event.xclient.data.l[2] = wkspc; XSendEvent(m_display, window, False, NoEventMask, &event);
@@ -38,7 +38,7 @@ void sendWorkspaceCount();
void sendCurrentWorkspace(); void sendWindowFocus(Window w); - void sendWindowAdd(Window w, unsigned long p); + void sendWindowAdd(Window w, unsigned long wkspc); void sendWindowDel(Window w); void sendWindowRaise(Window w); void sendWindowLower(Window w);
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Screen.cc,v 1.124 2003/04/16 00:37:19 fluxgen Exp $ +// $Id: Screen.cc,v 1.125 2003/04/16 14:43:01 rathnor Exp $ #include "Screen.hh"@@ -934,7 +934,7 @@ #endif // DEBUG
if (focused && focused->isMoving()) { if (doOpaqueMove()) - reassociateGroup(focused, id, true); + reassociateWindow(focused, id, true); // don't reassociate if not opaque moving focused->pauseMoving(); }@@ -945,7 +945,7 @@ Workspace::Windows wins = wksp->getWindowList();
Workspace::Windows::iterator it = wins.begin(); for (; it != wins.end(); ++it) { if ((*it)->isStuck()) { - reassociateGroup(*it, id, true); + reassociateWindow(*it, id, true); } }@@ -1321,11 +1321,6 @@ return workspaceNames[workspace];
} else { return ""; } -} - -void BScreen::reassociateGroup(FluxboxWindow *w, unsigned int wkspc_id, bool ignore_sticky) { - //!! TODO - cerr<<__FILE__<<"("<<__FUNCTION__<<") TODO!"<<endl; } void BScreen::reassociateWindow(FluxboxWindow *w, unsigned int wkspc_id, bool ignore_sticky) {
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Screen.hh,v 1.78 2003/04/16 13:43:42 rathnor Exp $ +// $Id: Screen.hh,v 1.79 2003/04/16 14:43:02 rathnor Exp $ #ifndef SCREEN_HH #define SCREEN_HH@@ -269,7 +269,6 @@
std::string getNameOfWorkspace(unsigned int workspace) const; void changeWorkspaceID(unsigned int); void sendToWorkspace(unsigned int workspace, FluxboxWindow *win=0, bool changeworkspace=true); - void reassociateGroup(FluxboxWindow *window, unsigned int workspace_id, bool ignore_sticky); void reassociateWindow(FluxboxWindow *window, unsigned int workspace_id, bool ignore_sticky); void prevFocus() { prevFocus(0); } void nextFocus() { nextFocus(0); }
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Window.cc,v 1.141 2003/04/16 13:43:50 rathnor Exp $ +// $Id: Window.cc,v 1.142 2003/04/16 14:43:04 rathnor Exp $ #include "Window.hh"@@ -2598,7 +2598,7 @@ frame().width() + 2*frame().window().borderWidth(),
frame().height() + 2*frame().window().borderWidth()); moveResize(last_move_x, last_move_y, m_frame.width(), m_frame.height()); if (workspace_number != getScreen().getCurrentWorkspaceID()) { - screen.reassociateGroup(this, getScreen().getCurrentWorkspaceID(), true); + screen.reassociateWindow(this, getScreen().getCurrentWorkspaceID(), true); m_frame.show(); } fluxbox->ungrab();
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Workspace.cc,v 1.52 2003/04/15 12:20:27 fluxgen Exp $ +// $Id: Workspace.cc,v 1.53 2003/04/16 14:43:06 rathnor Exp $ #include "Workspace.hh"@@ -194,9 +194,14 @@ */
m_windowlist.push_back(&w); updateClientmenu(); - - if (!w.isStuck()) - screen.updateNetizenWindowAdd(w.getClientWindow(), m_id); + if (!w.isStuck()) { + FluxboxWindow::ClientList::iterator client_it = + w.clientList().begin(); + FluxboxWindow::ClientList::iterator client_it_end = + w.clientList().end(); + for (; client_it != client_it_end; ++client_it) + screen.updateNetizenWindowAdd((*client_it)->window(), m_id); + } return w.getWindowNumber(); }@@ -273,6 +278,15 @@ updateClientmenu();
if (lastfocus == w || m_windowlist.empty()) lastfocus = 0; + + if (!w->isStuck()) { + FluxboxWindow::ClientList::iterator client_it = + w->clientList().begin(); + FluxboxWindow::ClientList::iterator client_it_end = + w->clientList().end(); + for (; client_it != client_it_end; ++client_it) + screen.updateNetizenWindowDel((*client_it)->window()); + } return m_windowlist.size(); }
@@ -22,7 +22,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: fluxbox.cc,v 1.112 2003/04/16 10:49:59 rathnor Exp $ +// $Id: fluxbox.cc,v 1.113 2003/04/16 14:43:06 rathnor Exp $ #include "fluxbox.hh"@@ -685,9 +685,9 @@ else
cerr<<"Fluxbox Warning! Could not find screen to map window on!"<<endl; } // handled in FluxboxWindow::handleEvent - if (win) + + if (win) win->mapRequestEvent(e->xmaprequest); - } break; case MapNotify: {