#ifndef _WX_UNIV_WINDOW_H_
#define _WX_UNIV_WINDOW_H_
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma interface "univwindow.h"
-#endif
-
#include "wx/bitmap.h" // for m_bitmapBg
-class WXDLLEXPORT wxControlRenderer;
-class WXDLLEXPORT wxEventLoop;
-class WXDLLEXPORT wxMenu;
-class WXDLLEXPORT wxMenuBar;
-class WXDLLEXPORT wxRenderer;
-class WXDLLEXPORT wxScrollBar;
+class WXDLLIMPEXP_FWD_CORE wxControlRenderer;
+class WXDLLIMPEXP_FWD_CORE wxEventLoop;
+
+#if wxUSE_MENUS
+ class WXDLLIMPEXP_FWD_CORE wxMenu;
+ class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+#endif // wxUSE_MENUS
+
+class WXDLLIMPEXP_FWD_CORE wxRenderer;
+
+#if wxUSE_SCROLLBAR
+ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
+#endif // wxUSE_SCROLLBAR
#ifdef __WXX11__
#define wxUSE_TWO_WINDOWS 1
#define wxWindowNative wxWindowMac
#endif
-class WXDLLEXPORT wxWindow : public wxWindowNative
+class WXDLLIMPEXP_CORE wxWindow : public wxWindowNative
{
public:
// ctors and create functions
long style = 0,
const wxString& name = wxPanelNameStr);
+ virtual ~wxWindow();
+
// background pixmap support
// -------------------------
virtual int GetScrollThumb(int orient) const;
virtual int GetScrollRange(int orient) const;
virtual void ScrollWindow(int dx, int dy,
- const wxRect* rect = (wxRect *) NULL);
+ const wxRect* rect = NULL);
// take into account the borders here
virtual wxPoint GetClientAreaOrigin() const;
// NB: all menu related functions are implemented in menu.cpp
#if wxUSE_MENUS
- virtual bool DoPopupMenu(wxMenu *menu, int x, int y);
-
// this is wxUniv-specific private method to be used only by wxMenu
void DismissPopupMenu();
#endif // wxUSE_MENUS
// set the "highlighted" flag and return true if it changed
virtual bool SetCurrent(bool doit = true);
+#if wxUSE_SCROLLBAR
// get the scrollbar (may be NULL) for the given orientation
wxScrollBar *GetScrollbar(int orient) const
{
return orient & wxVERTICAL ? m_scrollbarVert : m_scrollbarHorz;
}
+#endif // wxUSE_SCROLLBAR
// methods used by wxColourScheme to choose the colours for this window
// --------------------------------------------------------------------
// controls only
virtual bool IsCanvasWindow() const { return false; }
- // 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; }
-
- // to be used with function above: transparent windows get
- // their background from parents that return true here,
- // so this is mostly for wxPanel, wxTopLevelWindow etc.
- virtual bool ProvidesBackground() const { return false; }
-
// return true if this control can be highlighted when the mouse is over
// it (the theme decides itself whether it is really highlighted or not)
virtual bool CanBeHighlighted() const { return false; }
// return true if we should use the colours/fonts returned by the
// corresponding GetXXX() methods instead of the default ones
- bool UseBgCol() const { return m_hasBgCol; }
bool UseFgCol() const { return m_hasFgCol; }
bool UseFont() const { return m_hasFont; }
// erase part of the control
virtual void EraseBackground(wxDC& dc, const wxRect& rect);
-
+
// overridden base class methods
// -----------------------------
// should we use the standard control colours or not?
virtual bool ShouldInheritColours() const { return false; }
+ virtual bool IsClientAreaChild(const wxWindow *child) const
+ {
+#if wxUSE_SCROLLBAR
+ if ( child == (wxWindow*)m_scrollbarHorz ||
+ child == (wxWindow*)m_scrollbarVert )
+ return false;
+#endif
+ return wxWindowNative::IsClientAreaChild(child);
+ }
+
protected:
// common part of all ctors
void Init();
- // overridden base class virtuals
+#if wxUSE_MENUS
+ virtual bool DoPopupMenu(wxMenu *menu, int x, int y);
+#endif // wxUSE_MENUS
// we deal with the scrollbars in these functions
virtual void DoSetClientSize(int width, int height);
virtual wxSize DoGetBestClientSize() const;
virtual wxSize DoGetBestSize() const;
+ // override the base class method to return the size of the window borders
+ virtual wxSize DoGetBorderSize() const;
+
// adjust the size of the window to take into account its borders
wxSize AdjustSize(const wxSize& size) const;
// the renderer we use
wxRenderer *m_renderer;
-
+
// background bitmap info
wxBitmap m_bitmapBg;
int m_alignBgBitmap;
wxStretch m_stretchBgBitmap;
-
+
// old size
wxSize m_oldSize;
bool m_isCurrent:1;
#ifdef __WXMSW__
+public:
// override MSWWindowProc() to process WM_NCHITTEST
WXLRESULT MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
#endif // __WXMSW__
private:
+
+#if wxUSE_SCROLLBAR
// the window scrollbars
wxScrollBar *m_scrollbarHorz,
*m_scrollbarVert;
+#endif // wxUSE_SCROLLBAR
#if wxUSE_MENUS
// the current modal event loop for the popup menu we show or NULL
};
#endif // _WX_UNIV_WINDOW_H_
-