// Modified by: Ron Lee
// Created: 01/02/97
// RCS-ID: $Id$
-// Copyright: (c) wxWidgets team
+// Copyright: (c) Vadim Zeitlin
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_WINDOW_H_BASE_
#define _WX_WINDOW_H_BASE_
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma interface "windowbase.h"
-#endif
-
// ----------------------------------------------------------------------------
// headers which we must include here
// ----------------------------------------------------------------------------
// 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
// window attributes
// -----------------
- // NB: in future versions of wxWidgets Set/GetTitle() will only work
- // with the top level windows (such as dialogs and frames) and
- // Set/GetLabel() only with the other ones (i.e. all controls).
-
- // the title (or label, see below) of the window: the text which the
- // window shows
- virtual void SetTitle( const wxString& WXUNUSED(title) ) {}
- virtual wxString GetTitle() const { return wxEmptyString; }
-
// label is just the same as the title (but for, e.g., buttons it
- // makes more sense to speak about labels)
- virtual void SetLabel(const wxString& label) { SetTitle(label); }
- virtual wxString GetLabel() const { return GetTitle(); }
+ // makes more sense to speak about labels), title access
+ // is available from wxTLW classes only (frames, dialogs)
+ virtual void SetLabel(const wxString& label) = 0;
+ virtual wxString GetLabel() const = 0;
// the window name is used for ressource setting in X, it is not the
// same as the window title/label
// the generic centre function - centers the window on parent by`
// default or on screen if it doesn't have parent or
// wxCENTER_ON_SCREEN flag is given
- void Centre( int direction = wxBOTH );
- void Center( int direction = wxBOTH ) { Centre(direction); }
-
- // centre on screen (only works for top level windows)
- void CentreOnScreen(int dir = wxBOTH) { Centre(dir | wxCENTER_ON_SCREEN); }
- void CenterOnScreen(int dir = wxBOTH) { CentreOnScreen(dir); }
+ void Centre(int dir = wxBOTH) { DoCentre(dir); }
+ void Center(int dir = wxBOTH) { DoCentre(dir); }
// centre with respect to the the parent window
- void CentreOnParent(int dir = wxBOTH) { Centre(dir | wxCENTER_FRAME); }
+ void CentreOnParent(int dir = wxBOTH) { DoCentre(dir); }
void CenterOnParent(int dir = wxBOTH) { CentreOnParent(dir); }
// set window size to wrap around its children
// 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 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
// ---------------------------
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)
void SetHelpTextForId(const wxString& text);
// get the help string associated with this window (may be empty)
wxString GetHelpText() const;
+#else
+ // silently ignore SetHelpText() calls
+ void SetHelpText(const wxString& WXUNUSED(text)) { }
+ void SetHelpTextForId(const wxString& WXUNUSED(text)) { }
#endif // wxUSE_HELP
// tooltips
void DeleteRelatedConstraints();
void ResetConstraints();
- // these methods may be overriden for special layout algorithms
+ // these methods may be overridden for special layout algorithms
virtual void SetConstraintSizes(bool recurse = true);
virtual bool LayoutPhase1(int *noChanges);
virtual bool LayoutPhase2(int *noChanges);
// 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);
// same size as it would have after a call to Fit()
virtual wxSize DoGetBestSize() const;
+ // called from DoGetBestSize() to convert best virtual size (returned by
+ // the window sizer) to the best size for the window itself; this is
+ // overridden at wxScrolledWindow level to clump down virtual size to real
+ virtual wxSize GetWindowSizeForVirtualSize(const wxSize& size) const
+ {
+ return size;
+ }
+
// this is the virtual function to be overriden in any derived class which
// wants to change how SetSize() or Move() works - it is called by all
// versions of these functions in the base class
// arrange themselves inside the given rectangle
virtual void DoMoveWindow(int x, int y, int width, int height) = 0;
+ // centre the window in the specified direction on parent, note that
+ // wxCENTRE_ON_SCREEN shouldn't be specified here, it only makes sense for
+ // TLWs
+ virtual void DoCentre(int dir);
+
#if wxUSE_TOOLTIPS
virtual void DoSetToolTip( wxToolTip *tip );
#endif // wxUSE_TOOLTIPS
// implements the window variants
virtual void DoSetWindowVariant( wxWindowVariant variant ) ;
+ // Reserved for future use
+ void* m_windowReserved;
+
private:
// contains the last id generated by NewControlId
static int ms_lastControlId;
#include "wx/msw/window.h"
#elif defined(__WXMOTIF__)
#include "wx/motif/window.h"
-#elif defined(__WXGTK__)
+#elif defined(__WXGTK20__)
#ifdef __WXUNIVERSAL__
#define wxWindowNative wxWindowGTK
#else // !wxUniv
#define wxWindowGTK wxWindow
#endif // wxUniv
#include "wx/gtk/window.h"
+#elif defined(__WXGTK__)
+ #ifdef __WXUNIVERSAL__
+ #define wxWindowNative wxWindowGTK
+ #else // !wxUniv
+ #define wxWindowGTK wxWindow
+ #endif // wxUniv
+ #include "wx/gtk1/window.h"
#elif defined(__WXX11__)
#ifdef __WXUNIVERSAL__
#define wxWindowNative wxWindowX11
#endif // wxUSE_ACCESSIBILITY
-#endif
- // _WX_WINDOW_H_BASE_
-
+#endif // _WX_WINDOW_H_BASE_