Three more attempts to get metal look.

- Added a few flags for inheriting background.
     - Added wxWindow param to wxR::DrawBackground()
     - Added wxR::DrawButtonSurface()
     - Removed wxR::DrawBackground() from wxR::DrawButtonBorder()
     - Adde DrawMetal to Metal theme
  Fixed minor bug in wxGTK scrollbar.
  Changed code in wxX11 wxTLW so that startup flicker no
    longer occurs in wxFrame.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2002-04-14 14:42:43 +00:00
parent aaae829664
commit 193e19cfdf
23 changed files with 142 additions and 89 deletions

View File

@@ -109,6 +109,8 @@ protected:
long numArg = -1,
const wxString& strArg = wxEmptyString);
virtual wxSize DoGetBestClientSize() const;
virtual bool DoDrawBackground(wxDC& dc);
virtual void DoDraw(wxControlRenderer *renderer);
virtual bool CanBeHighlighted() const { return TRUE; }

View File

@@ -101,6 +101,8 @@ public:
// overridden base class virtuals
virtual bool IsPressed() const { return m_isPressed; }
virtual bool HasTransparentBackground() { return TRUE; }
protected:
virtual bool PerformAction(const wxControlAction& action,
long numArg = -1,

View File

@@ -69,7 +69,16 @@ public:
virtual void DrawBackground(wxDC& dc,
const wxColour& col,
const wxRect& rect,
int flags) = 0;
int flags,
wxWindow *window = NULL ) = 0;
// draw the button surface
virtual void DrawButtonSurface(wxDC& dc,
const wxColour& col,
const wxRect& rect,
int flags )
{ DrawBackground( dc, col, rect, flags ); }
// draw the label inside the given rectangle with the specified alignment
// and optionally emphasize the character with the given index
@@ -497,8 +506,9 @@ public:
virtual void DrawBackground(wxDC& dc,
const wxColour& col,
const wxRect& rect,
int flags)
{ m_renderer->DrawBackground(dc, col, rect, flags); }
int flags,
wxWindow *window = NULL )
{ m_renderer->DrawBackground(dc, col, rect, flags, window ); }
virtual void DrawLabel(wxDC& dc,
const wxString& label,
const wxRect& rect,

View File

@@ -63,6 +63,8 @@ public:
wxIcon GetIcon() const;
virtual bool HasTransparentBackground() { return TRUE; }
private:
virtual void DoDraw(wxControlRenderer *renderer);

View File

@@ -51,6 +51,8 @@ public:
// take account of this
virtual wxPoint GetBoxAreaOrigin() const;
virtual bool HasTransparentBackground() { return TRUE; }
protected:
// draw the control
virtual void DoDraw(wxControlRenderer *renderer);

View File

@@ -55,6 +55,8 @@ public:
virtual void SetLabel(const wxString& label);
virtual bool HasTransparentBackground() { return TRUE; }
protected:
// calculate the optimal size for the label
virtual wxSize DoGetBestClientSize() const;

View File

@@ -143,6 +143,8 @@ public:
virtual int GetMinWidth() const;
virtual int GetMinHeight() const;
virtual bool ProvidesBackground() { return TRUE; }
protected:
// handle titlebar button click event
virtual void ClickTitleBarButton(long button);

View File

@@ -171,6 +171,16 @@ public:
// control (e.g. a button, checkbox, ...)
virtual bool IsContainerWindow() 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() { 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; }
@@ -201,9 +211,6 @@ public:
// erase part of the control
virtual void EraseBackground(wxDC& dc, const wxRect& rect);
// see below
bool HasDialogBackground() { return m_hasDialogBackground; }
// overridden base class methods
// -----------------------------
@@ -270,10 +277,6 @@ protected:
// the renderer we use
wxRenderer *m_renderer;
// background like a dialog (e.g. wxStaticText,
// wxRadioButton), not with a surface (wxButton)
bool m_hasDialogBackground;
// background bitmap info
wxBitmap m_bitmapBg;
int m_alignBgBitmap;