diff options
-rw-r--r-- | src/fluxbox.cc | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index 345cde8..10ddc09 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: fluxbox.cc,v 1.74 2002/09/07 20:25:39 fluxgen Exp $ | 25 | // $Id: fluxbox.cc,v 1.75 2002/09/08 19:31:27 fluxgen Exp $ |
26 | 26 | ||
27 | 27 | ||
28 | #include "fluxbox.hh" | 28 | #include "fluxbox.hh" |
@@ -344,7 +344,7 @@ key(0) | |||
344 | 344 | ||
345 | // setup atom handlers | 345 | // setup atom handlers |
346 | m_atomhandler.push_back(new Gnome()); | 346 | m_atomhandler.push_back(new Gnome()); |
347 | // m_atomhandler.push_back(new Ewmh()); // TODO | 347 | // m_atomhandler.push_back(new Ewmh()); |
348 | 348 | ||
349 | //singleton pointer | 349 | //singleton pointer |
350 | singleton = this; | 350 | singleton = this; |
@@ -1264,12 +1264,12 @@ void Fluxbox::handleKeyEvent(XKeyEvent &ke) { | |||
1264 | break; | 1264 | break; |
1265 | case Keys::NEXTWINDOW: //activate next window | 1265 | case Keys::NEXTWINDOW: //activate next window |
1266 | screen->nextFocus(key->getParam()); | 1266 | screen->nextFocus(key->getParam()); |
1267 | if (focused_window) | 1267 | if (focused_window && focused_window->getTab()) |
1268 | focused_window->getTab()->raise(); | 1268 | focused_window->getTab()->raise(); |
1269 | break; | 1269 | break; |
1270 | case Keys::PREVWINDOW: //activate prev window | 1270 | case Keys::PREVWINDOW: //activate prev window |
1271 | screen->prevFocus(key->getParam()); | 1271 | screen->prevFocus(key->getParam()); |
1272 | if (focused_window) | 1272 | if (focused_window && focused_window->getTab()) |
1273 | focused_window->getTab()->raise(); | 1273 | focused_window->getTab()->raise(); |
1274 | break; | 1274 | break; |
1275 | case Keys::NEXTTAB: | 1275 | case Keys::NEXTTAB: |
@@ -1613,25 +1613,32 @@ void Fluxbox::update(FbTk::Subject *changedsub) { | |||
1613 | FluxboxWindow &win = winsub->win(); | 1613 | FluxboxWindow &win = winsub->win(); |
1614 | if ((&(win.hintSig())) == changedsub) { // hint signal | 1614 | if ((&(win.hintSig())) == changedsub) { // hint signal |
1615 | #ifdef DEBUG | 1615 | #ifdef DEBUG |
1616 | cerr<<__FILE__<<"("<<__LINE__<<") hint signal from "<<&win<<endl; | 1616 | cerr<<__FILE__<<"("<<__LINE__<<") WINDOW hint signal from "<<&win<<endl; |
1617 | #endif // DEBUG | 1617 | #endif // DEBUG |
1618 | for (size_t i=0; i<m_atomhandler.size(); ++i) { | 1618 | for (size_t i=0; i<m_atomhandler.size(); ++i) { |
1619 | if (m_atomhandler[i]->update()) | 1619 | if (m_atomhandler[i]->update()) |
1620 | m_atomhandler[i]->updateHints(&win); | 1620 | m_atomhandler[i]->updateHints(win); |
1621 | } | 1621 | } |
1622 | } else if ((&(win.stateSig())) == changedsub) { // state signal | 1622 | } else if ((&(win.stateSig())) == changedsub) { // state signal |
1623 | #ifdef DEBUG | 1623 | #ifdef DEBUG |
1624 | cerr<<__FILE__<<"("<<__LINE__<<") state signal from "<<&win<<endl; | 1624 | cerr<<__FILE__<<"("<<__LINE__<<") WINDOW state signal from "<<&win<<endl; |
1625 | #endif // DEBUG | 1625 | #endif // DEBUG |
1626 | for (size_t i=0; i<m_atomhandler.size(); ++i) { | 1626 | for (size_t i=0; i<m_atomhandler.size(); ++i) { |
1627 | if (m_atomhandler[i]->update()) | 1627 | if (m_atomhandler[i]->update()) |
1628 | m_atomhandler[i]->updateState(&win); | 1628 | m_atomhandler[i]->updateState(win); |
1629 | } | 1629 | } |
1630 | } else if ((&(win.workspaceSig())) == changedsub) { // workspace signal | 1630 | } else if ((&(win.workspaceSig())) == changedsub) { // workspace signal |
1631 | #ifdef DEBUG | 1631 | #ifdef DEBUG |
1632 | cerr<<__FILE__<<"("<<__LINE__<<") workspace signal from "<<&win<<endl; | 1632 | cerr<<__FILE__<<"("<<__LINE__<<") WINDOW workspace signal from "<<&win<<endl; |
1633 | #endif // DEBUG | ||
1634 | for (size_t i=0; i<m_atomhandler.size(); ++i) { | ||
1635 | if (m_atomhandler[i]->update()) | ||
1636 | m_atomhandler[i]->updateWorkspace(win); | ||
1637 | } | ||
1638 | } else { | ||
1639 | #ifdef DEBUG | ||
1640 | cerr<<__FILE__<<"("<<__LINE__<<"): WINDOW uncought signal from "<<&win<<endl; | ||
1633 | #endif // DEBUG | 1641 | #endif // DEBUG |
1634 | |||
1635 | } | 1642 | } |
1636 | 1643 | ||
1637 | } else if (typeid(*changedsub) == typeid(BScreen::ScreenSubject)) { | 1644 | } else if (typeid(*changedsub) == typeid(BScreen::ScreenSubject)) { |
@@ -1677,9 +1684,11 @@ void Fluxbox::attachSignals(FluxboxWindow &win) { | |||
1677 | win.hintSig().attach(this); | 1684 | win.hintSig().attach(this); |
1678 | win.stateSig().attach(this); | 1685 | win.stateSig().attach(this); |
1679 | win.workspaceSig().attach(this); | 1686 | win.workspaceSig().attach(this); |
1687 | for (size_t i=0; i<m_atomhandler.size(); ++i) { | ||
1688 | m_atomhandler[i]->setupWindow(win); | ||
1689 | } | ||
1680 | } | 1690 | } |
1681 | 1691 | ||
1682 | |||
1683 | BScreen *Fluxbox::searchScreen(Window window) { | 1692 | BScreen *Fluxbox::searchScreen(Window window) { |
1684 | BScreen *screen = (BScreen *) 0; | 1693 | BScreen *screen = (BScreen *) 0; |
1685 | ScreenList::iterator it = screenList.begin(); | 1694 | ScreenList::iterator it = screenList.begin(); |
@@ -1775,12 +1784,10 @@ void Fluxbox::removeGroupSearch(Window window) { | |||
1775 | groupSearch.erase(window); | 1784 | groupSearch.erase(window); |
1776 | } | 1785 | } |
1777 | 1786 | ||
1778 | |||
1779 | void Fluxbox::removeMenuSearch(Window window) { | 1787 | void Fluxbox::removeMenuSearch(Window window) { |
1780 | menuSearch.erase(window); | 1788 | menuSearch.erase(window); |
1781 | } | 1789 | } |
1782 | 1790 | ||
1783 | |||
1784 | void Fluxbox::removeToolbarSearch(Window window) { | 1791 | void Fluxbox::removeToolbarSearch(Window window) { |
1785 | toolbarSearch.erase(window); | 1792 | toolbarSearch.erase(window); |
1786 | } | 1793 | } |