diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-10-09 10:38:34 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-10-09 10:39:13 +0100 |
commit | 912ecaf565e68d2ca3fb9584712313e712749f75 (patch) | |
tree | 62bad4b127b1f97e1e639d2c87a62663eb0126b5 /sw | |
parent | fcf953b8ec8ef9652f12a2cc91e9edc6153c1bb1 (diff) |
Resolves: fdo#55546 center ellipsis tooltips that don't fit on screen
Change-Id: Ic44c9032878892fa33c839e5aaac1996e7bed943
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/uibase/docvw/edtwin2.cxx | 17 | ||||
-rw-r--r-- | sw/source/uibase/inc/edtwin.hxx | 5 |
2 files changed, 20 insertions, 2 deletions
diff --git a/sw/source/uibase/docvw/edtwin2.cxx b/sw/source/uibase/docvw/edtwin2.cxx index 0acaf594cac0..19989be4de5c 100644 --- a/sw/source/uibase/docvw/edtwin2.cxx +++ b/sw/source/uibase/docvw/edtwin2.cxx @@ -94,6 +94,17 @@ static OUString lcl_GetRedlineHelp( const SwRangeRedline& rRedl, bool bBalloon ) return sBuf.makeStringAndClear(); } +OUString SwEditWin::ClipLongToolTip(const OUString& rTxt) +{ + OUString sDisplayTxt(rTxt); + long nTextWidth = GetTextWidth(sDisplayTxt); + long nMaxWidth = GetDesktopRectPixel().GetWidth() * 2 / 3; + nMaxWidth = PixelToLogic(Size(nMaxWidth, 0)).Width(); + if (nTextWidth > nMaxWidth) + sDisplayTxt = GetEllipsisString(sDisplayTxt, nMaxWidth, TEXT_DRAW_CENTERELLIPSIS); + return sDisplayTxt; +} + void SwEditWin::RequestHelp(const HelpEvent &rEvt) { SwWrtShell &rSh = m_rView.GetWrtShell(); @@ -369,7 +380,8 @@ void SwEditWin::RequestHelp(const HelpEvent &rEvt) aPt = OutputToScreenPixel( LogicToPixel( aRect.BottomRight() )); aRect.Right() = aPt.X(); aRect.Bottom() = aPt.Y(); - Help::ShowQuickHelp( this, aRect, sTxt, nStyle ); + OUString sDisplayTxt(ClipLongToolTip(sTxt)); + Help::ShowQuickHelp(this, aRect, sDisplayTxt, nStyle); } } @@ -410,7 +422,8 @@ void SwEditWin::RequestHelp(const HelpEvent &rEvt) sTxt = SW_RESSTR(nTabRes); Size aTxtSize( GetTextWidth(sTxt), GetTextHeight()); Rectangle aRect(rEvt.GetMousePosPixel(), aTxtSize); - Help::ShowQuickHelp(this, aRect, sTxt); + OUString sDisplayTxt(ClipLongToolTip(sTxt)); + Help::ShowQuickHelp(this, aRect, sDisplayTxt); } bContinue = false; } diff --git a/sw/source/uibase/inc/edtwin.hxx b/sw/source/uibase/inc/edtwin.hxx index 9871a5cf9ca0..92e758d46569 100644 --- a/sw/source/uibase/inc/edtwin.hxx +++ b/sw/source/uibase/inc/edtwin.hxx @@ -286,6 +286,11 @@ public: void SetUseInputLanguage( bool bNew ); bool IsUseInputLanguage() const { return m_bUseInputLanguage; } + /** fdo#55546 cut very long tooltips to 2/3 of the width of the screen + via center ellipsis + */ + OUString ClipLongToolTip(const OUString& rTxt); + SwFrameControlsManager& GetFrameControlsManager() { return m_aFrameControlsManager; } SwEditWin(vcl::Window *pParent, SwView &); |