Further RTL fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -86,6 +86,9 @@ WXDLLIMPEXP_CORE
|
|||||||
void gtk_pizza_set_yoffset (GtkPizza *pizza, gint yoffset);
|
void gtk_pizza_set_yoffset (GtkPizza *pizza, gint yoffset);
|
||||||
|
|
||||||
|
|
||||||
|
WXDLLIMPEXP_CORE
|
||||||
|
gint gtk_pizza_get_rtl_offset (GtkPizza *pizza);
|
||||||
|
|
||||||
WXDLLIMPEXP_CORE
|
WXDLLIMPEXP_CORE
|
||||||
void gtk_pizza_set_shadow_type (GtkPizza *pizza,
|
void gtk_pizza_set_shadow_type (GtkPizza *pizza,
|
||||||
GtkMyShadowType type);
|
GtkMyShadowType type);
|
||||||
|
@@ -216,6 +216,10 @@ wxRendererGTK::DrawTreeItemButton(wxWindow* win,
|
|||||||
else
|
else
|
||||||
state = GTK_STATE_NORMAL;
|
state = GTK_STATE_NORMAL;
|
||||||
|
|
||||||
|
int x_diff = 0;
|
||||||
|
if (win->GetLayoutDirection() == wxLayout_RightToLeft)
|
||||||
|
x_diff = rect.width;
|
||||||
|
|
||||||
// VZ: I don't know how to get the size of the expander so as to centre it
|
// 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...
|
// in the given rectangle, +2/3 below is just what looks good here...
|
||||||
gtk_paint_expander
|
gtk_paint_expander
|
||||||
@@ -226,7 +230,7 @@ wxRendererGTK::DrawTreeItemButton(wxWindow* win,
|
|||||||
NULL,
|
NULL,
|
||||||
tree,
|
tree,
|
||||||
"treeview",
|
"treeview",
|
||||||
dc.LogicalToDeviceX(rect.x) + 2,
|
dc.LogicalToDeviceX(rect.x) + 2 - x_diff,
|
||||||
dc.LogicalToDeviceY(rect.y) + 3,
|
dc.LogicalToDeviceY(rect.y) + 3,
|
||||||
flags & wxCONTROL_EXPANDED ? GTK_EXPANDER_EXPANDED
|
flags & wxCONTROL_EXPANDED ? GTK_EXPANDER_EXPANDED
|
||||||
: GTK_EXPANDER_COLLAPSED
|
: GTK_EXPANDER_COLLAPSED
|
||||||
|
@@ -243,6 +243,21 @@ void gtk_pizza_set_yoffset (GtkPizza *pizza, gint yoffset)
|
|||||||
// do something
|
// do something
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gint gtk_pizza_get_rtl_offset (GtkPizza *pizza)
|
||||||
|
{
|
||||||
|
gint width;
|
||||||
|
|
||||||
|
g_return_val_if_fail ( (pizza != NULL), 0 );
|
||||||
|
g_return_val_if_fail ( (GTK_IS_PIZZA (pizza)), 0 );
|
||||||
|
|
||||||
|
if (!pizza->bin_window) return 0;
|
||||||
|
|
||||||
|
gdk_window_get_geometry( pizza->bin_window, NULL, NULL, &width, NULL, NULL );
|
||||||
|
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_pizza_scroll_set_adjustments (GtkPizza *pizza,
|
gtk_pizza_scroll_set_adjustments (GtkPizza *pizza,
|
||||||
GtkAdjustment *hadj,
|
GtkAdjustment *hadj,
|
||||||
|
@@ -1284,7 +1284,12 @@ template<typename T> void InitMouseEvent(wxWindowGTK *win,
|
|||||||
event.m_y = (wxCoord)gdk_event->y - pt.y;
|
event.m_y = (wxCoord)gdk_event->y - pt.y;
|
||||||
|
|
||||||
if ((win->m_wxwindow) && (win->GetLayoutDirection() == wxLayout_RightToLeft))
|
if ((win->m_wxwindow) && (win->GetLayoutDirection() == wxLayout_RightToLeft))
|
||||||
event.m_x = GTK_PIZZA(win->m_wxwindow)->m_width - event.m_x;
|
{
|
||||||
|
// origin in the upper right corner
|
||||||
|
int virtual_width = win->GetVirtualSize().x;
|
||||||
|
int window_width = gtk_pizza_get_rtl_offset( GTK_PIZZA(win->m_wxwindow) );
|
||||||
|
event.m_x = wxMax( virtual_width, window_width ) - event.m_x;
|
||||||
|
}
|
||||||
|
|
||||||
event.SetEventObject( win );
|
event.SetEventObject( win );
|
||||||
event.SetId( win->GetId() );
|
event.SetId( win->GetId() );
|
||||||
|
Reference in New Issue
Block a user