Make wxStaticText alignment work with wxGTK2.
Alignment was silently ignored in wxStaticText with GTK+ 2 since 2.12 or so, make it work even at the price of using a non-default ellipsize mode as this seems to be the only way to have it at all. Closes #12539. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78478 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -55,11 +55,35 @@ bool wxStaticText::Create(wxWindow *parent,
|
|||||||
|
|
||||||
GtkJustification justify;
|
GtkJustification justify;
|
||||||
if ( style & wxALIGN_CENTER_HORIZONTAL )
|
if ( style & wxALIGN_CENTER_HORIZONTAL )
|
||||||
justify = GTK_JUSTIFY_CENTER;
|
{
|
||||||
|
#ifndef __WXGTK3__
|
||||||
|
// This looks like a bug in GTK+ and seems to be fixed in GTK+3, but
|
||||||
|
// using non-default justification with default ellipsize mode doesn't
|
||||||
|
// work: the justification is just ignored. In practice, alignment is
|
||||||
|
// more important, so turn on ellipsize mode even if it was not
|
||||||
|
// specified to make it work if necessary.
|
||||||
|
if ( !(style & wxST_ELLIPSIZE_MASK) )
|
||||||
|
style |= wxST_ELLIPSIZE_MIDDLE;
|
||||||
|
#endif // GTK+ 2
|
||||||
|
|
||||||
|
justify = GTK_JUSTIFY_CENTER;
|
||||||
|
}
|
||||||
else if ( style & wxALIGN_RIGHT )
|
else if ( style & wxALIGN_RIGHT )
|
||||||
justify = GTK_JUSTIFY_RIGHT;
|
{
|
||||||
else
|
#ifndef __WXGTK3__
|
||||||
justify = GTK_JUSTIFY_LEFT;
|
// As above, we need to use a non-default ellipsize mode for the
|
||||||
|
// alignment to have any effect.
|
||||||
|
if ( !(style & wxST_ELLIPSIZE_MASK) )
|
||||||
|
style |= wxST_ELLIPSIZE_START;
|
||||||
|
#endif // GTK+ 2
|
||||||
|
|
||||||
|
justify = GTK_JUSTIFY_RIGHT;
|
||||||
|
}
|
||||||
|
else // must be wxALIGN_LEFT which is 0
|
||||||
|
{
|
||||||
|
// No need to play games with wxST_ELLIPSIZE_XXX.
|
||||||
|
justify = GTK_JUSTIFY_LEFT;
|
||||||
|
}
|
||||||
|
|
||||||
if (GetLayoutDirection() == wxLayout_RightToLeft)
|
if (GetLayoutDirection() == wxLayout_RightToLeft)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user