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:
@@ -81,6 +81,10 @@ public:
|
|||||||
|
|
||||||
virtual void InitDialog();
|
virtual void InitDialog();
|
||||||
|
|
||||||
|
#ifdef __WXUNIV__
|
||||||
|
virtual bool ProvidesBackground() { return TRUE; }
|
||||||
|
#endif
|
||||||
|
|
||||||
WX_DECLARE_CONTROL_CONTAINER();
|
WX_DECLARE_CONTROL_CONTAINER();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@@ -109,6 +109,8 @@ protected:
|
|||||||
long numArg = -1,
|
long numArg = -1,
|
||||||
const wxString& strArg = wxEmptyString);
|
const wxString& strArg = wxEmptyString);
|
||||||
virtual wxSize DoGetBestClientSize() const;
|
virtual wxSize DoGetBestClientSize() const;
|
||||||
|
|
||||||
|
virtual bool DoDrawBackground(wxDC& dc);
|
||||||
virtual void DoDraw(wxControlRenderer *renderer);
|
virtual void DoDraw(wxControlRenderer *renderer);
|
||||||
|
|
||||||
virtual bool CanBeHighlighted() const { return TRUE; }
|
virtual bool CanBeHighlighted() const { return TRUE; }
|
||||||
|
@@ -101,6 +101,8 @@ public:
|
|||||||
// overridden base class virtuals
|
// overridden base class virtuals
|
||||||
virtual bool IsPressed() const { return m_isPressed; }
|
virtual bool IsPressed() const { return m_isPressed; }
|
||||||
|
|
||||||
|
virtual bool HasTransparentBackground() { return TRUE; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool PerformAction(const wxControlAction& action,
|
virtual bool PerformAction(const wxControlAction& action,
|
||||||
long numArg = -1,
|
long numArg = -1,
|
||||||
|
@@ -69,7 +69,16 @@ public:
|
|||||||
virtual void DrawBackground(wxDC& dc,
|
virtual void DrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect,
|
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
|
// draw the label inside the given rectangle with the specified alignment
|
||||||
// and optionally emphasize the character with the given index
|
// and optionally emphasize the character with the given index
|
||||||
@@ -497,8 +506,9 @@ public:
|
|||||||
virtual void DrawBackground(wxDC& dc,
|
virtual void DrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
int flags)
|
int flags,
|
||||||
{ m_renderer->DrawBackground(dc, col, rect, flags); }
|
wxWindow *window = NULL )
|
||||||
|
{ m_renderer->DrawBackground(dc, col, rect, flags, window ); }
|
||||||
virtual void DrawLabel(wxDC& dc,
|
virtual void DrawLabel(wxDC& dc,
|
||||||
const wxString& label,
|
const wxString& label,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
|
@@ -63,6 +63,8 @@ public:
|
|||||||
|
|
||||||
wxIcon GetIcon() const;
|
wxIcon GetIcon() const;
|
||||||
|
|
||||||
|
virtual bool HasTransparentBackground() { return TRUE; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void DoDraw(wxControlRenderer *renderer);
|
virtual void DoDraw(wxControlRenderer *renderer);
|
||||||
|
|
||||||
|
@@ -51,6 +51,8 @@ public:
|
|||||||
// take account of this
|
// take account of this
|
||||||
virtual wxPoint GetBoxAreaOrigin() const;
|
virtual wxPoint GetBoxAreaOrigin() const;
|
||||||
|
|
||||||
|
virtual bool HasTransparentBackground() { return TRUE; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// draw the control
|
// draw the control
|
||||||
virtual void DoDraw(wxControlRenderer *renderer);
|
virtual void DoDraw(wxControlRenderer *renderer);
|
||||||
|
@@ -55,6 +55,8 @@ public:
|
|||||||
|
|
||||||
virtual void SetLabel(const wxString& label);
|
virtual void SetLabel(const wxString& label);
|
||||||
|
|
||||||
|
virtual bool HasTransparentBackground() { return TRUE; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// calculate the optimal size for the label
|
// calculate the optimal size for the label
|
||||||
virtual wxSize DoGetBestClientSize() const;
|
virtual wxSize DoGetBestClientSize() const;
|
||||||
|
@@ -143,6 +143,8 @@ public:
|
|||||||
virtual int GetMinWidth() const;
|
virtual int GetMinWidth() const;
|
||||||
virtual int GetMinHeight() const;
|
virtual int GetMinHeight() const;
|
||||||
|
|
||||||
|
virtual bool ProvidesBackground() { return TRUE; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// handle titlebar button click event
|
// handle titlebar button click event
|
||||||
virtual void ClickTitleBarButton(long button);
|
virtual void ClickTitleBarButton(long button);
|
||||||
|
@@ -171,6 +171,16 @@ public:
|
|||||||
// control (e.g. a button, checkbox, ...)
|
// control (e.g. a button, checkbox, ...)
|
||||||
virtual bool IsContainerWindow() const { return FALSE; }
|
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
|
// 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)
|
// it (the theme decides itself whether it is really highlighted or not)
|
||||||
virtual bool CanBeHighlighted() const { return FALSE; }
|
virtual bool CanBeHighlighted() const { return FALSE; }
|
||||||
@@ -201,9 +211,6 @@ public:
|
|||||||
// erase part of the control
|
// erase part of the control
|
||||||
virtual void EraseBackground(wxDC& dc, const wxRect& rect);
|
virtual void EraseBackground(wxDC& dc, const wxRect& rect);
|
||||||
|
|
||||||
// see below
|
|
||||||
bool HasDialogBackground() { return m_hasDialogBackground; }
|
|
||||||
|
|
||||||
// overridden base class methods
|
// overridden base class methods
|
||||||
// -----------------------------
|
// -----------------------------
|
||||||
|
|
||||||
@@ -270,10 +277,6 @@ protected:
|
|||||||
// the renderer we use
|
// the renderer we use
|
||||||
wxRenderer *m_renderer;
|
wxRenderer *m_renderer;
|
||||||
|
|
||||||
// background like a dialog (e.g. wxStaticText,
|
|
||||||
// wxRadioButton), not with a surface (wxButton)
|
|
||||||
bool m_hasDialogBackground;
|
|
||||||
|
|
||||||
// background bitmap info
|
// background bitmap info
|
||||||
wxBitmap m_bitmapBg;
|
wxBitmap m_bitmapBg;
|
||||||
int m_alignBgBitmap;
|
int m_alignBgBitmap;
|
||||||
|
@@ -114,9 +114,9 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
wxEventType command = wxEVT_SCROLL_THUMBRELEASE;
|
wxEventType command = wxEVT_SCROLL_THUMBRELEASE;
|
||||||
int value = (int)ceil(win->m_adjust->value);
|
int value = (int)ceil(win->m_adjust->value);
|
||||||
int dir = win->HasFlag(wxSB_VERTICAL) ? wxVERTICAL : wxHORIZONTAL;
|
int orient = win->HasFlag(wxSB_VERTICAL) ? wxVERTICAL : wxHORIZONTAL;
|
||||||
|
|
||||||
wxScrollEvent event( command, value, dir );
|
wxScrollEvent event( command, win->GetId(), value, orient );
|
||||||
event.SetEventObject( win );
|
event.SetEventObject( win );
|
||||||
win->GetEventHandler()->ProcessEvent( event );
|
win->GetEventHandler()->ProcessEvent( event );
|
||||||
}
|
}
|
||||||
|
@@ -114,9 +114,9 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
wxEventType command = wxEVT_SCROLL_THUMBRELEASE;
|
wxEventType command = wxEVT_SCROLL_THUMBRELEASE;
|
||||||
int value = (int)ceil(win->m_adjust->value);
|
int value = (int)ceil(win->m_adjust->value);
|
||||||
int dir = win->HasFlag(wxSB_VERTICAL) ? wxVERTICAL : wxHORIZONTAL;
|
int orient = win->HasFlag(wxSB_VERTICAL) ? wxVERTICAL : wxHORIZONTAL;
|
||||||
|
|
||||||
wxScrollEvent event( command, value, dir );
|
wxScrollEvent event( command, win->GetId(), value, orient );
|
||||||
event.SetEventObject( win );
|
event.SetEventObject( win );
|
||||||
win->GetEventHandler()->ProcessEvent( event );
|
win->GetEventHandler()->ProcessEvent( event );
|
||||||
}
|
}
|
||||||
|
@@ -39,6 +39,7 @@
|
|||||||
#include "wx/univ/renderer.h"
|
#include "wx/univ/renderer.h"
|
||||||
#include "wx/univ/inphand.h"
|
#include "wx/univ/inphand.h"
|
||||||
#include "wx/univ/theme.h"
|
#include "wx/univ/theme.h"
|
||||||
|
#include "wx/univ/colschem.h"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// constants
|
// constants
|
||||||
@@ -162,6 +163,30 @@ void wxButton::DoDraw(wxControlRenderer *renderer)
|
|||||||
renderer->DrawLabel(m_bitmap, m_marginBmpX, m_marginBmpY);
|
renderer->DrawLabel(m_bitmap, m_marginBmpX, m_marginBmpY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxButton::DoDrawBackground(wxDC& dc)
|
||||||
|
{
|
||||||
|
wxRect rect;
|
||||||
|
wxSize size = GetSize();
|
||||||
|
rect.width = size.x;
|
||||||
|
rect.height = size.y;
|
||||||
|
|
||||||
|
if ( GetBackgroundBitmap().Ok() )
|
||||||
|
{
|
||||||
|
// get the bitmap and the flags
|
||||||
|
int alignment;
|
||||||
|
wxStretch stretch;
|
||||||
|
wxBitmap bmp = GetBackgroundBitmap(&alignment, &stretch);
|
||||||
|
wxControlRenderer::DrawBitmap(dc, bmp, rect, alignment, stretch);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_renderer->DrawButtonSurface(dc, wxTHEME_BG_COLOUR(this),
|
||||||
|
rect, GetStateFlags());
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// input processing
|
// input processing
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -70,8 +70,6 @@ bool wxCheckBox::Create(wxWindow *parent,
|
|||||||
if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
|
if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
m_hasDialogBackground = TRUE;
|
|
||||||
|
|
||||||
SetLabel(label);
|
SetLabel(label);
|
||||||
SetBestSize(size);
|
SetBestSize(size);
|
||||||
|
|
||||||
|
@@ -468,7 +468,8 @@ void wxControlRenderer::DrawButtonBorder()
|
|||||||
|
|
||||||
m_renderer->DrawButtonBorder(m_dc, m_rect, flags, &m_rect);
|
m_renderer->DrawButtonBorder(m_dc, m_rect, flags, &m_rect);
|
||||||
|
|
||||||
m_renderer->DrawBackground(m_dc, wxTHEME_BG_COLOUR(m_window), m_rect, flags);
|
// Why do this here?
|
||||||
|
// m_renderer->DrawButtonSurface(m_dc, wxTHEME_BG_COLOUR(m_window), m_rect, flags );
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxControlRenderer::DrawBitmap(const wxBitmap& bitmap)
|
void wxControlRenderer::DrawBitmap(const wxBitmap& bitmap)
|
||||||
|
@@ -60,8 +60,6 @@ bool wxStaticBitmap::Create(wxWindow *parent,
|
|||||||
if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
|
if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
m_hasDialogBackground = TRUE;
|
|
||||||
|
|
||||||
// set bitmap first
|
// set bitmap first
|
||||||
SetBitmap(label);
|
SetBitmap(label);
|
||||||
|
|
||||||
|
@@ -58,8 +58,6 @@ bool wxStaticBox::Create(wxWindow *parent,
|
|||||||
if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
|
if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
m_hasDialogBackground = TRUE;
|
|
||||||
|
|
||||||
SetLabel(label);
|
SetLabel(label);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@@ -59,8 +59,6 @@ bool wxStaticText::Create(wxWindow *parent,
|
|||||||
if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
|
if ( !wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name) )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
m_hasDialogBackground = TRUE;
|
|
||||||
|
|
||||||
SetLabel(label);
|
SetLabel(label);
|
||||||
SetBestSize(size);
|
SetBestSize(size);
|
||||||
|
|
||||||
|
@@ -77,7 +77,8 @@ public:
|
|||||||
virtual void DrawBackground(wxDC& dc,
|
virtual void DrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
int flags = 0);
|
int flags = 0,
|
||||||
|
wxWindow *window = NULL );
|
||||||
virtual void DrawLabel(wxDC& dc,
|
virtual void DrawLabel(wxDC& dc,
|
||||||
const wxString& label,
|
const wxString& label,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
@@ -336,7 +337,8 @@ protected:
|
|||||||
// draw the background with any colour, not only the default one(s)
|
// draw the background with any colour, not only the default one(s)
|
||||||
void DoDrawBackground(wxDC& dc,
|
void DoDrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect);
|
const wxRect& rect,
|
||||||
|
wxWindow *window = NULL);
|
||||||
|
|
||||||
// DrawBorder() helpers: all of them shift and clip the DC after drawing
|
// DrawBorder() helpers: all of them shift and clip the DC after drawing
|
||||||
// the border
|
// the border
|
||||||
@@ -2280,7 +2282,8 @@ void wxGTKRenderer::GetComboBitmaps(wxBitmap *bmpNormal,
|
|||||||
|
|
||||||
void wxGTKRenderer::DoDrawBackground(wxDC& dc,
|
void wxGTKRenderer::DoDrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect)
|
const wxRect& rect,
|
||||||
|
wxWindow *window )
|
||||||
{
|
{
|
||||||
wxBrush brush(col, wxSOLID);
|
wxBrush brush(col, wxSOLID);
|
||||||
dc.SetBrush(brush);
|
dc.SetBrush(brush);
|
||||||
@@ -2291,10 +2294,11 @@ void wxGTKRenderer::DoDrawBackground(wxDC& dc,
|
|||||||
void wxGTKRenderer::DrawBackground(wxDC& dc,
|
void wxGTKRenderer::DrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
int flags)
|
int flags,
|
||||||
|
wxWindow *window )
|
||||||
{
|
{
|
||||||
wxColour colBg = col.Ok() ? col : GetBackgroundColour(flags);
|
wxColour colBg = col.Ok() ? col : GetBackgroundColour(flags);
|
||||||
DoDrawBackground(dc, colBg, rect);
|
DoDrawBackground(dc, colBg, rect, window );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -143,12 +143,20 @@ public:
|
|||||||
|
|
||||||
// ctor
|
// ctor
|
||||||
wxMetalRenderer(const wxColourScheme *scheme);
|
wxMetalRenderer(const wxColourScheme *scheme);
|
||||||
|
|
||||||
|
// Metal gradient
|
||||||
|
void DrawMetal(wxDC &dc, const wxRect &rect );
|
||||||
|
|
||||||
// implement the base class pure virtuals
|
// implement the base class pure virtuals
|
||||||
virtual void DrawBackground(wxDC& dc,
|
virtual void DrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
int flags = 0);
|
int flags = 0,
|
||||||
|
wxWindow *window = NULL );
|
||||||
|
virtual void DrawButtonSurface(wxDC& dc,
|
||||||
|
const wxColour& col,
|
||||||
|
const wxRect& rect,
|
||||||
|
int flags );
|
||||||
virtual void DrawLabel(wxDC& dc,
|
virtual void DrawLabel(wxDC& dc,
|
||||||
const wxString& label,
|
const wxString& label,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
@@ -404,7 +412,8 @@ protected:
|
|||||||
// DrawButtonBorder() helper
|
// DrawButtonBorder() helper
|
||||||
void DoDrawBackground(wxDC& dc,
|
void DoDrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect);
|
const wxRect& rect,
|
||||||
|
wxWindow *window = NULL );
|
||||||
|
|
||||||
// DrawBorder() helpers: all of them shift and clip the DC after drawing
|
// DrawBorder() helpers: all of them shift and clip the DC after drawing
|
||||||
// the border
|
// the border
|
||||||
@@ -1331,12 +1340,6 @@ wxColour wxMetalColourScheme::GetBackground(wxWindow *win) const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( win->HasDialogBackground() )
|
|
||||||
{
|
|
||||||
col = win->GetParent()->GetBackgroundColour();
|
|
||||||
return col;
|
|
||||||
}
|
|
||||||
|
|
||||||
int flags = win->GetStateFlags();
|
int flags = win->GetStateFlags();
|
||||||
|
|
||||||
// the colour set by the user should be used for the normal state
|
// the colour set by the user should be used for the normal state
|
||||||
@@ -3203,40 +3206,53 @@ void wxMetalRenderer::GetComboBitmaps(wxBitmap *bmpNormal,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// metal gradient
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxMetalRenderer::DrawMetal(wxDC &dc, const wxRect &rect )
|
||||||
|
{
|
||||||
|
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||||
|
for (int y = rect.y; y < rect.height+rect.y; y++)
|
||||||
|
{
|
||||||
|
int intens = 230 + 80 * (rect.y-y) / rect.height;
|
||||||
|
dc.SetBrush( wxBrush( wxColour(intens,intens,intens), wxSOLID ) );
|
||||||
|
dc.DrawRectangle( rect.x, y, rect.width, 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// background
|
// background
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxMetalRenderer::DrawButtonSurface(wxDC& dc,
|
||||||
|
const wxColour& col,
|
||||||
|
const wxRect& rect,
|
||||||
|
int flags )
|
||||||
|
{
|
||||||
|
DrawMetal( dc, rect );
|
||||||
|
}
|
||||||
|
|
||||||
void wxMetalRenderer::DoDrawBackground(wxDC& dc,
|
void wxMetalRenderer::DoDrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect)
|
const wxRect& rect,
|
||||||
|
wxWindow *window )
|
||||||
{
|
{
|
||||||
dc.SetPen(*wxTRANSPARENT_PEN);
|
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||||
if (col == wxTheme::Get()->GetColourScheme()->Get( wxColourScheme::CONTROL ))
|
wxBrush brush(col, wxSOLID);
|
||||||
{
|
dc.SetBrush(brush);
|
||||||
for (int y = rect.y; y < rect.height+rect.y; y++)
|
dc.DrawRectangle(rect);
|
||||||
{
|
|
||||||
int intens = 230 + 80 * (rect.y-y) / rect.height;
|
|
||||||
dc.SetBrush( wxBrush( wxColour(intens,intens,intens), wxSOLID ) );
|
|
||||||
dc.DrawRectangle( rect.x, y, rect.width, 1 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wxBrush brush(col, wxSOLID);
|
|
||||||
dc.SetBrush(brush);
|
|
||||||
dc.DrawRectangle(rect);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxMetalRenderer::DrawBackground(wxDC& dc,
|
void wxMetalRenderer::DrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
int flags)
|
int flags,
|
||||||
|
wxWindow *window )
|
||||||
{
|
{
|
||||||
// just fill it with the given or default bg colour
|
// just fill it with the given or default bg colour
|
||||||
wxColour colBg = col.Ok() ? col : wxSCHEME_COLOUR(m_scheme, CONTROL);
|
wxColour colBg = col.Ok() ? col : wxSCHEME_COLOUR(m_scheme, CONTROL);
|
||||||
DoDrawBackground(dc, colBg, rect);
|
DoDrawBackground(dc, colBg, rect, window);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -3302,7 +3318,7 @@ void wxMetalRenderer::DrawArrowButton(wxDC& dc,
|
|||||||
wxArrowStyle arrowStyle)
|
wxArrowStyle arrowStyle)
|
||||||
{
|
{
|
||||||
wxRect rect = rectAll;
|
wxRect rect = rectAll;
|
||||||
DoDrawBackground(dc, wxSCHEME_COLOUR(m_scheme, CONTROL), rect);
|
DrawMetal( dc, rect );
|
||||||
DrawArrowBorder(dc, &rect, arrowStyle == Arrow_Pressed);
|
DrawArrowBorder(dc, &rect, arrowStyle == Arrow_Pressed);
|
||||||
DrawArrow(dc, rect, arrowDir, arrowStyle);
|
DrawArrow(dc, rect, arrowDir, arrowStyle);
|
||||||
}
|
}
|
||||||
@@ -3315,7 +3331,7 @@ void wxMetalRenderer::DrawScrollbarThumb(wxDC& dc,
|
|||||||
// we don't use the flags, the thumb never changes appearance
|
// we don't use the flags, the thumb never changes appearance
|
||||||
wxRect rectThumb = rect;
|
wxRect rectThumb = rect;
|
||||||
DrawArrowBorder(dc, &rectThumb);
|
DrawArrowBorder(dc, &rectThumb);
|
||||||
DrawBackground(dc, wxNullColour, rectThumb);
|
DrawMetal( dc, rectThumb );
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxMetalRenderer::DrawScrollbarShaft(wxDC& dc,
|
void wxMetalRenderer::DrawScrollbarShaft(wxDC& dc,
|
||||||
@@ -3323,10 +3339,7 @@ void wxMetalRenderer::DrawScrollbarShaft(wxDC& dc,
|
|||||||
const wxRect& rectBar,
|
const wxRect& rectBar,
|
||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
wxColourScheme::StdColour col = flags & wxCONTROL_PRESSED
|
DrawMetal( dc, rectBar );
|
||||||
? wxColourScheme::SCROLLBAR_PRESSED
|
|
||||||
: wxColourScheme::SCROLLBAR;
|
|
||||||
DoDrawBackground(dc, m_scheme->Get(col), rectBar);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxMetalRenderer::DrawScrollCorner(wxDC& dc, const wxRect& rect)
|
void wxMetalRenderer::DrawScrollCorner(wxDC& dc, const wxRect& rect)
|
||||||
|
@@ -148,7 +148,8 @@ public:
|
|||||||
virtual void DrawBackground(wxDC& dc,
|
virtual void DrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
int flags = 0);
|
int flags = 0,
|
||||||
|
wxWindow *window = NULL);
|
||||||
virtual void DrawLabel(wxDC& dc,
|
virtual void DrawLabel(wxDC& dc,
|
||||||
const wxString& label,
|
const wxString& label,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
@@ -404,7 +405,8 @@ protected:
|
|||||||
// DrawButtonBorder() helper
|
// DrawButtonBorder() helper
|
||||||
void DoDrawBackground(wxDC& dc,
|
void DoDrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect);
|
const wxRect& rect,
|
||||||
|
wxWindow *window = NULL );
|
||||||
|
|
||||||
// DrawBorder() helpers: all of them shift and clip the DC after drawing
|
// DrawBorder() helpers: all of them shift and clip the DC after drawing
|
||||||
// the border
|
// the border
|
||||||
@@ -3203,7 +3205,8 @@ void wxWin32Renderer::GetComboBitmaps(wxBitmap *bmpNormal,
|
|||||||
|
|
||||||
void wxWin32Renderer::DoDrawBackground(wxDC& dc,
|
void wxWin32Renderer::DoDrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect)
|
const wxRect& rect,
|
||||||
|
wxWindow *window )
|
||||||
{
|
{
|
||||||
wxBrush brush(col, wxSOLID);
|
wxBrush brush(col, wxSOLID);
|
||||||
dc.SetBrush(brush);
|
dc.SetBrush(brush);
|
||||||
@@ -3214,11 +3217,12 @@ void wxWin32Renderer::DoDrawBackground(wxDC& dc,
|
|||||||
void wxWin32Renderer::DrawBackground(wxDC& dc,
|
void wxWin32Renderer::DrawBackground(wxDC& dc,
|
||||||
const wxColour& col,
|
const wxColour& col,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
int flags)
|
int flags,
|
||||||
|
wxWindow *window )
|
||||||
{
|
{
|
||||||
// just fill it with the given or default bg colour
|
// just fill it with the given or default bg colour
|
||||||
wxColour colBg = col.Ok() ? col : wxSCHEME_COLOUR(m_scheme, CONTROL);
|
wxColour colBg = col.Ok() ? col : wxSCHEME_COLOUR(m_scheme, CONTROL);
|
||||||
DoDrawBackground(dc, colBg, rect);
|
DoDrawBackground(dc, colBg, rect, window );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -111,8 +111,6 @@ void wxWindow::Init()
|
|||||||
|
|
||||||
m_oldSize.x = -1;
|
m_oldSize.x = -1;
|
||||||
m_oldSize.y = -1;
|
m_oldSize.y = -1;
|
||||||
|
|
||||||
m_hasDialogBackground = FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxWindow::Create(wxWindow *parent,
|
bool wxWindow::Create(wxWindow *parent,
|
||||||
@@ -304,7 +302,7 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
|
|||||||
void wxWindow::EraseBackground(wxDC& dc, const wxRect& rect)
|
void wxWindow::EraseBackground(wxDC& dc, const wxRect& rect)
|
||||||
{
|
{
|
||||||
// TODO: handle bg bitmaps here!
|
// TODO: handle bg bitmaps here!
|
||||||
|
|
||||||
m_renderer->DrawBackground(dc, wxTHEME_BG_COLOUR(this), rect, GetStateFlags());
|
m_renderer->DrawBackground(dc, wxTHEME_BG_COLOUR(this), rect, GetStateFlags());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -924,8 +924,6 @@ bool wxApp::SendIdleEvents(wxWindow* win)
|
|||||||
|
|
||||||
win->GetEventHandler()->ProcessEvent(event);
|
win->GetEventHandler()->ProcessEvent(event);
|
||||||
|
|
||||||
win->OnInternalIdle();
|
|
||||||
|
|
||||||
if (event.MoreRequested())
|
if (event.MoreRequested())
|
||||||
needMore = TRUE;
|
needMore = TRUE;
|
||||||
|
|
||||||
@@ -939,6 +937,8 @@ bool wxApp::SendIdleEvents(wxWindow* win)
|
|||||||
node = node->Next();
|
node = node->Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
win->OnInternalIdle();
|
||||||
|
|
||||||
return needMore;
|
return needMore;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1202,7 +1202,7 @@ void wxApp::OnAssert(const wxChar *file, int line, const wxChar *msg)
|
|||||||
{
|
{
|
||||||
// While the GUI isn't working that well, just print out the
|
// While the GUI isn't working that well, just print out the
|
||||||
// message.
|
// message.
|
||||||
#if 0
|
#if 1
|
||||||
wxAppBase::OnAssert(file, line, msg);
|
wxAppBase::OnAssert(file, line, msg);
|
||||||
#else
|
#else
|
||||||
wxString msg2;
|
wxString msg2;
|
||||||
|
@@ -264,7 +264,10 @@ void wxTopLevelWindowX11::OnInternalIdle()
|
|||||||
{
|
{
|
||||||
wxWindow::OnInternalIdle();
|
wxWindow::OnInternalIdle();
|
||||||
|
|
||||||
if (m_needResizeInIdle)
|
// Do this only after the last idle event so that
|
||||||
|
// all windows have been updated before a new
|
||||||
|
// round of size events is sent
|
||||||
|
if (m_needResizeInIdle && !wxTheApp->Pending())
|
||||||
{
|
{
|
||||||
wxSizeEvent event( GetClientSize(), GetId() );
|
wxSizeEvent event( GetClientSize(), GetId() );
|
||||||
event.SetEventObject( this );
|
event.SetEventObject( this );
|
||||||
@@ -280,31 +283,15 @@ void wxTopLevelWindowX11::OnInternalIdle()
|
|||||||
|
|
||||||
bool wxTopLevelWindowX11::Show(bool show)
|
bool wxTopLevelWindowX11::Show(bool show)
|
||||||
{
|
{
|
||||||
// Nano-X has to force a size event,
|
|
||||||
// else there's no initial size.
|
|
||||||
#if wxUSE_NANOX
|
|
||||||
if (show)
|
if (show)
|
||||||
#else
|
|
||||||
if (show && m_needResizeInIdle)
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
wxSizeEvent event(GetSize(), GetId());
|
wxSizeEvent event(GetSize(), GetId());
|
||||||
|
|
||||||
event.SetEventObject(this);
|
event.SetEventObject(this);
|
||||||
GetEventHandler()->ProcessEvent(event);
|
GetEventHandler()->ProcessEvent(event);
|
||||||
|
|
||||||
m_needResizeInIdle = FALSE;
|
m_needResizeInIdle = FALSE;
|
||||||
}
|
}
|
||||||
if (show)
|
|
||||||
{
|
|
||||||
// This does the layout _before_ the
|
|
||||||
// window is shown, else the items are
|
|
||||||
// drawn first at the wrong positions,
|
|
||||||
// then at the correct positions.
|
|
||||||
if (GetAutoLayout())
|
|
||||||
{
|
|
||||||
Layout();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ret = wxWindowX11::Show(show);
|
bool ret = wxWindowX11::Show(show);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user