fixed send to bug
This commit is contained in:
parent
f7fc364a4c
commit
a8f39f0d7a
2 changed files with 33 additions and 20 deletions
|
@ -22,7 +22,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// $Id: Screen.cc,v 1.242 2003/12/03 23:08:48 fluxgen Exp $
|
// $Id: Screen.cc,v 1.243 2003/12/04 00:08:05 fluxgen Exp $
|
||||||
|
|
||||||
|
|
||||||
#include "Screen.hh"
|
#include "Screen.hh"
|
||||||
|
@ -866,8 +866,9 @@ void BScreen::changeWorkspaceID(unsigned int id) {
|
||||||
|
|
||||||
|
|
||||||
void BScreen::sendToWorkspace(unsigned int id, FluxboxWindow *win, bool changeWS) {
|
void BScreen::sendToWorkspace(unsigned int id, FluxboxWindow *win, bool changeWS) {
|
||||||
if (! m_current_workspace || id >= m_workspaces_list.size())
|
if (! m_current_workspace || id >= m_workspaces_list.size()) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!win) {
|
if (!win) {
|
||||||
WinClient *client = Fluxbox::instance()->getFocusedWindow();
|
WinClient *client = Fluxbox::instance()->getFocusedWindow();
|
||||||
|
@ -875,28 +876,33 @@ void BScreen::sendToWorkspace(unsigned int id, FluxboxWindow *win, bool changeWS
|
||||||
win = client->fbwindow();
|
win = client->fbwindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id != currentWorkspace()->workspaceID()) {
|
|
||||||
XSync(FbTk::App::instance()->display(), True);
|
|
||||||
|
|
||||||
if (win && &win->screen() == this &&
|
XSync(FbTk::App::instance()->display(), True);
|
||||||
(! win->isStuck())) {
|
|
||||||
|
|
||||||
if (win->isIconic()) {
|
if (win && &win->screen() == this &&
|
||||||
win->deiconify();
|
(! win->isStuck())) {
|
||||||
}
|
|
||||||
|
|
||||||
|
if (win->isIconic()) {
|
||||||
|
win->deiconify();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (id != currentWorkspace()->workspaceID())
|
||||||
win->withdraw();
|
win->withdraw();
|
||||||
reassociateWindow(win, id, true);
|
|
||||||
|
|
||||||
// change workspace ?
|
|
||||||
if (changeWS) {
|
|
||||||
changeWorkspaceID(id);
|
|
||||||
win->setInputFocus();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
reassociateWindow(win, id, true);
|
||||||
|
|
||||||
|
if (id == currentWorkspace()->workspaceID())
|
||||||
|
win->deiconify(false, false);
|
||||||
|
|
||||||
|
// change workspace ?
|
||||||
|
if (changeWS && id != currentWorkspace()->workspaceID()) {
|
||||||
|
changeWorkspaceID(id);
|
||||||
|
win->setInputFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// $Id: SendToMenu.cc,v 1.3 2003/11/28 13:39:41 fluxgen Exp $
|
// $Id: SendToMenu.cc,v 1.4 2003/12/04 00:08:55 fluxgen Exp $
|
||||||
|
|
||||||
#include "SendToMenu.hh"
|
#include "SendToMenu.hh"
|
||||||
|
|
||||||
|
@ -53,9 +53,11 @@ SendToMenu::SendToMenu(FluxboxWindow &win):
|
||||||
// workspace count signal
|
// workspace count signal
|
||||||
// workspace names signal
|
// workspace names signal
|
||||||
// current workspace signal
|
// current workspace signal
|
||||||
|
// and window's workspace sig
|
||||||
win.screen().workspaceCountSig().attach(this);
|
win.screen().workspaceCountSig().attach(this);
|
||||||
win.screen().workspaceNamesSig().attach(this);
|
win.screen().workspaceNamesSig().attach(this);
|
||||||
win.screen().currentWorkspaceSig().attach(this);
|
win.screen().currentWorkspaceSig().attach(this);
|
||||||
|
win.workspaceSig().attach(this);
|
||||||
|
|
||||||
disableTitle();
|
disableTitle();
|
||||||
// build menu
|
// build menu
|
||||||
|
@ -64,13 +66,15 @@ SendToMenu::SendToMenu(FluxboxWindow &win):
|
||||||
|
|
||||||
void SendToMenu::update(FbTk::Subject *subj) {
|
void SendToMenu::update(FbTk::Subject *subj) {
|
||||||
// if workspace changed we enable all workspaces except the current one
|
// if workspace changed we enable all workspaces except the current one
|
||||||
if (subj != 0 && subj == &(m_win.screen().currentWorkspaceSig())) {
|
if (subj != 0 && (subj == &(m_win.screen().currentWorkspaceSig()) ||
|
||||||
|
subj == &(m_win.workspaceSig()))) {
|
||||||
// enabled all workspaces
|
// enabled all workspaces
|
||||||
const BScreen::Workspaces &wlist = m_win.screen().getWorkspacesList();
|
const BScreen::Workspaces &wlist = m_win.screen().getWorkspacesList();
|
||||||
for (size_t i = 0; i < wlist.size(); ++i)
|
for (size_t i = 0; i < wlist.size(); ++i)
|
||||||
setItemEnabled(i, true);
|
setItemEnabled(i, true);
|
||||||
// disable current workspace
|
// disable send to on the workspace which the window exist
|
||||||
setItemEnabled(m_win.screen().currentWorkspaceID(), false);
|
setItemEnabled(m_win.workspaceNumber(), false);
|
||||||
|
FbMenu::update();
|
||||||
// we're done
|
// we're done
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -83,7 +87,10 @@ void SendToMenu::update(FbTk::Subject *subj) {
|
||||||
for (size_t i = 0; i < wlist.size(); ++i) {
|
for (size_t i = 0; i < wlist.size(); ++i) {
|
||||||
FbTk::RefCount<FbTk::Command> sendto_cmd(new SendToCmd(m_win, i));
|
FbTk::RefCount<FbTk::Command> sendto_cmd(new SendToCmd(m_win, i));
|
||||||
insert(wlist[i]->name().c_str(), sendto_cmd);
|
insert(wlist[i]->name().c_str(), sendto_cmd);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setItemEnabled(m_win.workspaceNumber(), false);
|
||||||
|
|
||||||
FbMenu::update();
|
FbMenu::update();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue