diff options
Diffstat (limited to 'src/Window.cc')
-rw-r--r-- | src/Window.cc | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/src/Window.cc b/src/Window.cc index c87180d..51a66df 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -1880,30 +1880,14 @@ bool FluxboxWindow::getState() { | |||
1880 | } | 1880 | } |
1881 | 1881 | ||
1882 | /** | 1882 | /** |
1883 | Show the window menu at pos mx, my | 1883 | Show the window menu at pos x, y |
1884 | */ | 1884 | */ |
1885 | void FluxboxWindow::showMenu(int menu_x, int menu_y) { | 1885 | void FluxboxWindow::showMenu(int x, int y) { |
1886 | menu().reloadHelper()->checkReload(); | ||
1887 | |||
1888 | int head = screen().getHead(menu_x, menu_y); | ||
1889 | |||
1890 | menu().updateMenu(); // recalculate the menu size | ||
1891 | |||
1892 | // move menu directly under titlebar but not off the screen | ||
1893 | if (menu_y < static_cast<signed>(screen().maxTop(head))) | ||
1894 | menu_y = screen().maxTop(head); | ||
1895 | else if (menu_y + menu().height() >= screen().maxBottom(head)) | ||
1896 | menu_y = screen().maxBottom(head) - menu().height() - 1 - menu().fbwindow().borderWidth(); | ||
1897 | |||
1898 | if (menu_x < static_cast<signed>(screen().maxLeft(head))) | ||
1899 | menu_x = screen().maxLeft(head); | ||
1900 | else if (menu_x + static_cast<signed>(menu().width()) >= static_cast<signed>(screen().maxRight(head))) | ||
1901 | menu_x = screen().maxRight(head) - menu().width() - 1; | ||
1902 | 1886 | ||
1887 | menu().reloadHelper()->checkReload(); | ||
1903 | FbMenu::setWindow(this); | 1888 | FbMenu::setWindow(this); |
1904 | menu().move(menu_x, menu_y); | 1889 | screen().placementStrategy() |
1905 | menu().show(); | 1890 | .placeAndShowMenu(menu(), x, y, true); |
1906 | menu().grabInputFocus(); | ||
1907 | } | 1891 | } |
1908 | 1892 | ||
1909 | void FluxboxWindow::popupMenu(int x, int y) { | 1893 | void FluxboxWindow::popupMenu(int x, int y) { |