Added native GTK+ sash drawing to wxAUI.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40957 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -38,6 +38,13 @@
|
||||
#include "wx/mac/private.h"
|
||||
#endif
|
||||
|
||||
#ifdef __WXGTK__
|
||||
#include <gtk/gtk.h>
|
||||
#include "wx/gtk/win_gtk.h"
|
||||
#include "wx/renderer.h"
|
||||
#endif
|
||||
|
||||
|
||||
// -- wxDefaultDockArt class implementation --
|
||||
|
||||
// wxDefaultDockArt is an art provider class which does all of the drawing for
|
||||
@@ -198,10 +205,12 @@ wxDefaultDockArt::wxDefaultDockArt()
|
||||
m_active_pin_bitmap = BitmapFromBits(pin_bits, 16, 16, m_active_caption_text_colour);
|
||||
|
||||
// default metric values
|
||||
#ifdef __WXMAC__
|
||||
#if defined(__WXMAC__)
|
||||
SInt32 height;
|
||||
GetThemeMetric( kThemeMetricSmallPaneSplitterHeight , &height );
|
||||
m_sash_size = height;
|
||||
#elif defined(__WXGTK__)
|
||||
m_sash_size = wxRendererNative::Get().GetSplitterParams(NULL).widthSash;
|
||||
#else
|
||||
m_sash_size = 4;
|
||||
#endif
|
||||
@@ -297,9 +306,9 @@ wxFont wxDefaultDockArt::GetFont(int id)
|
||||
return wxNullFont;
|
||||
}
|
||||
|
||||
void wxDefaultDockArt::DrawSash(wxDC& dc, int, const wxRect& rect)
|
||||
void wxDefaultDockArt::DrawSash(wxDC& dc, wxWindow *window, int orientation, const wxRect& rect)
|
||||
{
|
||||
#ifdef __WXMAC__
|
||||
#if defined(__WXMAC__)
|
||||
HIRect splitterRect = CGRectMake( rect.x , rect.y , rect.width , rect.height );
|
||||
CGContextRef cgContext ;
|
||||
#if wxMAC_USE_CORE_GRAPHICS
|
||||
@@ -323,6 +332,45 @@ void wxDefaultDockArt::DrawSash(wxDC& dc, int, const wxRect& rect)
|
||||
QDEndCGContext( (CGrafPtr) dc.m_macPort , &cgContext ) ;
|
||||
#endif
|
||||
|
||||
#elif defined(__WXGTK__)
|
||||
|
||||
GdkRectangle gdk_rect;
|
||||
if (orientation == wxVERTICAL )
|
||||
{
|
||||
gdk_rect.x = rect.x;
|
||||
gdk_rect.y = rect.y;
|
||||
gdk_rect.width = m_sash_size;
|
||||
gdk_rect.height = rect.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
gdk_rect.x = rect.x;
|
||||
gdk_rect.y = rect.y;
|
||||
gdk_rect.width = rect.width;
|
||||
gdk_rect.height = m_sash_size;
|
||||
}
|
||||
|
||||
if (!window) return;
|
||||
if (!window->m_wxwindow) return;
|
||||
if (!GTK_PIZZA(window->m_wxwindow)->bin_window) return;
|
||||
|
||||
gtk_paint_handle
|
||||
(
|
||||
window->m_wxwindow->style,
|
||||
GTK_PIZZA(window->m_wxwindow)->bin_window,
|
||||
// flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
|
||||
GTK_STATE_NORMAL,
|
||||
GTK_SHADOW_NONE,
|
||||
NULL /* no clipping */,
|
||||
window->m_wxwindow,
|
||||
"paned",
|
||||
rect.x,
|
||||
rect.y,
|
||||
rect.width,
|
||||
rect.height,
|
||||
(orientation == wxVERTICAL) ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL
|
||||
);
|
||||
|
||||
#else
|
||||
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||
dc.SetBrush(m_sash_brush);
|
||||
@@ -331,7 +379,7 @@ void wxDefaultDockArt::DrawSash(wxDC& dc, int, const wxRect& rect)
|
||||
}
|
||||
|
||||
|
||||
void wxDefaultDockArt::DrawBackground(wxDC& dc, int, const wxRect& rect)
|
||||
void wxDefaultDockArt::DrawBackground(wxDC& dc, wxWindow *window, int, const wxRect& rect)
|
||||
{
|
||||
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||
#ifdef __WXMAC__
|
||||
@@ -344,7 +392,7 @@ void wxDefaultDockArt::DrawBackground(wxDC& dc, int, const wxRect& rect)
|
||||
dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
|
||||
}
|
||||
|
||||
void wxDefaultDockArt::DrawBorder(wxDC& dc, const wxRect& _rect,
|
||||
void wxDefaultDockArt::DrawBorder(wxDC& dc, wxWindow *window, const wxRect& _rect,
|
||||
wxPaneInfo& pane)
|
||||
{
|
||||
dc.SetPen(m_border_pen);
|
||||
@@ -426,7 +474,7 @@ void wxDefaultDockArt::DrawCaptionBackground(wxDC& dc, const wxRect& rect, bool
|
||||
}
|
||||
|
||||
|
||||
void wxDefaultDockArt::DrawCaption(wxDC& dc,
|
||||
void wxDefaultDockArt::DrawCaption(wxDC& dc, wxWindow *window,
|
||||
const wxString& text,
|
||||
const wxRect& rect,
|
||||
wxPaneInfo& pane)
|
||||
@@ -451,7 +499,7 @@ void wxDefaultDockArt::DrawCaption(wxDC& dc,
|
||||
dc.DestroyClippingRegion();
|
||||
}
|
||||
|
||||
void wxDefaultDockArt::DrawGripper(wxDC& dc,
|
||||
void wxDefaultDockArt::DrawGripper(wxDC& dc, wxWindow *window,
|
||||
const wxRect& rect,
|
||||
wxPaneInfo& pane)
|
||||
{
|
||||
@@ -502,7 +550,7 @@ void wxDefaultDockArt::DrawGripper(wxDC& dc,
|
||||
}
|
||||
}
|
||||
|
||||
void wxDefaultDockArt::DrawPaneButton(wxDC& dc,
|
||||
void wxDefaultDockArt::DrawPaneButton(wxDC& dc, wxWindow *window,
|
||||
int button,
|
||||
int button_state,
|
||||
const wxRect& _rect,
|
||||
|
@@ -3163,22 +3163,22 @@ void wxFrameManager::OnRender(wxFrameManagerEvent& evt)
|
||||
{
|
||||
case wxDockUIPart::typeDockSizer:
|
||||
case wxDockUIPart::typePaneSizer:
|
||||
m_art->DrawSash(*dc, part.orientation, part.rect);
|
||||
m_art->DrawSash(*dc, m_frame, part.orientation, part.rect);
|
||||
break;
|
||||
case wxDockUIPart::typeBackground:
|
||||
m_art->DrawBackground(*dc, part.orientation, part.rect);
|
||||
m_art->DrawBackground(*dc, m_frame, part.orientation, part.rect);
|
||||
break;
|
||||
case wxDockUIPart::typeCaption:
|
||||
m_art->DrawCaption(*dc, part.pane->caption, part.rect, *part.pane);
|
||||
m_art->DrawCaption(*dc, m_frame, part.pane->caption, part.rect, *part.pane);
|
||||
break;
|
||||
case wxDockUIPart::typeGripper:
|
||||
m_art->DrawGripper(*dc, part.rect, *part.pane);
|
||||
m_art->DrawGripper(*dc, m_frame, part.rect, *part.pane);
|
||||
break;
|
||||
case wxDockUIPart::typePaneBorder:
|
||||
m_art->DrawBorder(*dc, part.rect, *part.pane);
|
||||
m_art->DrawBorder(*dc, m_frame, part.rect, *part.pane);
|
||||
break;
|
||||
case wxDockUIPart::typePaneButton:
|
||||
m_art->DrawPaneButton(*dc, part.button->button_id,
|
||||
m_art->DrawPaneButton(*dc, m_frame, part.button->button_id,
|
||||
wxAUI_BUTTON_STATE_NORMAL, part.rect, *part.pane);
|
||||
break;
|
||||
}
|
||||
@@ -3329,7 +3329,7 @@ void wxFrameManager::UpdateButtonOnScreen(wxDockUIPart* button_ui_part,
|
||||
if (pt.x != 0 || pt.y != 0)
|
||||
cdc.SetDeviceOrigin(pt.x, pt.y);
|
||||
|
||||
m_art->DrawPaneButton(cdc,
|
||||
m_art->DrawPaneButton(cdc, m_frame,
|
||||
button_ui_part->button->button_id,
|
||||
state,
|
||||
button_ui_part->rect,
|
||||
|
Reference in New Issue
Block a user