*h = s.y;
}
+ // Determine the best size in the other direction if one of them is
+ // fixed. This is used with windows that can wrap their contents and
+ // returns input-independent best size for the others.
+ int GetBestHeight(int width) const;
+ int GetBestWidth(int height) const;
+
+
void SetScrollHelper( wxScrollHelper *sh ) { m_scrollHelper = sh; }
wxScrollHelper *GetScrollHelper() { return m_scrollHelper; }
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 HasExtraStyle(int exFlag) const { return (m_exStyle & exFlag) != 0; }
+#if WXWIN_COMPATIBILITY_2_8
// make the window modal (all other windows unresponsive)
- virtual void MakeModal(bool modal = true);
-
+ wxDEPRECATED( virtual void MakeModal(bool modal = true) );
+#endif
// (primitive) theming support
// ---------------------------
// is this window a top level one?
virtual bool IsTopLevel() const;
+ // is this window a child or grand child of this one (inside the same
+ // TLW)?
+ bool IsDescendant(wxWindowBase* win) const;
+
// it doesn't really change parent, use Reparent() instead
- void SetParent( wxWindowBase *parent ) { m_parent = (wxWindow *)parent; }
+ void SetParent( wxWindowBase *parent );
// change the real parent of this window, return true if the parent
// was changed, false otherwise (error or newParent == oldParent)
virtual bool Reparent( wxWindowBase *newParent );
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); }
// 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
// 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
+ // These two methods can be overridden to implement intelligent
+ // width-for-height and/or height-for-width best size determination for the
+ // window. By default the fixed best size is used.
+ virtual int DoGetBestClientHeight(int WXUNUSED(width)) const
+ { return wxDefaultCoord; }
+ virtual int DoGetBestClientWidth(int WXUNUSED(height)) const
+ { return wxDefaultCoord; }
+
+ // 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 and wxUniv 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"