partial implementation of wxTLW's decorations
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11683 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -57,6 +57,11 @@ public:
|
||||
SHADOW_HIGHLIGHT,
|
||||
SHADOW_IN,
|
||||
SHADOW_OUT,
|
||||
|
||||
// the titlebar background colours for the normal and focused states
|
||||
TITLEBAR,
|
||||
TITLEBAR_ACTIVE,
|
||||
TITLEBAR_TEXT,
|
||||
|
||||
MAX
|
||||
};
|
||||
|
@@ -245,6 +245,42 @@ public:
|
||||
wxCoord y,
|
||||
const wxMenuGeometryInfo& geomInfo) = 0;
|
||||
#endif
|
||||
// draw complete frame/dialog titlebar
|
||||
virtual void DrawFrameTitleBar(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
const wxString& title,
|
||||
const wxIcon& icon,
|
||||
int flags,
|
||||
int pressedButtons = 0) = 0;
|
||||
|
||||
// draw frame borders
|
||||
virtual void DrawFrameBorder(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags) = 0;
|
||||
|
||||
// draw frame titlebar background
|
||||
virtual void DrawFrameBackground(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags) = 0;
|
||||
|
||||
// draw frame title
|
||||
virtual void DrawFrameTitle(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
const wxString& title,
|
||||
int flags) = 0;
|
||||
|
||||
// draw frame icon
|
||||
virtual void DrawFrameIcon(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
const wxIcon& icon,
|
||||
int flags) = 0;
|
||||
|
||||
// draw frame buttons
|
||||
virtual void DrawFrameButton(wxDC& dc,
|
||||
wxCoord x, wxCoord y,
|
||||
int button,
|
||||
int flags = 0) = 0;
|
||||
|
||||
// misc functions
|
||||
// --------------
|
||||
|
||||
@@ -348,6 +384,15 @@ public:
|
||||
virtual wxMenuGeometryInfo *GetMenuGeometry(wxWindow *win,
|
||||
const wxMenu& menu) const = 0;
|
||||
#endif
|
||||
|
||||
// get client area rectangle of top level window (i.e. subtract
|
||||
// decorations from given rectangle)
|
||||
virtual wxRect GetFrameClientArea(const wxRect& rect, int flags) const = 0;
|
||||
// get size of whole top level window, given size of its client area size
|
||||
virtual wxSize GetFrameTotalSize(const wxSize& clientSize, int flags) const = 0;
|
||||
// get titlebar icon size
|
||||
virtual wxSize GetFrameIconSize() const = 0;
|
||||
|
||||
// virtual dtor for any base class
|
||||
virtual ~wxRenderer();
|
||||
|
||||
@@ -572,10 +617,41 @@ public:
|
||||
const wxMenuGeometryInfo& geomInfo)
|
||||
{ m_renderer->DrawMenuSeparator(dc, y, geomInfo); }
|
||||
#endif
|
||||
virtual void DrawFrameTitleBar(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
const wxString& title,
|
||||
const wxIcon& icon,
|
||||
int flags,
|
||||
int pressedButtons = 0)
|
||||
{ m_renderer->DrawFrameTitleBar(dc, rect, title, icon, flags, pressedButtons); }
|
||||
virtual void DrawFrameBorder(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags)
|
||||
{ m_renderer->DrawFrameBorder(dc, rect, flags); }
|
||||
virtual void DrawFrameBackground(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int flags)
|
||||
{ m_renderer->DrawFrameBackground(dc, rect, flags); }
|
||||
virtual void DrawFrameTitle(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
const wxString& title,
|
||||
int flags)
|
||||
{ m_renderer->DrawFrameTitle(dc, rect, title, flags); }
|
||||
virtual void DrawFrameIcon(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
const wxIcon& icon,
|
||||
int flags)
|
||||
{ m_renderer->DrawFrameIcon(dc, rect, icon, flags); }
|
||||
virtual void DrawFrameButton(wxDC& dc,
|
||||
wxCoord x, wxCoord y,
|
||||
int button,
|
||||
int flags = 0)
|
||||
{ m_renderer->DrawFrameButton(dc, x, y, button, flags); }
|
||||
|
||||
virtual void GetComboBitmaps(wxBitmap *bmpNormal,
|
||||
wxBitmap *bmpFocus,
|
||||
wxBitmap *bmpPressed,
|
||||
wxBitmap *bmpDisabled)
|
||||
wxBitmap *bmpDisabled) const
|
||||
{ m_renderer->GetComboBitmaps(bmpNormal, bmpFocus,
|
||||
bmpPressed, bmpDisabled); }
|
||||
|
||||
@@ -641,6 +717,13 @@ public:
|
||||
const wxMenu& menu) const
|
||||
{ return m_renderer->GetMenuGeometry(win, menu); }
|
||||
#endif
|
||||
virtual wxRect GetFrameClientArea(const wxRect& rect, int flags) const
|
||||
{ return m_renderer->GetFrameClientArea(rect, flags); }
|
||||
virtual wxSize GetFrameTotalSize(const wxSize& clientSize, int flags) const
|
||||
{ return m_renderer->GetFrameTotalSize(clientSize, flags); }
|
||||
virtual wxSize GetFrameIconSize() const
|
||||
{ return m_renderer->GetFrameIconSize(); }
|
||||
|
||||
protected:
|
||||
wxRenderer *m_renderer;
|
||||
};
|
||||
|
@@ -15,12 +15,33 @@
|
||||
#pragma interface "univtoplevel.h"
|
||||
#endif
|
||||
|
||||
#include "wx/univ/inpcons.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// frame decorations type flags used in wxRenderer and wxColourScheme
|
||||
enum
|
||||
{
|
||||
wxTOPLEVEL_BORDER = 0x00000001,
|
||||
wxTOPLEVEL_MAXIMIZED = 0x00000002,
|
||||
wxTOPLEVEL_TITLEBAR = 0x00000004,
|
||||
wxTOPLEVEL_RESIZEABLE = 0x00000008,
|
||||
wxTOPLEVEL_ICON = 0x00000010,
|
||||
wxTOPLEVEL_CLOSE_BUTTON = 0x00000020,
|
||||
wxTOPLEVEL_MAXIMIZE_BUTTON = 0x00000040,
|
||||
wxTOPLEVEL_MINIMIZE_BUTTON = 0x00000080,
|
||||
wxTOPLEVEL_RESTORE_BUTTON = 0x00000100,
|
||||
wxTOPLEVEL_HELP_BUTTON = 0x00000200,
|
||||
wxTOPLEVEL_ACTIVE = 0x00000400
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxTopLevelWindow
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxTopLevelWindow : public wxTopLevelWindowNative
|
||||
class WXDLLEXPORT wxTopLevelWindow : public wxTopLevelWindowNative
|
||||
{
|
||||
public:
|
||||
// construction
|
||||
@@ -48,15 +69,32 @@ public:
|
||||
|
||||
// implement base class pure virtuals
|
||||
virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
|
||||
virtual wxPoint GetClientAreaOrigin() const;
|
||||
virtual void DoGetClientSize(int *width, int *height) const;
|
||||
virtual void DoSetClientSize(int width, int height);
|
||||
virtual void SetIcon(const wxIcon& icon);
|
||||
|
||||
// implementation from now on
|
||||
// --------------------------
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxTopLevelWindow)
|
||||
|
||||
protected:
|
||||
// common part of all ctors
|
||||
void Init();
|
||||
|
||||
// return wxTOPLEVEL_xxx combination based on current state of the frame
|
||||
long GetDecorationsStyle() const;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxTopLevelWindow)
|
||||
DECLARE_EVENT_TABLE()
|
||||
void OnNcPaint(wxPaintEvent& event);
|
||||
|
||||
// TRUE if wxTLW should render decorations (aka titlebar) itself
|
||||
static int ms_drawDecorations;
|
||||
// true for currently active frame
|
||||
bool m_isActive:1;
|
||||
// version of icon for titlebar (16x16)
|
||||
wxIcon m_titlebarIcon;
|
||||
|
||||
};
|
||||
|
||||
#endif // __WX_UNIV_TOPLEVEL_H__
|
||||
|
Reference in New Issue
Block a user