- text = wxControl::Ellipsize(
- text, dc,
- GetLayoutDirection() == wxLayout_RightToLeft ? wxELLIPSIZE_START : wxELLIPSIZE_END,
- maxWidth,
- wxELLIPSIZE_EXPAND_TAB);
- // Ellipsize() will do something only if necessary
+
+ wxEllipsizeMode ellmode = (wxEllipsizeMode)-1;
+ if (HasFlag(wxSTB_ELLIPSIZE_START)) ellmode = wxELLIPSIZE_START;
+ else if (HasFlag(wxSTB_ELLIPSIZE_MIDDLE)) ellmode = wxELLIPSIZE_MIDDLE;
+ else if (HasFlag(wxSTB_ELLIPSIZE_END)) ellmode = wxELLIPSIZE_END;
+
+ if (ellmode == (wxEllipsizeMode)-1)
+ {
+ // if we have the wxSTB_SHOW_TIPS we must set the ellipsized flag even if
+ // we don't ellipsize the text but just truncate it
+ if (HasFlag(wxSTB_SHOW_TIPS))
+ SetEllipsizedFlag(i, dc.GetTextExtent(text).GetWidth() > maxWidth);
+
+ dc.SetClippingRegion(rect);
+ }
+ else
+ {
+ text = wxControl::Ellipsize(text, dc,
+ ellmode,
+ maxWidth,
+ wxELLIPSIZE_EXPAND_TAB);
+ // Ellipsize() will do something only if necessary
+
+ // update the ellipsization status for this pane; this is used later to
+ // decide whether a tooltip should be shown or not for this pane
+ // (if we have wxSTB_SHOW_TIPS)
+ SetEllipsizedFlag(i, text != GetStatusText(i));
+ }