diff options
author | fluxgen <fluxgen> | 2004-09-11 13:45:16 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2004-09-11 13:45:16 (GMT) |
commit | 768d98a39d3640f24ebe13e2c304fac3436a0a0d (patch) | |
tree | 3a5a60b06c4c2f3ba2e98e59c288c99ae93527b9 /src/ToolFactory.cc | |
parent | 37757769634c836895d205b0a5149ffffaae9bfb (diff) | |
download | fluxbox_pavel-768d98a39d3640f24ebe13e2c304fac3436a0a0d.zip fluxbox_pavel-768d98a39d3640f24ebe13e2c304fac3436a0a0d.tar.bz2 |
head specific strut, patch from Mathieu De Zutter
Diffstat (limited to 'src/ToolFactory.cc')
-rw-r--r-- | src/ToolFactory.cc | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/src/ToolFactory.cc b/src/ToolFactory.cc index b897e43..6c1d4f8 100644 --- a/src/ToolFactory.cc +++ b/src/ToolFactory.cc | |||
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: ToolFactory.cc,v 1.7 2004/08/27 14:36:12 rathnor Exp $ | 22 | // $Id: ToolFactory.cc,v 1.8 2004/09/11 13:40:57 fluxgen Exp $ |
23 | 23 | ||
24 | #include "ToolFactory.hh" | 24 | #include "ToolFactory.hh" |
25 | 25 | ||
@@ -43,6 +43,8 @@ | |||
43 | 43 | ||
44 | #include "FbTk/FbWindow.hh" | 44 | #include "FbTk/FbWindow.hh" |
45 | 45 | ||
46 | #include <utility> | ||
47 | |||
46 | namespace { | 48 | namespace { |
47 | class ShowMenuAboveToolbar: public FbTk::Command { | 49 | class ShowMenuAboveToolbar: public FbTk::Command { |
48 | public: | 50 | public: |
@@ -51,20 +53,18 @@ public: | |||
51 | m_tbar.screen().hideMenus(); | 53 | m_tbar.screen().hideMenus(); |
52 | // get last button pos | 54 | // get last button pos |
53 | const XEvent &event = Fluxbox::instance()->lastEvent(); | 55 | const XEvent &event = Fluxbox::instance()->lastEvent(); |
54 | int x = event.xbutton.x_root - (m_tbar.menu().width() / 2); | 56 | int head = m_tbar.screen().getHead(event.xbutton.x_root, event.xbutton.y_root); |
55 | int y = event.xbutton.y_root - (m_tbar.menu().height() / 2); | 57 | std::pair<int, int> m = |
56 | 58 | m_tbar.screen().clampToHead( head, | |
57 | if (x < 0) | 59 | event.xbutton.x_root - (m_tbar.menu().width() / 2), |
58 | x = 0; | 60 | event.xbutton.y_root - (m_tbar.menu().height() / 2), |
59 | else if (x + m_tbar.menu().width() > m_tbar.screen().width()) | 61 | m_tbar.menu().width(), |
60 | x = m_tbar.screen().width() - m_tbar.menu().width(); | 62 | m_tbar.menu().height()); |
61 | 63 | m_tbar.menu().setScreen(m_tbar.screen().getHeadX(head), | |
62 | if (y < 0) | 64 | m_tbar.screen().getHeadY(head), |
63 | y = 0; | 65 | m_tbar.screen().getHeadWidth(head), |
64 | else if (y + m_tbar.menu().height() > m_tbar.screen().height()) | 66 | m_tbar.screen().getHeadHeight(head)); |
65 | y = m_tbar.screen().height() - m_tbar.menu().height(); | 67 | m_tbar.menu().move(m.first, m.second); |
66 | |||
67 | m_tbar.menu().move(x, y); | ||
68 | m_tbar.menu().show(); | 68 | m_tbar.menu().show(); |
69 | } | 69 | } |
70 | private: | 70 | private: |