make sure menus close only when right clicking down and up on the titlebar
This commit is contained in:
parent
857a6d0a6a
commit
5aecf58d47
3 changed files with 10 additions and 5 deletions
|
@ -600,7 +600,7 @@ void Menu::internal_hide(bool first) {
|
|||
shown = (Menu *) 0;
|
||||
}
|
||||
|
||||
m_torn = m_visible = false;
|
||||
m_torn = m_visible = m_closing = false;
|
||||
m_which_sub = -1;
|
||||
|
||||
if (first && m_parent && m_parent->isVisible() &&
|
||||
|
@ -835,12 +835,16 @@ void Menu::handleEvent(XEvent &event) {
|
|||
if (validIndex(m_which_sub) &&
|
||||
menuitems[m_which_sub]->submenu()->isVisible())
|
||||
menuitems[m_which_sub]->submenu()->grabInputFocus();
|
||||
}
|
||||
} else if (event.type == LeaveNotify)
|
||||
m_closing = false;
|
||||
}
|
||||
|
||||
void Menu::buttonPressEvent(XButtonEvent &be) {
|
||||
if (be.window == menu.title)
|
||||
if (be.window == menu.title) {
|
||||
grabInputFocus();
|
||||
m_closing = (be.button == 3);
|
||||
} else
|
||||
m_closing = false;
|
||||
|
||||
if (be.window == menu.frame && menu.item_w != 0) {
|
||||
|
||||
|
@ -879,7 +883,7 @@ void Menu::buttonReleaseEvent(XButtonEvent &re) {
|
|||
}
|
||||
}
|
||||
|
||||
if (re.button == 3)
|
||||
if (re.button == 3 && m_closing)
|
||||
internal_hide();
|
||||
|
||||
} else if (re.window == menu.frame) {
|
||||
|
|
|
@ -220,6 +220,7 @@ private:
|
|||
int m_screen_x, m_screen_y;
|
||||
unsigned int m_screen_width, m_screen_height;
|
||||
bool m_moving; ///< if we're moving/draging or not
|
||||
bool m_closing; ///< if we're right clicking on the menu title
|
||||
bool m_visible; ///< menu visibility
|
||||
bool m_torn; ///< torn from parent
|
||||
bool m_internal_menu; ///< whether we should destroy this menu or if it's managed somewhere else
|
||||
|
|
|
@ -216,7 +216,7 @@ void Gnome::updateClientList(BScreen &screen) {
|
|||
}
|
||||
|
||||
void Gnome::updateClientClose(WinClient &client) {
|
||||
if (client.screen().isShuttingdown()) {
|
||||
if (!client.screen().isShuttingdown()) {
|
||||
XDeleteProperty(FbTk::App::instance()->display(), client.window(),
|
||||
m_gnome_wm_win_workspace);
|
||||
XDeleteProperty(FbTk::App::instance()->display(), client.window(),
|
||||
|
|
Loading…
Reference in a new issue