]> git.saurik.com Git - wxWidgets.git/blobdiff - src/aui/dockart.cpp
Make status bar grip move to the left in RTL.
[wxWidgets.git] / src / aui / dockart.cpp
index eb37327b70aaa73f5d676e31d066d7d2c5d9fa63..f26a5bbaf1e28307fb2fbc632283545ac8337b9c 100644 (file)
 
 #if wxUSE_AUI
 
 
 #if wxUSE_AUI
 
-#include "wx/image.h"
 #include "wx/aui/framemanager.h"
 #include "wx/aui/dockart.h"
 
 #ifndef WX_PRECOMP
     #include "wx/settings.h"
     #include "wx/dcclient.h"
 #include "wx/aui/framemanager.h"
 #include "wx/aui/dockart.h"
 
 #ifndef WX_PRECOMP
     #include "wx/settings.h"
     #include "wx/dcclient.h"
+    #include "wx/image.h"
 #endif
 
 #ifdef __WXMAC__
 #include "wx/mac/private.h"
 #endif
 
 #endif
 
 #ifdef __WXMAC__
 #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
 // -- wxDefaultDockArt class implementation --
 
 // wxDefaultDockArt is an art provider class which does all of the drawing for
@@ -76,8 +83,8 @@ static wxBitmap BitmapFromBits(const unsigned char bits[], int w, int h,
                                const wxColour& color)
 {
     wxImage img = wxBitmap((const char*)bits, w, h).ConvertToImage();
                                const wxColour& color)
 {
     wxImage img = wxBitmap((const char*)bits, w, h).ConvertToImage();
-    img.Replace(255,255,255,123,123,123);
-    img.Replace(0,0,0,color.Red(),color.Green(),color.Blue());
+    img.Replace(0,0,0,123,123,123);
+    img.Replace(255,255,255,color.Red(),color.Green(),color.Blue());
     img.SetMaskColour(123,123,123);
     return wxBitmap(img);
 }
     img.SetMaskColour(123,123,123);
     return wxBitmap(img);
 }
@@ -162,11 +169,16 @@ wxDefaultDockArt::wxDefaultDockArt()
 #endif
 
     // some built in bitmaps
 #endif
 
     // some built in bitmaps
-#ifdef __WXMAC__
+#if defined( __WXMAC__ )
      static unsigned char close_bits[]={
          0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x03, 0xF8, 0x01, 0xF0, 0x19, 0xF3,
          0xB8, 0xE3, 0xF0, 0xE1, 0xE0, 0xE0, 0xF0, 0xE1, 0xB8, 0xE3, 0x19, 0xF3,
          0x01, 0xF0, 0x03, 0xF8, 0x0F, 0xFE, 0xFF, 0xFF };
      static unsigned char close_bits[]={
          0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x03, 0xF8, 0x01, 0xF0, 0x19, 0xF3,
          0xB8, 0xE3, 0xF0, 0xE1, 0xE0, 0xE0, 0xF0, 0xE1, 0xB8, 0xE3, 0x19, 0xF3,
          0x01, 0xF0, 0x03, 0xF8, 0x0F, 0xFE, 0xFF, 0xFF };
+#elif defined( __WXGTK__)
+    static unsigned char close_bits[]={
+         0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xfb, 0xef, 0xdb, 0xed, 0x8b, 0xe8,
+         0x1b, 0xec, 0x3b, 0xee, 0x1b, 0xec, 0x8b, 0xe8, 0xdb, 0xed, 0xfb, 0xef,
+         0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
 #else
     static unsigned char close_bits[]={
         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfb,0xcf,0xf9,
 #else
     static unsigned char close_bits[]={
         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfb,0xcf,0xf9,
@@ -193,10 +205,12 @@ wxDefaultDockArt::wxDefaultDockArt()
     m_active_pin_bitmap = BitmapFromBits(pin_bits, 16, 16, m_active_caption_text_colour);
 
     // default metric values
     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;
     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
 #else
     m_sash_size = 4;
 #endif
@@ -292,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 );
     CGContextRef cgContext ;
 #if wxMAC_USE_CORE_GRAPHICS
     HIRect splitterRect = CGRectMake( rect.x , rect.y , rect.width , rect.height );
     CGContextRef cgContext ;
 #if wxMAC_USE_CORE_GRAPHICS
@@ -318,7 +332,48 @@ void wxDefaultDockArt::DrawSash(wxDC& dc, int, const wxRect& rect)
     QDEndCGContext( (CGrafPtr) dc.m_macPort , &cgContext ) ;
 #endif
 
     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
 #else
+    wxUnusedVar(window);
+    wxUnusedVar(orientation);
     dc.SetPen(*wxTRANSPARENT_PEN);
     dc.SetBrush(m_sash_brush);
     dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
     dc.SetPen(*wxTRANSPARENT_PEN);
     dc.SetBrush(m_sash_brush);
     dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
@@ -326,7 +381,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 *WXUNUSED(window), int, const wxRect& rect)
 {
     dc.SetPen(*wxTRANSPARENT_PEN);
 #ifdef __WXMAC__
 {
     dc.SetPen(*wxTRANSPARENT_PEN);
 #ifdef __WXMAC__
@@ -339,7 +394,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 *WXUNUSED(window), const wxRect& _rect,
                                   wxPaneInfo& pane)
 {
     dc.SetPen(m_border_pen);
                                   wxPaneInfo& pane)
 {
     dc.SetPen(m_border_pen);
@@ -363,7 +418,7 @@ void wxDefaultDockArt::DrawBorder(wxDC& dc, const wxRect& _rect,
             rect.Deflate(1);
         }
     }
             rect.Deflate(1);
         }
     }
-     else
+    else
     {
         for (i = 0; i < border_width; ++i)
         {
     {
         for (i = 0; i < border_width; ++i)
         {
@@ -385,7 +440,7 @@ void wxDefaultDockArt::DrawCaptionBackground(wxDC& dc, const wxRect& rect, bool
 
         dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
     }
 
         dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
     }
-     else
+    else
     {
         if (active)
         {
     {
         if (active)
         {
@@ -421,7 +476,7 @@ void wxDefaultDockArt::DrawCaptionBackground(wxDC& dc, const wxRect& rect, bool
 }
 
 
 }
 
 
-void wxDefaultDockArt::DrawCaption(wxDC& dc,
+void wxDefaultDockArt::DrawCaption(wxDC& dc, wxWindow *WXUNUSED(window),
                                    const wxString& text,
                                    const wxRect& rect,
                                    wxPaneInfo& pane)
                                    const wxString& text,
                                    const wxRect& rect,
                                    wxPaneInfo& pane)
@@ -434,7 +489,7 @@ void wxDefaultDockArt::DrawCaption(wxDC& dc,
 
     if (pane.state & wxPaneInfo::optionActive)
         dc.SetTextForeground(m_active_caption_text_colour);
 
     if (pane.state & wxPaneInfo::optionActive)
         dc.SetTextForeground(m_active_caption_text_colour);
-     else
+    else
         dc.SetTextForeground(m_inactive_caption_text_colour);
 
 
         dc.SetTextForeground(m_inactive_caption_text_colour);
 
 
@@ -446,7 +501,7 @@ void wxDefaultDockArt::DrawCaption(wxDC& dc,
     dc.DestroyClippingRegion();
 }
 
     dc.DestroyClippingRegion();
 }
 
-void wxDefaultDockArt::DrawGripper(wxDC& dc,
+void wxDefaultDockArt::DrawGripper(wxDC& dc, wxWindow *WXUNUSED(window),
                                    const wxRect& rect,
                                    wxPaneInfo& pane)
 {
                                    const wxRect& rect,
                                    wxPaneInfo& pane)
 {
@@ -497,7 +552,7 @@ void wxDefaultDockArt::DrawGripper(wxDC& dc,
     }
 }
 
     }
 }
 
-void wxDefaultDockArt::DrawPaneButton(wxDC& dc,
+void wxDefaultDockArt::DrawPaneButton(wxDC& dc, wxWindow *WXUNUSED(window),
                                       int button,
                                       int button_state,
                                       const wxRect& _rect,
                                       int button,
                                       int button_state,
                                       const wxRect& _rect,