// valid values for Show/HideWithEffect()
enum wxShowEffect
{
+ wxSHOW_EFFECT_NONE,
wxSHOW_EFFECT_ROLL_TO_LEFT,
wxSHOW_EFFECT_ROLL_TO_RIGHT,
wxSHOW_EFFECT_ROLL_TO_TOP,
// ----------------------------------------------------------------------------
extern WXDLLIMPEXP_DATA_CORE(wxWindowList) wxTopLevelWindows;
-extern WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete;
+
+// declared here for compatibility only, main declaration is in wx/app.h
+extern WXDLLIMPEXP_DATA_BASE(wxList) wxPendingDelete;
// ----------------------------------------------------------------------------
// wxWindowBase is the base class for all GUI controls/widgets, this is the public
// Create()
wxWindowBase() ;
- // pseudo ctor (can't be virtual, called from ctor)
- bool CreateBase(wxWindowBase *parent,
- wxWindowID winid,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxPanelNameStr);
-
virtual ~wxWindowBase();
// deleting the window
// acceptable size using which it will still look "nice" in
// most situations)
wxSize GetBestSize() const;
-
+
void GetBestSize(int *w, int *h) const
{
wxSize s = GetBestSize();
void Centre(int dir = wxBOTH) { DoCentre(dir); }
void Center(int dir = wxBOTH) { DoCentre(dir); }
- // centre with respect to the the parent window
+ // centre with respect to the parent window
void CentreOnParent(int dir = wxBOTH) { DoCentre(dir); }
void CenterOnParent(int dir = wxBOTH) { CentreOnParent(dir); }
// Call these to override what GetBestSize() returns. This
- // method is only virtual because it is overriden in wxTLW
+ // method is only virtual because it is overridden in wxTLW
// as a different API for SetSizeHints().
virtual void SetMinSize(const wxSize& minSize);
virtual void SetMaxSize(const wxSize& maxSize);
// windows this is just the client area of the window, but for
// some like scrolled windows it is more or less independent of
// the screen window size. You may override the DoXXXVirtual
- // methods below for classes where that is is the case.
+ // methods below for classes where that is the case.
void SetVirtualSize( const wxSize &size ) { DoSetVirtualSize( size.x, size.y ); }
void SetVirtualSize( int x, int y ) { DoSetVirtualSize( x, y ); }
// tells the item how much more space there is available in the opposite
// direction (-1 if unknown).
virtual bool
- InformFirstDirection(int WXUNUSED(direction),
- int WXUNUSED(size),
- int WXUNUSED(availableOtherDir))
- {
- return false;
- }
+ InformFirstDirection(int direction, int size, int availableOtherDir);
// sends a size event to the window using its current size -- this has an
// effect of refreshing the window layout
virtual void SetWindowStyleFlag( long style ) { m_windowStyle = style; }
virtual long GetWindowStyleFlag() const { return m_windowStyle; }
- // just some (somewhat shorter) synonims
+ // just some (somewhat shorter) synonyms
void SetWindowStyle( long style ) { SetWindowStyleFlag(style); }
long GetWindowStyle() const { return GetWindowStyleFlag(); }
bool ProcessWindowEvent(wxEvent& event)
{ return GetEventHandler()->ProcessEvent(event); }
+ // Call GetEventHandler()->ProcessEventLocally(): this should be used
+ // instead of calling ProcessEventLocally() directly on the window
+ // itself as this wouldn't take any pushed event handlers into account
+ // correctly
+ bool ProcessWindowEventLocally(wxEvent& event)
+ { return GetEventHandler()->ProcessEventLocally(event); }
+
// Process an event by calling GetEventHandler()->ProcessEvent() and
// handling any exceptions thrown by event handlers. It's mostly useful
// when processing wx events when called from C code (e.g. in GTK+
// The same holds for all other wxEvtHandler functions.
using wxEvtHandler::ProcessEvent;
+ using wxEvtHandler::ProcessEventLocally;
#if wxUSE_THREADS
using wxEvtHandler::ProcessThreadEvent;
#endif
// dialog units translations
// -------------------------
- wxPoint ConvertPixelsToDialog( const wxPoint& pt );
- wxPoint ConvertDialogToPixels( const wxPoint& pt );
- wxSize ConvertPixelsToDialog( const wxSize& sz )
+ wxPoint ConvertPixelsToDialog( const wxPoint& pt ) const;
+ wxPoint ConvertDialogToPixels( const wxPoint& pt ) const;
+ wxSize ConvertPixelsToDialog( const wxSize& sz ) const
{
wxPoint pt(ConvertPixelsToDialog(wxPoint(sz.x, sz.y)));
return wxSize(pt.x, pt.y);
}
- wxSize ConvertDialogToPixels( const wxSize& sz )
+ wxSize ConvertDialogToPixels( const wxSize& sz ) const
{
wxPoint pt(ConvertDialogToPixels(wxPoint(sz.x, sz.y)));
wxColour GetForegroundColour() const;
// Set/get the background style.
- virtual bool SetBackgroundStyle(wxBackgroundStyle style)
- { m_backgroundStyle = style; return true; }
+ virtual bool SetBackgroundStyle(wxBackgroundStyle style);
wxBackgroundStyle GetBackgroundStyle() const
{ return m_backgroundStyle; }
// from a parent window
virtual bool HasTransparentBackground() { return false; }
+ // Returns true if background transparency is supported for this
+ // window, i.e. if calling SetBackgroundStyle(wxBG_STYLE_TRANSPARENT)
+ // has a chance of succeeding. If reason argument is non-NULL, returns a
+ // user-readable explanation of why it isn't supported if the return
+ // value is false.
+ virtual bool IsTransparentBackgroundSupported(wxString* reason = NULL) const;
+
// set/retrieve the font for the window (SetFont() returns true if the
// font really changed)
virtual bool SetFont(const wxFont& font) = 0;
// simply return the id of the selected item or wxID_NONE without
// generating any events
- int GetPopupMenuSelectionFromUser(wxMenu& menu, const wxPoint& pos)
+ int GetPopupMenuSelectionFromUser(wxMenu& menu,
+ const wxPoint& pos = wxDefaultPosition)
{ return DoGetPopupMenuSelectionFromUser(menu, pos.x, pos.y); }
int GetPopupMenuSelectionFromUser(wxMenu& menu, int x, int y)
{ return DoGetPopupMenuSelectionFromUser(menu, x, y); }
// scrollbars
// ----------
- // does the window have the scrollbar for this orientation?
- bool HasScrollbar(int orient) const
+ // can the window have the scrollbar in this orientation?
+ bool CanScroll(int orient) const
{
return (m_windowStyle &
(orient == wxHORIZONTAL ? wxHSCROLL : wxVSCROLL)) != 0;
}
+ // does the window have the scrollbar in this orientation?
+ bool HasScrollbar(int orient) const;
+
// configure the window scrollbars
virtual void SetScrollbar( int orient,
int pos,
// get the associated tooltip or NULL if none
wxToolTip* GetToolTip() const { return m_tooltip; }
wxString GetToolTipText() const;
+
+ // Use the same tool tip as the given one (which can be NULL to indicate
+ // that no tooltip should be used) for this window. This is currently only
+ // used by wxCompositeWindow::DoSetToolTip() implementation and is not part
+ // of the public wx API.
+ //
+ // Returns true if tip was valid and we copied it or false if it was NULL
+ // and we reset our own tooltip too.
+ bool CopyToolTip(wxToolTip *tip);
#else // !wxUSE_TOOLTIPS
// make it much easier to compile apps in an environment
// that doesn't support tooltips, such as PocketPC
// virtual function for implementing internal idle
// behaviour
- virtual void OnInternalIdle() {}
+ virtual void OnInternalIdle();
- // call internal idle recursively
-// void ProcessInternalIdle() ;
+ // Send idle event to window and all subwindows
+ // Returns true if more idle time is requested.
+ virtual bool SendIdleEvents(wxIdleEvent& event);
// get the handle of the window for the underlying window system: this
// is only used for wxWin itself or for user code which wants to call
// used only by Windows
virtual bool CanApplyThemeBorder() const { return true; }
+ // returns the main window of composite control; this is the window
+ // that FindFocus returns if the focus is in one of composite control's
+ // windows
+ virtual wxWindow *GetMainWindowOfCompositeControl()
+ { return (wxWindow*)this; }
+
+ // If this function returns true, keyboard navigation events shouldn't
+ // escape from it. A typical example of such "navigation domain" is a top
+ // level window because pressing TAB in one of them must not transfer focus
+ // to a different top level window. But it's not limited to them, e.g. MDI
+ // children frames are not top level windows (and their IsTopLevel()
+ // returns false) but still are self-contained navigation domains as well.
+ virtual bool IsTopNavigationDomain() const { return false; }
+
+
protected:
+ // helper for the derived class Create() methods: the first overload, with
+ // validator parameter, should be used for child windows while the second
+ // one is used for top level ones
+ bool CreateBase(wxWindowBase *parent,
+ wxWindowID winid,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxPanelNameStr);
+
+ bool CreateBase(wxWindowBase *parent,
+ wxWindowID winid,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxString& name);
+
// event handling specific to wxWindow
virtual bool TryBefore(wxEvent& event);
virtual bool TryAfter(wxEvent& event);
// to true
void SendDestroyEvent();
- // returns the main window of composite control; this is the window
- // that FindFocus returns if the focus is in one of composite control's
- // windows
- virtual wxWindow *GetMainWindowOfCompositeControl()
- { return (wxWindow*)this; }
-
// this method should be implemented to use operating system specific code
// to really enable/disable the widget, it will only be called when we
// really need to enable/disable window and so no additional checks on the
// (GetBorderSize() will be used to add them)
virtual wxSize DoGetBestClientSize() const { return wxDefaultSize; }
- // this is the virtual function to be overriden in any derived class which
+ // this is the virtual function to be overridden 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
virtual void DoSetSize(int x, int y,
// of the left and the right border in the x component of the returned size
// and the sum of the heights of the top and bottom borders in the y one
//
- // NB: this is new/temporary API only implemented by wxMSW so far and
- // subject to change, don't use
- virtual wxSize DoGetBorderSize() const
- {
- wxFAIL_MSG( "must be overridden if called" );
-
- return wxDefaultSize;
- }
+ // NB: this is currently only implemented properly for wxMSW, wxGTK and
+ // wxUniv and doesn't behave correctly in the presence of scrollbars in
+ // the other ports
+ virtual wxSize DoGetBorderSize() const;
// move the window to the specified location and resize it: this is called
// from both DoSetSize() and DoSetClientSize() and would usually just
// explicitly disabled with SetAutoLayout(false)
void InternalOnSize(wxSizeEvent& event);
+ // base for dialog unit conversion, i.e. average character size
+ wxSize GetDlgUnitBase() const;
// the stack of windows which have captured the mouse
static struct WXDLLIMPEXP_FWD_CORE wxWindowNext *ms_winCaptureNext;
// ----------------------------------------------------------------------------
// include the declaration of the platform-specific class
-#if defined(__WXPALMOS__)
- #ifdef __WXUNIVERSAL__
- #define wxWindowNative wxWindowPalm
- #else // !wxUniv
- #define wxWindowPalm wxWindow
- #endif // wxUniv/!wxUniv
- #include "wx/palmos/window.h"
-#elif defined(__WXMSW__)
+#if defined(__WXMSW__)
#ifdef __WXUNIVERSAL__
#define wxWindowNative wxWindowMSW
#else // !wxUniv
#define wxWindowX11 wxWindow
#endif // wxUniv
#include "wx/x11/window.h"
-#elif defined(__WXMGL__)
- #define wxWindowNative wxWindowMGL
- #include "wx/mgl/window.h"
#elif defined(__WXDFB__)
#define wxWindowNative wxWindowDFB
#include "wx/dfb/window.h"