From ce5313528ead2692adfdfb41cf5e65dafcc0bc64 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 9 Sep 2002 22:09:38 +0000 Subject: [PATCH] bindable/disableable root/workspace menus --- src/Screen.cc | 62 +++++++++++++++++++++++++++++++++++++++++++++++---- src/Screen.hh | 8 +++++++ 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/Screen.cc b/src/Screen.cc index 3b75a94e..522a5be3 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -596,6 +596,32 @@ void BScreen::saveRootScrollDirection(int d) { } +void BScreen::saveRootMenuButton(unsigned int b) { + resource.root_menu_button = b; + const char *but; + switch (resource.root_menu_button) { + case 0: but = "None"; break; + case 1: but = "Left"; break; + case 2: but = "Middle"; break; + case 3: default: but = "Right"; break; + } + config->setValue(screenstr + "rootMenuButton", but); +} + + +void BScreen::saveWorkspaceMenuButton(unsigned int b) { + resource.workspace_menu_button = b; + const char *but; + switch (resource.workspace_menu_button) { + case 0: but = "None"; break; + case 1: but = "Left"; break; + case 2: default: but = "Middle"; break; + case 3: but = "Right"; break; + } + config->setValue(screenstr + "workspaceMenuButton", but); +} + + void BScreen::save_rc(void) { saveSloppyFocus(resource.sloppy_focus); saveAutoRaise(resource.auto_raise); @@ -629,6 +655,8 @@ void BScreen::save_rc(void) { saveAllowScrollLock(resource.allow_scroll_lock); saveWorkspaceWarping(resource.workspace_warping); saveRootScrollDirection(resource.root_scroll); + saveRootMenuButton(resource.root_menu_button); + saveWorkspaceMenuButton(resource.workspace_menu_button); toolbar->save_rc(); slit->save_rc(); @@ -804,6 +832,29 @@ void BScreen::load_rc(void) { else if (s == "Reverse") resource.root_scroll = ReverseScroll; } + + resource.root_menu_button = 3; + if (config->getValue(screenstr + "rootMenuButton", s)) { + if (s == "None") + resource.root_menu_button = 0; + else if (s == "Left") + resource.root_menu_button = 1; + else if (s == "Middle") + resource.root_menu_button = 2; + } + + resource.workspace_menu_button = 2; + if (config->getValue(screenstr + "workspaceMenuButton", s)) { + if (s == "None") + resource.workspace_menu_button = 0; + else if (s == "Left") + resource.workspace_menu_button = 1; + else if (s == "Right") + resource.workspace_menu_button = 3; + } + // cant both be the same + if (resource.workspace_menu_button == resource.root_menu_button) + resource.workspace_menu_button = 0; } @@ -2413,10 +2464,6 @@ void BScreen::buttonPressEvent(const XButtonEvent *xbutton) { if (rootmenu->isVisible()) rootmenu->hide(); - } else if (xbutton->button == 2) { - showWorkspaceMenu(xbutton->x_root, xbutton->y_root); - } else if (xbutton->button == 3) { - showRootMenu(xbutton->x_root, xbutton->y_root); // mouse wheel up } else if ((xbutton->button == 4 && resource.root_scroll == NormalScroll) || (xbutton->button == 5 && resource.root_scroll == ReverseScroll)) { @@ -2432,6 +2479,13 @@ void BScreen::buttonPressEvent(const XButtonEvent *xbutton) { else changeWorkspaceID(getCurrentWorkspaceID() - 1); } + + if (resource.root_menu_button > 0 && + xbutton->button == resource.root_menu_button) + showRootMenu(xbutton->x_root, xbutton->y_root); + else if (resource.workspace_menu_button > 0 && + xbutton->button == resource.workspace_menu_button) + showWorkspaceMenu(xbutton->x_root, xbutton->y_root); } diff --git a/src/Screen.hh b/src/Screen.hh index dee0a962..2511ae85 100644 --- a/src/Screen.hh +++ b/src/Screen.hh @@ -163,6 +163,8 @@ private: unsigned int handle_width, bevel_width, frame_width, border_width, resize_zones; + unsigned int root_menu_button, workspace_menu_button; + #ifdef HAVE_STRFTIME std::string strftime_format; #else // !HAVE_STRFTIME @@ -231,6 +233,10 @@ public: inline bool doWorkspaceWarping(void) const { return resource.workspace_warping; } inline int rootScrollDirection(void) const { return resource.root_scroll; } + inline unsigned int rootMenuButton(void) const + { return resource.root_menu_button; } + inline unsigned int workspaceMenuButton(void) const + { return resource.workspace_menu_button; } inline const GC &getOpGC(void) const { return opGC; } @@ -313,6 +319,8 @@ public: void saveAllowScrollLock(bool a); void saveWorkspaceWarping(bool w); void saveRootScrollDirection(int d); + void saveRootMenuButton(unsigned int b); + void saveWorkspaceMenuButton(unsigned int b); inline void iconUpdate(void) { iconmenu->update(); } #ifdef HAVE_STRFTIME -- 2.39.2