#include "wx/window.h"
#include "wx/dc.h"
#include "wx/dcclient.h"
+#include "wx/settings.h"
-#ifdef __WXGTK20__
- #include "wx/settings.h"
-#endif // GTK 2.0
-
-#ifdef __WXGTK20__
- #define WXUNUSED_IN_GTK1(arg) arg
-#else
- #define WXUNUSED_IN_GTK1(arg)
-#endif
+// RR: After a correction to the orientation of the sash
+// this doesn't seem to be required anymore and it
+// seems to confuse some themes so USE_ERASE_RECT=0
+#define USE_ERASE_RECT 0
// ----------------------------------------------------------------------------
// wxRendererGTK: our wxRendererNative implementation
const wxRect& rect,
int flags = 0);
-#ifdef __WXGTK20__
// draw the expanded/collapsed icon for a tree control item
virtual void DrawTreeItemButton(wxWindow *win,
wxDC& dc,
const wxRect& rect,
int flags = 0);
-#endif // GTK+ 2.0
virtual void DrawSplitterBorder(wxWindow *win,
wxDC& dc,
// used by DrawHeaderButton and DrawComboBoxDropButton
static GtkWidget *GetButtonWidget();
-#ifdef __WXGTK20__
// used by DrawTreeItemButton()
static GtkWidget *GetTreeWidget();
-#endif // GTK+ 2.0
};
// ============================================================================
return s_button;
}
-#ifdef __WXGTK20__
-
GtkWidget *
wxRendererGTK::GetTreeWidget()
{
return s_tree;
}
-#endif // GTK+ 2.0
-
// ----------------------------------------------------------------------------
// list/tree controls drawing
// ----------------------------------------------------------------------------
);
}
-#ifdef __WXGTK20__
-
// draw a ">" or "v" button
void
wxRendererGTK::DrawTreeItemButton(wxWindow* win,
state = GTK_STATE_PRELIGHT;
else
state = GTK_STATE_NORMAL;
-
+
// VZ: I don't know how to get the size of the expander so as to centre it
// in the given rectangle, +2/3 below is just what looks good here...
gtk_paint_expander
);
}
-#endif // GTK+ 2.0
// ----------------------------------------------------------------------------
// splitter sash drawing
// ----------------------------------------------------------------------------
-#ifndef __WXGTK20__
- // the full sash width (should be even)
- static const wxCoord SASH_SIZE = 8;
-
- // margin around the sash
- static const wxCoord SASH_MARGIN = 2;
-#endif // GTK+ 2.x/1.x
-
static int GetGtkSplitterFullSize()
{
-#ifdef __WXGTK20__
static GtkWidget *s_paned = NULL;
if (s_paned == NULL)
s_paned = gtk_vpaned_new();
gint handle_size;
gtk_widget_style_get (s_paned, "handle_size", &handle_size, NULL);
-
+
return handle_size;
-#else
- return SASH_SIZE + SASH_MARGIN;
-#endif
}
wxSplitterRenderParams
(
GetGtkSplitterFullSize(),
0,
-#ifdef __WXGTK20__
true // hot sensitive
-#else // GTK+ 1.x
- false // not
-#endif // GTK+ 2.x/1.x
);
}
const wxSize& size,
wxCoord position,
wxOrientation orient,
- int WXUNUSED_IN_GTK1(flags))
+ int flags)
{
if ( !win->m_wxwindow->window )
{
// window not realized yet
return;
}
-
+
wxCoord full_size = GetGtkSplitterFullSize();
// are we drawing vertical or horizontal splitter?
const bool isVert = orient == wxVERTICAL;
GdkRectangle rect;
+#if USE_ERASE_RECT
GdkRectangle erase_rect;
+#endif
+
if ( isVert )
{
int h = win->GetClientSize().GetHeight();
rect.width = full_size;
rect.height = h;
+#if USE_ERASE_RECT
erase_rect.x = position;
erase_rect.y = 0;
erase_rect.width = full_size;
erase_rect.height = h;
+#endif
}
else // horz
{
rect.height = full_size;
rect.width = w;
+#if USE_ERASE_RECT
erase_rect.y = position;
erase_rect.x = 0;
erase_rect.height = full_size;
erase_rect.width = w;
+#endif
}
-#if 0
- // RR: After a correction to the orientation of the sash
- // this doesn't seem to be required anymore and it
- // seems to confuse some themes
-
+#if USE_ERASE_RECT
// we must erase everything first, otherwise the garbage
// from the old sash is left when dragging it
gtk_paint_flat_box
);
#endif
-#ifdef __WXGTK20__
gtk_paint_handle
(
win->m_wxwindow->style,
rect.height,
isVert ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL
);
-#else // GTK+ 1.x
-
- // leave some margin before sash itself
- position += SASH_MARGIN / 2;
-
- // and finally draw it using GTK paint functions
- typedef void (*GtkPaintLineFunc)(GtkStyle *, GdkWindow *,
- GtkStateType,
- GdkRectangle *, GtkWidget *,
- gchar *,
- gint, gint, gint);
-
- GtkPaintLineFunc func = isVert ? gtk_paint_vline : gtk_paint_hline;
-
- (*func)
- (
- win->m_wxwindow->style,
- GTK_PIZZA(win->m_wxwindow)->bin_window,
- GTK_STATE_NORMAL,
- NULL,
- win->m_wxwindow,
- (char *)"paned", // const_cast
- 0, isVert ? size.y : size.x, position + SASH_SIZE / 2 - 1
- );
-
- gtk_paint_box
- (
- win->m_wxwindow->style,
- GTK_PIZZA(win->m_wxwindow)->bin_window,
- GTK_STATE_NORMAL,
- GTK_SHADOW_OUT,
- (GdkRectangle*) NULL,
- win->m_wxwindow,
- (char *)"paned", // const_cast
- isVert ? position : size.x - 2*SASH_SIZE,
- isVert ? size.y - 2*SASH_SIZE : position,
- SASH_SIZE, SASH_SIZE
- );
-#endif // GTK+ 2.x/1.x
}
void