]> git.saurik.com Git - wxWidgets.git/commitdiff
implemented titlebar doubleclick in win32 theme
authorVáclav Slavík <vslavik@fastmail.fm>
Sat, 9 Feb 2002 23:29:19 +0000 (23:29 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sat, 9 Feb 2002 23:29:19 +0000 (23:29 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14094 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/univ/themes/win32.cpp

index 47d159b6ac0a2ce791071231041a29c1ea004113..ea4dd2511ea3faf56f406b78ccc81b27ba1cb98d 100644 (file)
@@ -577,6 +577,16 @@ private:
     bool m_isOnGrip;
 };
 
+class wxWin32FrameInputHandler : public wxStdFrameInputHandler
+{
+public:
+    wxWin32FrameInputHandler(wxInputHandler *handler)
+        : wxStdFrameInputHandler(handler) { }
+
+    virtual bool HandleMouse(wxInputConsumer *control,
+                             const wxMouseEvent& event);
+};
+
 // ----------------------------------------------------------------------------
 // wxWin32ColourScheme: uses (default) Win32 colours
 // ----------------------------------------------------------------------------
@@ -1202,7 +1212,7 @@ wxInputHandler *wxWin32Theme::GetInputHandler(const wxString& control)
             handler = new wxWin32StatusBarInputHandler(GetDefaultInputHandler());
 #endif // wxUSE_STATUSBAR
         else if ( control == wxINP_HANDLER_TOPLEVEL )
-            handler = new wxStdFrameInputHandler(GetDefaultInputHandler());
+            handler = new wxWin32FrameInputHandler(GetDefaultInputHandler());
         else
             handler = GetDefaultInputHandler();
 
@@ -4153,3 +4163,30 @@ bool wxWin32StatusBarInputHandler::HandleMouseMove(wxInputConsumer *consumer,
     return wxStdInputHandler::HandleMouseMove(consumer, event);
 }
 
+// ----------------------------------------------------------------------------
+// wxWin32FrameInputHandler
+// ----------------------------------------------------------------------------
+
+bool wxWin32FrameInputHandler::HandleMouse(wxInputConsumer *consumer,
+                                           const wxMouseEvent& event)
+{
+    if ( event.LeftDClick() )
+    {
+        wxTopLevelWindow *tlw = 
+            wxStaticCast(consumer->GetInputWindow(), wxTopLevelWindow);
+
+        long hit = tlw->HitTest(event.GetPosition());
+
+        if ( hit == wxHT_TOPLEVEL_TITLEBAR )
+        {
+            tlw->PerformAction(wxACTION_TOPLEVEL_BUTTON_CLICK, 
+                               tlw->IsMaximized() ? 
+                                   wxTOPLEVEL_BUTTON_RESTORE : 
+                                   wxTOPLEVEL_BUTTON_MAXIMIZE);
+            return TRUE;
+        }
+    }
+
+    return wxStdFrameInputHandler::HandleMouse(consumer, event);
+}
+