Improvements for splitter sash hack. GTK2 look
good now, GTK1.2 jumps two pixels for some reason. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25673 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -177,10 +177,10 @@ wxRendererGTK::DrawTreeItemButton(wxWindow* WXUNUSED(win),
|
|||||||
static const wxCoord SASH_FULL_SIZE = 5;
|
static const wxCoord SASH_FULL_SIZE = 5;
|
||||||
#else // GTK+ 1.x
|
#else // GTK+ 1.x
|
||||||
// the full sash width (should be even)
|
// the full sash width (should be even)
|
||||||
static const wxCoord SASH_SIZE = 10;
|
static const wxCoord SASH_SIZE = 8;
|
||||||
|
|
||||||
// margin around the sash
|
// margin around the sash
|
||||||
static const wxCoord SASH_MARGIN = 5;
|
static const wxCoord SASH_MARGIN = 2;
|
||||||
|
|
||||||
// the full sash size
|
// the full sash size
|
||||||
static const wxCoord SASH_FULL_SIZE = SASH_SIZE + SASH_MARGIN;
|
static const wxCoord SASH_FULL_SIZE = SASH_SIZE + SASH_MARGIN;
|
||||||
@@ -229,21 +229,55 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
|
|||||||
const bool isVert = orient == wxVERTICAL;
|
const bool isVert = orient == wxVERTICAL;
|
||||||
|
|
||||||
GdkRectangle rect;
|
GdkRectangle rect;
|
||||||
|
GdkRectangle erase_rect;
|
||||||
if ( isVert )
|
if ( isVert )
|
||||||
{
|
{
|
||||||
|
int h = win->GetClientSize().GetHeight();
|
||||||
|
|
||||||
rect.x = position;
|
rect.x = position;
|
||||||
rect.y = 0;
|
rect.y = h/2 - 14/2;
|
||||||
rect.width = SASH_FULL_SIZE;
|
rect.width = SASH_FULL_SIZE;
|
||||||
rect.height = size.y;
|
rect.height = 14;
|
||||||
|
|
||||||
|
erase_rect.x = position;
|
||||||
|
erase_rect.y = 0;
|
||||||
|
erase_rect.width = SASH_FULL_SIZE;
|
||||||
|
erase_rect.height = h;
|
||||||
}
|
}
|
||||||
else // horz
|
else // horz
|
||||||
{
|
{
|
||||||
rect.x = 0;
|
int w = win->GetClientSize().GetWidth();
|
||||||
|
|
||||||
|
rect.x = w/2 - 14/2;
|
||||||
rect.y = position;
|
rect.y = position;
|
||||||
rect.height = SASH_FULL_SIZE;
|
rect.height = SASH_FULL_SIZE;
|
||||||
rect.width = size.x;
|
rect.width = 14;
|
||||||
|
|
||||||
|
erase_rect.y = position;
|
||||||
|
erase_rect.x = 0;
|
||||||
|
erase_rect.height = SASH_FULL_SIZE;
|
||||||
|
erase_rect.width = w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we must erase everything first, otherwise the garbage from the old sash
|
||||||
|
// is left when dragging it
|
||||||
|
//
|
||||||
|
// TODO: is this the right way to draw themed background?
|
||||||
|
gtk_paint_flat_box
|
||||||
|
(
|
||||||
|
win->m_wxwindow->style,
|
||||||
|
GTK_PIZZA(win->m_wxwindow)->bin_window,
|
||||||
|
GTK_STATE_NORMAL,
|
||||||
|
GTK_SHADOW_NONE,
|
||||||
|
NULL,
|
||||||
|
win->m_wxwindow,
|
||||||
|
(char *)"base", // const_cast
|
||||||
|
erase_rect.x,
|
||||||
|
erase_rect.y,
|
||||||
|
erase_rect.width,
|
||||||
|
erase_rect.height
|
||||||
|
);
|
||||||
|
|
||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
gtk_paint_handle
|
gtk_paint_handle
|
||||||
(
|
(
|
||||||
@@ -258,25 +292,9 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
|
|||||||
rect.y,
|
rect.y,
|
||||||
rect.width,
|
rect.width,
|
||||||
rect.height,
|
rect.height,
|
||||||
isVert ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL
|
!isVert ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL
|
||||||
);
|
);
|
||||||
#else // GTK+ 1.x
|
#else // GTK+ 1.x
|
||||||
// we must erase everything first, otherwise the garbage from the old sash
|
|
||||||
// is left when dragging it
|
|
||||||
//
|
|
||||||
// TODO: is this the right way to draw themed background?
|
|
||||||
gtk_paint_flat_box
|
|
||||||
(
|
|
||||||
win->m_wxwindow->style,
|
|
||||||
GTK_PIZZA(win->m_wxwindow)->bin_window,
|
|
||||||
GTK_STATE_NORMAL,
|
|
||||||
GTK_SHADOW_NONE,
|
|
||||||
&rect,
|
|
||||||
win->m_wxwindow,
|
|
||||||
(char *)"base", // const_cast
|
|
||||||
0, 0, -1, -1
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// leave some margin before sash itself
|
// leave some margin before sash itself
|
||||||
position += SASH_MARGIN / 2;
|
position += SASH_MARGIN / 2;
|
||||||
|
@@ -177,10 +177,10 @@ wxRendererGTK::DrawTreeItemButton(wxWindow* WXUNUSED(win),
|
|||||||
static const wxCoord SASH_FULL_SIZE = 5;
|
static const wxCoord SASH_FULL_SIZE = 5;
|
||||||
#else // GTK+ 1.x
|
#else // GTK+ 1.x
|
||||||
// the full sash width (should be even)
|
// the full sash width (should be even)
|
||||||
static const wxCoord SASH_SIZE = 10;
|
static const wxCoord SASH_SIZE = 8;
|
||||||
|
|
||||||
// margin around the sash
|
// margin around the sash
|
||||||
static const wxCoord SASH_MARGIN = 5;
|
static const wxCoord SASH_MARGIN = 2;
|
||||||
|
|
||||||
// the full sash size
|
// the full sash size
|
||||||
static const wxCoord SASH_FULL_SIZE = SASH_SIZE + SASH_MARGIN;
|
static const wxCoord SASH_FULL_SIZE = SASH_SIZE + SASH_MARGIN;
|
||||||
@@ -229,21 +229,55 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
|
|||||||
const bool isVert = orient == wxVERTICAL;
|
const bool isVert = orient == wxVERTICAL;
|
||||||
|
|
||||||
GdkRectangle rect;
|
GdkRectangle rect;
|
||||||
|
GdkRectangle erase_rect;
|
||||||
if ( isVert )
|
if ( isVert )
|
||||||
{
|
{
|
||||||
|
int h = win->GetClientSize().GetHeight();
|
||||||
|
|
||||||
rect.x = position;
|
rect.x = position;
|
||||||
rect.y = 0;
|
rect.y = h/2 - 14/2;
|
||||||
rect.width = SASH_FULL_SIZE;
|
rect.width = SASH_FULL_SIZE;
|
||||||
rect.height = size.y;
|
rect.height = 14;
|
||||||
|
|
||||||
|
erase_rect.x = position;
|
||||||
|
erase_rect.y = 0;
|
||||||
|
erase_rect.width = SASH_FULL_SIZE;
|
||||||
|
erase_rect.height = h;
|
||||||
}
|
}
|
||||||
else // horz
|
else // horz
|
||||||
{
|
{
|
||||||
rect.x = 0;
|
int w = win->GetClientSize().GetWidth();
|
||||||
|
|
||||||
|
rect.x = w/2 - 14/2;
|
||||||
rect.y = position;
|
rect.y = position;
|
||||||
rect.height = SASH_FULL_SIZE;
|
rect.height = SASH_FULL_SIZE;
|
||||||
rect.width = size.x;
|
rect.width = 14;
|
||||||
|
|
||||||
|
erase_rect.y = position;
|
||||||
|
erase_rect.x = 0;
|
||||||
|
erase_rect.height = SASH_FULL_SIZE;
|
||||||
|
erase_rect.width = w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we must erase everything first, otherwise the garbage from the old sash
|
||||||
|
// is left when dragging it
|
||||||
|
//
|
||||||
|
// TODO: is this the right way to draw themed background?
|
||||||
|
gtk_paint_flat_box
|
||||||
|
(
|
||||||
|
win->m_wxwindow->style,
|
||||||
|
GTK_PIZZA(win->m_wxwindow)->bin_window,
|
||||||
|
GTK_STATE_NORMAL,
|
||||||
|
GTK_SHADOW_NONE,
|
||||||
|
NULL,
|
||||||
|
win->m_wxwindow,
|
||||||
|
(char *)"base", // const_cast
|
||||||
|
erase_rect.x,
|
||||||
|
erase_rect.y,
|
||||||
|
erase_rect.width,
|
||||||
|
erase_rect.height
|
||||||
|
);
|
||||||
|
|
||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
gtk_paint_handle
|
gtk_paint_handle
|
||||||
(
|
(
|
||||||
@@ -258,25 +292,9 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
|
|||||||
rect.y,
|
rect.y,
|
||||||
rect.width,
|
rect.width,
|
||||||
rect.height,
|
rect.height,
|
||||||
isVert ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL
|
!isVert ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL
|
||||||
);
|
);
|
||||||
#else // GTK+ 1.x
|
#else // GTK+ 1.x
|
||||||
// we must erase everything first, otherwise the garbage from the old sash
|
|
||||||
// is left when dragging it
|
|
||||||
//
|
|
||||||
// TODO: is this the right way to draw themed background?
|
|
||||||
gtk_paint_flat_box
|
|
||||||
(
|
|
||||||
win->m_wxwindow->style,
|
|
||||||
GTK_PIZZA(win->m_wxwindow)->bin_window,
|
|
||||||
GTK_STATE_NORMAL,
|
|
||||||
GTK_SHADOW_NONE,
|
|
||||||
&rect,
|
|
||||||
win->m_wxwindow,
|
|
||||||
(char *)"base", // const_cast
|
|
||||||
0, 0, -1, -1
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// leave some margin before sash itself
|
// leave some margin before sash itself
|
||||||
position += SASH_MARGIN / 2;
|
position += SASH_MARGIN / 2;
|
||||||
|
Reference in New Issue
Block a user