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"
|
#include "wx/mac/private.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include "wx/gtk/win_gtk.h"
|
||||||
|
#include "wx/renderer.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// -- wxDefaultDockArt class implementation --
|
// -- wxDefaultDockArt class implementation --
|
||||||
|
|
||||||
// wxDefaultDockArt is an art provider class which does all of the drawing for
|
// 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);
|
m_active_pin_bitmap = BitmapFromBits(pin_bits, 16, 16, m_active_caption_text_colour);
|
||||||
|
|
||||||
// default metric values
|
// default metric values
|
||||||
#ifdef __WXMAC__
|
#if defined(__WXMAC__)
|
||||||
SInt32 height;
|
SInt32 height;
|
||||||
GetThemeMetric( kThemeMetricSmallPaneSplitterHeight , &height );
|
GetThemeMetric( kThemeMetricSmallPaneSplitterHeight , &height );
|
||||||
m_sash_size = height;
|
m_sash_size = height;
|
||||||
|
#elif defined(__WXGTK__)
|
||||||
|
m_sash_size = wxRendererNative::Get().GetSplitterParams(NULL).widthSash;
|
||||||
#else
|
#else
|
||||||
m_sash_size = 4;
|
m_sash_size = 4;
|
||||||
#endif
|
#endif
|
||||||
@@ -297,9 +306,9 @@ wxFont wxDefaultDockArt::GetFont(int id)
|
|||||||
return wxNullFont;
|
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 );
|
HIRect splitterRect = CGRectMake( rect.x , rect.y , rect.width , rect.height );
|
||||||
CGContextRef cgContext ;
|
CGContextRef cgContext ;
|
||||||
#if wxMAC_USE_CORE_GRAPHICS
|
#if wxMAC_USE_CORE_GRAPHICS
|
||||||
@@ -323,6 +332,45 @@ void wxDefaultDockArt::DrawSash(wxDC& dc, int, const wxRect& rect)
|
|||||||
QDEndCGContext( (CGrafPtr) dc.m_macPort , &cgContext ) ;
|
QDEndCGContext( (CGrafPtr) dc.m_macPort , &cgContext ) ;
|
||||||
#endif
|
#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
|
#else
|
||||||
dc.SetPen(*wxTRANSPARENT_PEN);
|
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||||
dc.SetBrush(m_sash_brush);
|
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);
|
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||||
#ifdef __WXMAC__
|
#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);
|
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)
|
wxPaneInfo& pane)
|
||||||
{
|
{
|
||||||
dc.SetPen(m_border_pen);
|
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 wxString& text,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
wxPaneInfo& pane)
|
wxPaneInfo& pane)
|
||||||
@@ -451,7 +499,7 @@ void wxDefaultDockArt::DrawCaption(wxDC& dc,
|
|||||||
dc.DestroyClippingRegion();
|
dc.DestroyClippingRegion();
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDefaultDockArt::DrawGripper(wxDC& dc,
|
void wxDefaultDockArt::DrawGripper(wxDC& dc, wxWindow *window,
|
||||||
const wxRect& rect,
|
const wxRect& rect,
|
||||||
wxPaneInfo& pane)
|
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,
|
||||||
int button_state,
|
int button_state,
|
||||||
const wxRect& _rect,
|
const wxRect& _rect,
|
||||||
|
@@ -3163,22 +3163,22 @@ void wxFrameManager::OnRender(wxFrameManagerEvent& evt)
|
|||||||
{
|
{
|
||||||
case wxDockUIPart::typeDockSizer:
|
case wxDockUIPart::typeDockSizer:
|
||||||
case wxDockUIPart::typePaneSizer:
|
case wxDockUIPart::typePaneSizer:
|
||||||
m_art->DrawSash(*dc, part.orientation, part.rect);
|
m_art->DrawSash(*dc, m_frame, part.orientation, part.rect);
|
||||||
break;
|
break;
|
||||||
case wxDockUIPart::typeBackground:
|
case wxDockUIPart::typeBackground:
|
||||||
m_art->DrawBackground(*dc, part.orientation, part.rect);
|
m_art->DrawBackground(*dc, m_frame, part.orientation, part.rect);
|
||||||
break;
|
break;
|
||||||
case wxDockUIPart::typeCaption:
|
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;
|
break;
|
||||||
case wxDockUIPart::typeGripper:
|
case wxDockUIPart::typeGripper:
|
||||||
m_art->DrawGripper(*dc, part.rect, *part.pane);
|
m_art->DrawGripper(*dc, m_frame, part.rect, *part.pane);
|
||||||
break;
|
break;
|
||||||
case wxDockUIPart::typePaneBorder:
|
case wxDockUIPart::typePaneBorder:
|
||||||
m_art->DrawBorder(*dc, part.rect, *part.pane);
|
m_art->DrawBorder(*dc, m_frame, part.rect, *part.pane);
|
||||||
break;
|
break;
|
||||||
case wxDockUIPart::typePaneButton:
|
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);
|
wxAUI_BUTTON_STATE_NORMAL, part.rect, *part.pane);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -3329,7 +3329,7 @@ void wxFrameManager::UpdateButtonOnScreen(wxDockUIPart* button_ui_part,
|
|||||||
if (pt.x != 0 || pt.y != 0)
|
if (pt.x != 0 || pt.y != 0)
|
||||||
cdc.SetDeviceOrigin(pt.x, pt.y);
|
cdc.SetDeviceOrigin(pt.x, pt.y);
|
||||||
|
|
||||||
m_art->DrawPaneButton(cdc,
|
m_art->DrawPaneButton(cdc, m_frame,
|
||||||
button_ui_part->button->button_id,
|
button_ui_part->button->button_id,
|
||||||
state,
|
state,
|
||||||
button_ui_part->rect,
|
button_ui_part->rect,
|
||||||
|
Reference in New Issue
Block a user