From 910651da23313caed7fdbe0f9e4fedb0a3d60f8e Mon Sep 17 00:00:00 2001 From: X512 Date: Tue, 10 Mar 2020 18:29:28 +0900 Subject: [PATCH] Deskbar: add middle click shortcut * Middle click on team item launch new instance of team. * Shift+middle click on window item closes window. Change-Id: Iaf201b8fe87dcc4430afd451a7ad3654178389a0 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2337 Reviewed-by: waddlesplash Reviewed-by: Adrien Destugues Reviewed-by: John Scipione Reviewed-by: Sergei Reznikov --- src/apps/deskbar/ExpandoMenuBar.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/apps/deskbar/ExpandoMenuBar.cpp b/src/apps/deskbar/ExpandoMenuBar.cpp index 70445d2a3c..038080ba2b 100644 --- a/src/apps/deskbar/ExpandoMenuBar.cpp +++ b/src/apps/deskbar/ExpandoMenuBar.cpp @@ -46,6 +46,7 @@ All rights reserved. #include #include #include +#include #include #include #include @@ -263,7 +264,9 @@ TExpandoMenuBar::MouseDown(BPoint where) } int32 modifiers = 0; + int32 buttons = 0; message->FindInt32("modifiers", &modifiers); + message->FindInt32("buttons", &buttons); // check for three finger salute, a.k.a. Vulcan Death Grip if ((modifiers & B_COMMAND_KEY) != 0 @@ -280,6 +283,29 @@ TExpandoMenuBar::MouseDown(BPoint where) } return; // absorb the message + } else if (item != NULL + && (modifiers & B_SHIFT_KEY) == 0 + && (buttons & B_TERTIARY_MOUSE_BUTTON) != 0) { + be_roster->Launch(item->Signature()); + return; + // absorb the message + } else { + TWindowMenuItem* wndItem = dynamic_cast(menuItem); + if (wndItem != NULL + && (modifiers & B_SHIFT_KEY) != 0 + && (buttons & B_TERTIARY_MOUSE_BUTTON) != 0) { + // close window + client_window_info* info; + BMessenger wnd; + info = get_window_info(wndItem->ID()); + if (info == NULL) return; + BMessenger::Private(wnd).SetTo( + info->team, info->client_port, info->client_token); + free(info); info = NULL; + wnd.SendMessage(B_QUIT_REQUESTED); + return; + // absorb the message + } } // control click - show all/hide all shortcut