diff options
Diffstat (limited to 'src/Toolbar.cc')
-rw-r--r-- | src/Toolbar.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/Toolbar.cc b/src/Toolbar.cc index 6bf5654..96500af 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.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: Toolbar.cc,v 1.34 2002/10/15 17:13:24 fluxgen Exp $ | 25 | // $Id: Toolbar.cc,v 1.35 2002/10/19 14:07:00 fluxgen Exp $ |
26 | 26 | ||
27 | #include "Toolbar.hh" | 27 | #include "Toolbar.hh" |
28 | 28 | ||
@@ -998,10 +998,23 @@ void Toolbar::buttonPressEvent(XButtonEvent *be) { | |||
998 | XLowerWindow(display, frame.window); | 998 | XLowerWindow(display, frame.window); |
999 | } else if (be->button == 3) { | 999 | } else if (be->button == 3) { |
1000 | FluxboxWindow *fluxboxwin = 0; | 1000 | FluxboxWindow *fluxboxwin = 0; |
1001 | // if we clicked on a icon then show window menu | ||
1001 | if ( iconbar && (fluxboxwin = iconbar->findWindow(be->window)) ) { | 1002 | if ( iconbar && (fluxboxwin = iconbar->findWindow(be->window)) ) { |
1002 | Windowmenu *wm = fluxboxwin->getWindowmenu(); | 1003 | const Windowmenu * const wm = fluxboxwin->getWindowmenu(); |
1003 | if (wm) | 1004 | if (wm != 0) { |
1004 | fluxboxwin->showMenu(be->x_root, be->y_root - wm->height()); | 1005 | int menu_y = be->y_root - wm->height(); |
1006 | int menu_x = be->x_root; | ||
1007 | // make sure the menu is visible | ||
1008 | if (menu_y < 0) { | ||
1009 | menu_y = 0; | ||
1010 | } | ||
1011 | if (menu_x < 0) { | ||
1012 | menu_x = 0; | ||
1013 | } else if (menu_x + wm->width() > screen->getWidth()) { | ||
1014 | menu_x = screen->getWidth() - wm->width(); | ||
1015 | } | ||
1016 | fluxboxwin->showMenu(menu_x, menu_y); | ||
1017 | } | ||
1005 | } else if (! toolbarmenu->isVisible()) { | 1018 | } else if (! toolbarmenu->isVisible()) { |
1006 | int x, y; | 1019 | int x, y; |
1007 | 1020 | ||