From 9dabade20bff6c661b7eccbc0e2b809cb670dc75 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Fri, 25 Feb 2005 08:08:22 +0000 Subject: [PATCH] Make HTCLIENT code off by default git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32359 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/statbmp.cpp | 20 +++++++++++++++----- src/msw/statbox.cpp | 25 +++++++++++++++++-------- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/msw/statbmp.cpp b/src/msw/statbmp.cpp index 8ac78dc4f4..f7c3e6e206 100644 --- a/src/msw/statbmp.cpp +++ b/src/msw/statbmp.cpp @@ -38,6 +38,8 @@ #include "wx/statbmp.h" #endif +#include "wx/sysopt.h" + #include // --------------------------------------------------------------------------- @@ -262,16 +264,24 @@ void wxStaticBitmap::SetImageNoCopy( wxGDIImage* image) ::InvalidateRect(GetHwndOf(GetParent()), &rect, TRUE); } -// We need this for e.g. dialog editors. Please do not remove. WXLRESULT wxStaticBitmap::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { #ifndef __WXWINCE__ - // Ensure that static items get messages. Some controls don't like this - // message to be intercepted (e.g. RichEdit), hence the tests. - if ( nMsg == WM_NCHITTEST ) - return (long)HTCLIENT; + static int s_useHTClient = -1; + if (s_useHTClient == -1) + s_useHTClient = wxSystemOptions::GetOptionInt(wxT("msw.staticbitmap.htclient")); + if (s_useHTClient == 1) + { + // Ensure that static items get messages. Some controls don't like this + // message to be intercepted (e.g. RichEdit), hence the tests. + // Also, this code breaks some other processing such as enter/leave tracking + // so it's off by default. + + if ( nMsg == WM_NCHITTEST ) + return (long)HTCLIENT; + } #endif return wxWindow::MSWWindowProc(nMsg, wParam, lParam); diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp index 03b1de9c65..d7881bc2ff 100644 --- a/src/msw/statbox.cpp +++ b/src/msw/statbox.cpp @@ -37,6 +37,7 @@ #include "wx/statbox.h" #include "wx/notebook.h" +#include "wx/sysopt.h" #include "wx/msw/private.h" @@ -151,7 +152,6 @@ wxSize wxStaticBox::DoGetBestSize() const return wxSize(wBox, hBox); } -// Required for implementing dialog editors, please do not remove WXLRESULT wxStaticBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { switch ( nMsg ) @@ -159,15 +159,24 @@ WXLRESULT wxStaticBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPar #ifndef __WXWINCE__ case WM_NCHITTEST: { - int xPos = LOWORD(lParam); // horizontal position of cursor - int yPos = HIWORD(lParam); // vertical position of cursor + // This code breaks some other processing such as enter/leave tracking + // so it's off by default. + + static int s_useHTClient = -1; + if (s_useHTClient == -1) + s_useHTClient = wxSystemOptions::GetOptionInt(wxT("msw.staticbox.htclient")); + if (s_useHTClient == 1) + { + int xPos = LOWORD(lParam); // horizontal position of cursor + int yPos = HIWORD(lParam); // vertical position of cursor - ScreenToClient(&xPos, &yPos); + ScreenToClient(&xPos, &yPos); - // Make sure you can drag by the top of the groupbox, but let - // other (enclosed) controls get mouse events also - if ( yPos < 10 ) - return (long)HTCLIENT; + // Make sure you can drag by the top of the groupbox, but let + // other (enclosed) controls get mouse events also + if ( yPos < 10 ) + return (long)HTCLIENT; + } } break; #endif