X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/536b70ac680647cd72b71c21102869f750b73cab..ffafd8a55bb0b8fb4236e4522792a6b143813609:/src/univ/themes/gtk.cpp diff --git a/src/univ/themes/gtk.cpp b/src/univ/themes/gtk.cpp index 0fb2adda78..2471eca2f9 100644 --- a/src/univ/themes/gtk.cpp +++ b/src/univ/themes/gtk.cpp @@ -6,7 +6,7 @@ // Created: 06.08.00 // RCS-ID: $Id$ // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // =========================================================================== @@ -77,7 +77,8 @@ public: virtual void DrawBackground(wxDC& dc, const wxColour& col, const wxRect& rect, - int flags = 0); + int flags = 0, + wxWindow *window = NULL ); virtual void DrawLabel(wxDC& dc, const wxString& label, const wxRect& rect, @@ -164,7 +165,8 @@ public: const wxString& label, const wxBitmap& bitmap, const wxRect& rect, - int flags); + int flags = 0, + long style = 0); virtual void DrawTextLine(wxDC& dc, const wxString& text, @@ -183,21 +185,25 @@ public: virtual void DrawSliderShaft(wxDC& dc, const wxRect& rect, + int lenThumb, wxOrientation orient, int flags = 0, + long style = 0, wxRect *rectShaft = NULL); virtual void DrawSliderThumb(wxDC& dc, const wxRect& rect, wxOrientation orient, - int flags = 0); - virtual void DrawSliderTicks(wxDC& dc, - const wxRect& rect, - const wxSize& sizeThumb, - wxOrientation orient, - int start, - int end, - int step, - int flags) + int flags = 0, + long style = 0); + virtual void DrawSliderTicks(wxDC& WXUNUSED(dc), + const wxRect& WXUNUSED(rect), + int WXUNUSED(lenThumb), + wxOrientation WXUNUSED(orient), + int WXUNUSED(start), + int WXUNUSED(end), + int WXUNUSED(step) = 1, + int WXUNUSED(flags) = 0, + long WXUNUSED(style) = 0) { // we don't have the ticks in GTK version } @@ -256,7 +262,7 @@ public: virtual wxSize GetFrameMinSize(int flags) const; virtual wxSize GetFrameIconSize() const; virtual int HitTestFrame(const wxRect& rect, const wxPoint& pt, int flags) const; - + virtual void GetComboBitmaps(wxBitmap *bmpNormal, wxBitmap *bmpFocus, wxBitmap *bmpPressed, @@ -304,8 +310,11 @@ public: virtual wxCoord GetSliderDim() const { return 15; } virtual wxCoord GetSliderTickLen() const { return 0; } virtual wxRect GetSliderShaftRect(const wxRect& rect, - wxOrientation orient) const; + int lenThumb, + wxOrientation orient, + long style = 0) const; virtual wxSize GetSliderThumbSize(const wxRect& rect, + int lenThumb, wxOrientation orient) const; virtual wxSize GetProgressBarStep() const { return wxSize(16, 32); } @@ -336,7 +345,8 @@ protected: // draw the background with any colour, not only the default one(s) void DoDrawBackground(wxDC& dc, const wxColour& col, - const wxRect& rect); + const wxRect& rect, + wxWindow *window = NULL); // DrawBorder() helpers: all of them shift and clip the DC after drawing // the border @@ -581,7 +591,7 @@ protected: // wxGTKTheme // ---------------------------------------------------------------------------- -WX_DEFINE_ARRAY(wxInputHandler *, wxArrayHandlers); +WX_DEFINE_ARRAY_PTR(wxInputHandler *, wxArrayHandlers); class wxGTKTheme : public wxTheme { @@ -599,7 +609,7 @@ private: wxInputHandler *GetDefaultInputHandler(); wxGTKRenderer *m_renderer; - + wxGTKArtProvider *m_artProvider; // the names of the already created handlers and the handlers themselves @@ -629,6 +639,7 @@ wxGTKTheme::wxGTKTheme() m_scheme = NULL; m_renderer = NULL; m_handlerDefault = NULL; + m_artProvider = NULL; } wxGTKTheme::~wxGTKTheme() @@ -643,6 +654,7 @@ wxGTKTheme::~wxGTKTheme() delete m_handlerDefault; delete m_renderer; delete m_scheme; + wxArtProvider::RemoveProvider(m_artProvider); } wxRenderer *wxGTKTheme::GetRenderer() @@ -763,7 +775,7 @@ wxColour wxGTKColourScheme::GetBackground(wxWindow *win) const col = win->GetBackgroundColour(); } - if ( win->IsContainerWindow() ) + if ( !win->ShouldInheritColours() ) { // doesn't depend on the state if ( !col.Ok() ) @@ -968,7 +980,7 @@ void wxGTKRenderer::DrawAntiRaisedBorder(wxDC& dc, wxRect *rect) void wxGTKRenderer::DrawBorder(wxDC& dc, wxBorder border, const wxRect& rectTotal, - int flags, + int WXUNUSED(flags), wxRect *rectIn) { size_t width; @@ -1322,7 +1334,7 @@ void wxGTKRenderer::DrawCheckItem(wxDC& dc, DrawCheckButton(dc, _T(""), bitmap, rectBitmap, flags & ~wxCONTROL_FOCUSED); wxRect rectLabel = rect; - wxCoord shift = rectBitmap.width + 2*GetCheckItemMargin(); + wxCoord shift = rectBitmap.width + 2*GetCheckItemMargin(); rectLabel.x += shift; rectLabel.width -= shift; DrawItem(dc, label, rectLabel, flags); @@ -1606,6 +1618,10 @@ void wxGTKRenderer::DrawRadioButton(wxDC& dc, dc.SetBackground(*wxLIGHT_GREY_BRUSH); dc.Clear(); DrawRadioBitmap(dc, rect, flags); + + // must unselect the bitmap before setting a mask for it because of the + // MSW limitations + dc.SelectObject(wxNullBitmap); bitmap.SetMask(new wxMask(bitmap, *wxLIGHT_GREY)); } @@ -1617,7 +1633,8 @@ void wxGTKRenderer::DrawToolBarButton(wxDC& dc, const wxString& label, const wxBitmap& bitmap, const wxRect& rectOrig, - int flags) + int flags, + long WXUNUSED(style)) { // we don't draw the separators at all if ( !label.empty() || bitmap.Ok() ) @@ -1646,7 +1663,7 @@ void wxGTKRenderer::DrawToolBarButton(wxDC& dc, // text control // ---------------------------------------------------------------------------- -wxRect wxGTKRenderer::GetTextTotalArea(const wxTextCtrl *text, +wxRect wxGTKRenderer::GetTextTotalArea(const wxTextCtrl * WXUNUSED(text), const wxRect& rect) const { wxRect rectTotal = rect; @@ -1857,13 +1874,14 @@ void wxGTKRenderer::DrawTab(wxDC& dc, // ---------------------------------------------------------------------------- wxSize wxGTKRenderer::GetSliderThumbSize(const wxRect& rect, + int lenThumb, wxOrientation orient) const { static const wxCoord SLIDER_THUMB_LENGTH = 30; wxSize size; - wxRect rectShaft = GetSliderShaftRect(rect, orient); + wxRect rectShaft = GetSliderShaftRect(rect, lenThumb, orient); if ( orient == wxHORIZONTAL ) { size.x = wxMin(SLIDER_THUMB_LENGTH, rectShaft.width); @@ -1879,15 +1897,19 @@ wxSize wxGTKRenderer::GetSliderThumbSize(const wxRect& rect, } wxRect wxGTKRenderer::GetSliderShaftRect(const wxRect& rect, - wxOrientation WXUNUSED(orient)) const + int WXUNUSED(lenThumb), + wxOrientation WXUNUSED(orient), + long WXUNUSED(style)) const { return rect.Deflate(2*BORDER_THICKNESS, 2*BORDER_THICKNESS); } void wxGTKRenderer::DrawSliderShaft(wxDC& dc, const wxRect& rectOrig, - wxOrientation orient, + int WXUNUSED(lenThumb), + wxOrientation WXUNUSED(orient), int flags, + long WXUNUSED(style), wxRect *rectShaft) { wxRect rect = rectOrig; @@ -1914,7 +1936,8 @@ void wxGTKRenderer::DrawSliderShaft(wxDC& dc, void wxGTKRenderer::DrawSliderThumb(wxDC& dc, const wxRect& rectOrig, wxOrientation orient, - int flags) + int WXUNUSED(flags), + long WXUNUSED(style)) { // draw the thumb border wxRect rect = rectOrig; @@ -2132,7 +2155,7 @@ wxMenuGeometryInfo *wxGTKRenderer::GetMenuGeometry(wxWindow *win, widthAccelMax = 0, widthBmpMax = MENU_LEFT_MARGIN; - for ( wxMenuItemList::Node *node = menu.GetMenuItems().GetFirst(); + for ( wxMenuItemList::compatibility_iterator node = menu.GetMenuItems().GetFirst(); node; node = node->GetNext() ) { @@ -2204,15 +2227,16 @@ wxMenuGeometryInfo *wxGTKRenderer::GetMenuGeometry(wxWindow *win, // status bar // ---------------------------------------------------------------------------- -wxSize wxGTKRenderer::GetStatusBarBorders(wxCoord *borderBetweenFields) const +wxSize +wxGTKRenderer::GetStatusBarBorders(wxCoord * WXUNUSED(borderBetweenFields)) const { return wxSize(0, 0); } -void wxGTKRenderer::DrawStatusField(wxDC& dc, - const wxRect& rect, - const wxString& label, - int flags) +void wxGTKRenderer::DrawStatusField(wxDC& WXUNUSED(dc), + const wxRect& WXUNUSED(rect), + const wxString& WXUNUSED(label), + int WXUNUSED(flags)) { } @@ -2280,7 +2304,8 @@ void wxGTKRenderer::GetComboBitmaps(wxBitmap *bmpNormal, void wxGTKRenderer::DoDrawBackground(wxDC& dc, const wxColour& col, - const wxRect& rect) + const wxRect& rect, + wxWindow * WXUNUSED(window)) { wxBrush brush(col, wxSOLID); dc.SetBrush(brush); @@ -2291,10 +2316,11 @@ void wxGTKRenderer::DoDrawBackground(wxDC& dc, void wxGTKRenderer::DrawBackground(wxDC& dc, const wxColour& col, const wxRect& rect, - int flags) + int flags, + wxWindow *window ) { wxColour colBg = col.Ok() ? col : GetBackgroundColour(flags); - DoDrawBackground(dc, colBg, rect); + DoDrawBackground(dc, colBg, rect, window ); } // ---------------------------------------------------------------------------- @@ -2625,7 +2651,7 @@ void wxGTKRenderer::DrawScrollbarThumb(wxDC& dc, void wxGTKRenderer::DrawScrollbarShaft(wxDC& dc, wxOrientation orient, const wxRect& rect, - int flags) + int WXUNUSED(flags)) { wxRect rectBar = rect; DrawThumbBorder(dc, &rectBar, orient); @@ -2731,60 +2757,65 @@ void wxGTKRenderer::AdjustSize(wxSize *size, const wxWindow *window) // top level windows // ---------------------------------------------------------------------------- -void wxGTKRenderer::DrawFrameTitleBar(wxDC& dc, - const wxRect& rect, - const wxString& title, - const wxIcon& icon, - int flags, - int specialButton, - int specialButtonFlag) +void wxGTKRenderer::DrawFrameTitleBar(wxDC& WXUNUSED(dc), + const wxRect& WXUNUSED(rect), + const wxString& WXUNUSED(title), + const wxIcon& WXUNUSED(icon), + int WXUNUSED(flags), + int WXUNUSED(specialButton), + int WXUNUSED(specialButtonFlag)) { } -void wxGTKRenderer::DrawFrameBorder(wxDC& dc, - const wxRect& rect, - int flags) +void wxGTKRenderer::DrawFrameBorder(wxDC& WXUNUSED(dc), + const wxRect& WXUNUSED(rect), + int WXUNUSED(flags)) { } -void wxGTKRenderer::DrawFrameBackground(wxDC& dc, - const wxRect& rect, - int flags) +void wxGTKRenderer::DrawFrameBackground(wxDC& WXUNUSED(dc), + const wxRect& WXUNUSED(rect), + int WXUNUSED(flags)) { } -void wxGTKRenderer::DrawFrameTitle(wxDC& dc, - const wxRect& rect, - const wxString& title, - int flags) +void wxGTKRenderer::DrawFrameTitle(wxDC& WXUNUSED(dc), + const wxRect& WXUNUSED(rect), + const wxString& WXUNUSED(title), + int WXUNUSED(flags)) { } -void wxGTKRenderer::DrawFrameIcon(wxDC& dc, - const wxRect& rect, - const wxIcon& icon, - int flags) +void wxGTKRenderer::DrawFrameIcon(wxDC& WXUNUSED(dc), + const wxRect& WXUNUSED(rect), + const wxIcon& WXUNUSED(icon), + int WXUNUSED(flags)) { } -void wxGTKRenderer::DrawFrameButton(wxDC& dc, - wxCoord x, wxCoord y, - int button, - int flags) +void wxGTKRenderer::DrawFrameButton(wxDC& WXUNUSED(dc), + wxCoord WXUNUSED(x), + wxCoord WXUNUSED(y), + int WXUNUSED(button), + int WXUNUSED(flags)) { } -wxRect wxGTKRenderer::GetFrameClientArea(const wxRect& rect, int flags) const +wxRect +wxGTKRenderer::GetFrameClientArea(const wxRect& rect, + int WXUNUSED(flags)) const { return rect; } -wxSize wxGTKRenderer::GetFrameTotalSize(const wxSize& clientSize, int flags) const +wxSize +wxGTKRenderer::GetFrameTotalSize(const wxSize& clientSize, + int WXUNUSED(flags)) const { return clientSize; } -wxSize wxGTKRenderer::GetFrameMinSize(int flags) const +wxSize wxGTKRenderer::GetFrameMinSize(int WXUNUSED(flags)) const { return wxSize(0,0); } @@ -2794,7 +2825,10 @@ wxSize wxGTKRenderer::GetFrameIconSize() const return wxSize(-1, -1); } -int wxGTKRenderer::HitTestFrame(const wxRect& rect, const wxPoint& pt, int flags) const +int +wxGTKRenderer::HitTestFrame(const wxRect& WXUNUSED(rect), + const wxPoint& WXUNUSED(pt), + int WXUNUSED(flags)) const { return wxHT_TOPLEVEL_CLIENT_AREA; } @@ -2804,7 +2838,7 @@ int wxGTKRenderer::HitTestFrame(const wxRect& rect, const wxPoint& pt, int flags // standard icons // ---------------------------------------------------------------------------- -static char *error_xpm[] = { +static const char *error_xpm[] = { /* columns rows colors chars-per-pixel */ "48 48 537 2", " c Gray0", @@ -3395,7 +3429,7 @@ static char *error_xpm[] = { "W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+" }; -static char *info_xpm[] = { +static const char *info_xpm[] = { /* columns rows colors chars-per-pixel */ "48 48 478 2", " c Gray0", @@ -3928,7 +3962,7 @@ static char *info_xpm[] = { }; /* XPM */ -static char *warning_xpm[] = { +static const char *warning_xpm[] = { /* columns rows colors chars-per-pixel */ "48 48 270 2", " c Gray0", @@ -4253,7 +4287,7 @@ static char *warning_xpm[] = { }; /* XPM */ -static char *question_xpm[] = { +static const char *question_xpm[] = { /* columns rows colors chars-per-pixel */ "48 48 101 2", " c Gray0", @@ -4437,9 +4471,9 @@ wxGTKInputHandler::wxGTKInputHandler(wxGTKRenderer *renderer) m_renderer = renderer; } -bool wxGTKInputHandler::HandleKey(wxInputConsumer *control, - const wxKeyEvent& event, - bool pressed) +bool wxGTKInputHandler::HandleKey(wxInputConsumer * WXUNUSED(control), + const wxKeyEvent& WXUNUSED(event), + bool WXUNUSED(pressed)) { return FALSE; }