X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e3c55eb333d273693ed2aea23da909b33e9e5484..5f7348ce627157e21bec507623ebd31c1e9dc762:/src/msw/statbmp.cpp diff --git a/src/msw/statbmp.cpp b/src/msw/statbmp.cpp index e4b2399c4a..61d7b01e76 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 // --------------------------------------------------------------------------- @@ -206,7 +208,11 @@ void wxStaticBitmap::Free() wxSize wxStaticBitmap::DoGetBestSize() const { if ( ImageIsOk() ) - return wxSize(m_image->GetWidth(), m_image->GetHeight()); + { + wxSize best(m_image->GetWidth(), m_image->GetHeight()); + CacheBestSize(best); + return best; + } // this is completely arbitrary return wxSize(16, 16); @@ -262,4 +268,28 @@ void wxStaticBitmap::SetImageNoCopy( wxGDIImage* image) ::InvalidateRect(GetHwndOf(GetParent()), &rect, TRUE); } +WXLRESULT wxStaticBitmap::MSWWindowProc(WXUINT nMsg, + WXWPARAM wParam, + WXLPARAM lParam) +{ +#ifndef __WXWINCE__ + 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); +} + #endif // wxUSE_STATBMP +