@@ -205,7 +205,7 @@ CMainMenu::CMainMenu(CGUI* pManager)
205205 m_pMenuArea->SetSize (CVector2D (m_menuBX - m_menuAX, m_menuBY - m_menuAY) + BODGE_FACTOR_6, false );
206206 m_pMenuArea->SetAlpha (0 );
207207 m_pMenuArea->SetZOrderingEnabled (false );
208- m_pMenuArea->SetClickHandler (GUI_CALLBACK (&CMainMenu::OnMenuClick, this ));
208+ m_pMenuArea->SetClickHandler (GUI_CALLBACK_MOUSE (&CMainMenu::OnMenuClick, this ));
209209 m_pMenuArea->SetMouseEnterHandler (GUI_CALLBACK (&CMainMenu::OnMenuEnter, this ));
210210 m_pMenuArea->SetMouseLeaveHandler (GUI_CALLBACK (&CMainMenu::OnMenuExit, this ));
211211
@@ -792,76 +792,84 @@ bool CMainMenu::OnMenuExit(CGUIElement* pElement)
792792 return true ;
793793}
794794
795- bool CMainMenu::OnMenuClick (CGUIElement* pElement )
795+ bool CMainMenu::OnMenuClick (CGUIMouseEventArgs Args )
796796{
797- // Handle all our clicks to the menu from here
798- if (m_pHoveredItem)
799- {
800- // For detecting startup problems
801- WatchDogUserDidInteractWithMenu ();
797+ CGUIElement* pElement = Args.pWindow ;
802798
803- // Possible disconnect question for user
804- if (g_pCore->IsConnected ())
805- {
806- switch (m_pHoveredItem->menuType )
807- {
808- case MENU_ITEM_HOST_GAME:
809- case MENU_ITEM_MAP_EDITOR:
810- AskUserIfHeWantsToDisconnect (m_pHoveredItem->menuType );
811- return true ;
812- default :
813- break ;
814- }
815- }
799+ // Only handle all our clicks to the menu from here
800+ if (!m_pHoveredItem)
801+ return true ;
802+
803+ if (Args.button != LeftButton && m_pHoveredItem->menuType != MENU_ITEM_QUICK_CONNECT)
804+ return true ;
805+
806+ // For detecting startup problems
807+ WatchDogUserDidInteractWithMenu ();
816808
809+ // Possible disconnect question for user
810+ if (g_pCore->IsConnected ())
811+ {
817812 switch (m_pHoveredItem->menuType )
818813 {
819- case MENU_ITEM_DISCONNECT:
820- OnDisconnectButtonClick (pElement);
821- break ;
822- case MENU_ITEM_QUICK_CONNECT:
823- OnQuickConnectButtonClick (pElement);
824- break ;
825- case MENU_ITEM_BROWSE_SERVERS:
826- OnBrowseServersButtonClick (pElement);
827- break ;
828814 case MENU_ITEM_HOST_GAME:
829- OnHostGameButtonClick ();
830- break ;
831815 case MENU_ITEM_MAP_EDITOR:
832- OnEditorButtonClick ();
833- break ;
834- case MENU_ITEM_SETTINGS:
835- OnSettingsButtonClick (pElement);
836- break ;
837- case MENU_ITEM_ABOUT:
838- OnAboutButtonClick (pElement);
839- break ;
840- case MENU_ITEM_QUIT:
841- OnQuitButtonClick (pElement);
842- break ;
816+ AskUserIfHeWantsToDisconnect (m_pHoveredItem->menuType );
817+ return true ;
843818 default :
844819 break ;
845820 }
846821 }
822+
823+ switch (m_pHoveredItem->menuType )
824+ {
825+ case MENU_ITEM_DISCONNECT:
826+ OnDisconnectButtonClick (pElement);
827+ break ;
828+ case MENU_ITEM_QUICK_CONNECT:
829+ OnQuickConnectButtonClick (pElement, Args.button == LeftButton);
830+ break ;
831+ case MENU_ITEM_BROWSE_SERVERS:
832+ OnBrowseServersButtonClick (pElement);
833+ break ;
834+ case MENU_ITEM_HOST_GAME:
835+ OnHostGameButtonClick ();
836+ break ;
837+ case MENU_ITEM_MAP_EDITOR:
838+ OnEditorButtonClick ();
839+ break ;
840+ case MENU_ITEM_SETTINGS:
841+ OnSettingsButtonClick (pElement);
842+ break ;
843+ case MENU_ITEM_ABOUT:
844+ OnAboutButtonClick (pElement);
845+ break ;
846+ case MENU_ITEM_QUIT:
847+ OnQuitButtonClick (pElement);
848+ break ;
849+ default :
850+ break ;
851+ }
852+
847853 return true ;
848854}
849855
850- bool CMainMenu::OnQuickConnectButtonClick (CGUIElement* pElement)
856+ bool CMainMenu::OnQuickConnectButtonClick (CGUIElement* pElement, bool left )
851857{
852858 // Return if we haven't faded in yet
853859 if (m_ucFade != FADE_VISIBLE)
854860 return false ;
855861
862+ // If we're right clicking, execute special command
863+ if (!left)
864+ {
865+ std::string command;
866+ CVARS_GET (" _beta_qc_rightclick_command" , command);
867+ g_pCore->GetCommands ()->Execute (command.data ());
868+ return true ;
869+ }
870+
856871 m_ServerBrowser.SetVisible (true );
857872 m_ServerBrowser.OnQuickConnectButtonClick ();
858- /*
859- // if ( !m_bIsInSubWindow )
860- {
861- m_QuickConnect.SetVisible ( true );
862- // m_bIsInSubWindow = true;
863- }
864- */
865873 return true ;
866874}
867875
0 commit comments