// Modified by: Ron Lee
// Created: 01/02/97
// RCS-ID: $Id$
-// Copyright: (c) wxWidgets team
+// Copyright: (c) Vadim Zeitlin
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// compiled in - it should only be used when building real wxFoo
#ifdef __WXUNIVERSAL__
#define wxUSE_MENUS_NATIVE 0
-#else // __WXMSW__
+#else // !__WXUNIVERSAL__
#define wxUSE_MENUS_NATIVE wxUSE_MENUS
-#endif // __WXUNIVERSAL__/__WXMSW__
+#endif // __WXUNIVERSAL__/!__WXUNIVERSAL__
// ----------------------------------------------------------------------------
// forward declarations
class WXDLLEXPORT wxAccessible;
#endif
+class WXDLLEXPORT wxWindowExtraData;
+
// ----------------------------------------------------------------------------
// helper stuff used by wxWindow
// ----------------------------------------------------------------------------
// global variables
// ----------------------------------------------------------------------------
-WXDLLEXPORT_DATA(extern wxWindowList) wxTopLevelWindows;
+extern WXDLLEXPORT_DATA(wxWindowList) wxTopLevelWindows;
// ----------------------------------------------------------------------------
// wxWindowBase is the base class for all GUI controls/widgets, this is the public
// Override these methods for windows that have a virtual size
// independent of their client size. eg. the virtual area of a
- // wxScrolledWindow. Default is to alias VirtualSize to ClientSize.
+ // wxScrolledWindow.
virtual void DoSetVirtualSize( int x, int y );
- virtual wxSize DoGetVirtualSize() const; // { return m_virtualSize; }
+ virtual wxSize DoGetVirtualSize() const;
// Return the largest of ClientSize and BestSize (as determined
// by a sizer, interior children, or other means)
virtual bool Enable( bool enable = true );
bool Disable() { return Enable(false); }
- bool IsShown() const { return m_isShown; }
- bool IsEnabled() const { return m_isEnabled; }
+ virtual bool IsShown() const { return m_isShown; }
+ virtual bool IsEnabled() const { return m_isEnabled; }
// get/set window style (setting style won't update the window and so
// is only useful for internal usage)
virtual void SetThemeEnabled(bool enableTheme) { m_themeEnabled = enableTheme; }
virtual bool GetThemeEnabled() const { return m_themeEnabled; }
- // Returns true if this class should have the background colour
- // changed to match the parent window's theme. For example when a
- // page is added to a notebook it and its children may need to have
- // the colours adjusted depending on the current theme settings, but
- // not all windows/controls can do this without looking wrong.
- virtual void ApplyParentThemeBackground(const wxColour& WXUNUSED(bg))
- { /* do nothing */ }
-
// focus and keyboard handling
// ---------------------------
// find window among the descendants of this one either by id or by
// name (return NULL if not found)
- wxWindow *FindWindow( long winid );
- wxWindow *FindWindow( const wxString& name );
+ wxWindow *FindWindow(long winid) const;
+ wxWindow *FindWindow(const wxString& name) const;
// Find a window among any window (all return NULL if not found)
static wxWindow *FindWindowById( long winid, const wxWindow *parent = NULL );
const wxRect *rect = (const wxRect *) NULL ) = 0;
// a less awkward wrapper for Refresh
- void RefreshRect(const wxRect& rect) { Refresh(true, &rect); }
+ void RefreshRect(const wxRect& rect, bool eraseBackground = true)
+ {
+ Refresh(eraseBackground, &rect);
+ }
// repaint all invalid areas of the window immediately
virtual void Update() { }
m_inheritBgCol = false;
}
wxColour GetBackgroundColour() const;
-
- // if the window shouldn't inherit its colour from the parent, override
- // this function to return true
- //
- // this is currently only used by wxMSW and wxUniv but should be useful for
- // the other ports too
- virtual bool ProvidesBackground() const { return false; }
+ bool InheritsBackgroundColour() const
+ {
+ return m_inheritBgCol;
+ }
+ bool UseBgCol() const
+ {
+ return m_hasBgCol;
+ }
virtual bool SetForegroundColour(const wxColour& colour);
void SetOwnForegroundColour(const wxColour& colour)
virtual bool SetBackgroundStyle(wxBackgroundStyle style) { m_backgroundStyle = style; return true; }
virtual wxBackgroundStyle GetBackgroundStyle() const { return m_backgroundStyle; }
+ // returns true if the control has "transparent" areas such as a
+ // wxStaticText and wxCheckBox and the background should be adapted
+ // from a parent window
+ virtual bool HasTransparentBackground() { return false; }
+
// set/retrieve the font for the window (SetFont() returns true if the
// font really changed)
virtual bool SetFont(const wxFont& font) = 0;
// behaviour in the most common case
virtual bool ShouldInheritColours() const { return false; }
+ // Reserved for future use
+ virtual void ReservedWindowFunc1() {}
+ virtual void ReservedWindowFunc2() {}
+ virtual void ReservedWindowFunc3() {}
+ virtual void ReservedWindowFunc4() {}
+ virtual void ReservedWindowFunc5() {}
+ virtual void ReservedWindowFunc6() {}
+ virtual void ReservedWindowFunc7() {}
+ virtual void ReservedWindowFunc8() {}
+ virtual void ReservedWindowFunc9() {}
+
protected:
// event handling specific to wxWindow
virtual bool TryValidator(wxEvent& event);
// implements the window variants
virtual void DoSetWindowVariant( wxWindowVariant variant ) ;
+ // Was a reserved pointer in 2.6.0, now used to hold extra data members
+ // without breaking compatibility.
+ wxWindowExtraData* m_extraData;
+
private:
// contains the last id generated by NewControlId
static int ms_lastControlId;
// Find the wxWindow at the current mouse position, also returning the mouse
// position.
-WXDLLEXPORT extern wxWindow* wxFindWindowAtPointer(wxPoint& pt);
+extern WXDLLEXPORT wxWindow* wxFindWindowAtPointer(wxPoint& pt);
// Get the current mouse position.
-WXDLLEXPORT extern wxPoint wxGetMousePosition();
+extern WXDLLEXPORT wxPoint wxGetMousePosition();
// get the currently active window of this application or NULL
-WXDLLEXPORT extern wxWindow *wxGetActiveWindow();
+extern WXDLLEXPORT wxWindow *wxGetActiveWindow();
// get the (first) top level parent window
WXDLLEXPORT wxWindow* wxGetTopLevelParent(wxWindow *win);