// get the size of the border
wxRect GetBorderGeometry() const;
+ // returning TRUE from here ensures that we act as a container window for
+ // our children
+ virtual bool IsStaticBox() const { return TRUE; }
+
private:
DECLARE_DYNAMIC_CLASS(wxStaticBox)
};
bool UseFgCol() const { return m_hasFgCol; }
bool UseFont() const { return m_hasFont; }
+ // return TRUE if this window serves as a container for the other windows
+ // only and doesn't get any input itself
+ virtual bool IsStaticBox() const { return FALSE; }
+
// returns the (low level) renderer to use for drawing the control by
// querying the current theme
wxRenderer *GetRenderer() const { return m_renderer; }
// is the mouse currently inside the window?
bool m_isCurrent:1;
+#ifdef __WXMSW__
+ // override MSWWindowProc() to process WM_NCHITTEST
+ long MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
+#endif // __WXMSW__
+
private:
// the window scrollbars
wxScrollBar *m_scrollbarHorz,
}
break;
#endif // __WIN32__
-
- // unfortunately this doesn't really work as then window which
- // doesn't accept focus doesn't get any mouse events neither which
- // means it can't get any input at all
-#if 0 //def __WXUNIVERSAL__
- case WM_NCHITTEST:
- // we shouldn't allow the windows which don't want to get focus to
- // get it
- if ( !AcceptsFocus() )
- {
- rc.result = HTTRANSPARENT;
- processed = TRUE;
- }
- break;
-#endif // __WXUNIVERSAL__
}
if ( !processed )
#endif // wxUSE_MENUS
+// ----------------------------------------------------------------------------
+// MSW-specific section
+// ----------------------------------------------------------------------------
+
+#ifdef __WXMSW__
+
+#include "wx/msw/private.h"
+
+long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
+{
+ if ( message == WM_NCHITTEST )
+ {
+ // the windows which contain the other windows should let the mouse
+ // events through, otherwise a window inside a static box would
+ // never get any events at all
+ if ( IsStaticBox() )
+ {
+ return HTTRANSPARENT;
+ }
+ }
+
+ return wxWindowNative::MSWWindowProc(message, wParam, lParam);
+}
+
+#endif // __WXMSW__
+