[Libreoffice-commits] core.git: Branch 'libreoffice-4-3' - sw/source

Caolán McNamara caolanm at redhat.com
Sat Oct 11 04:09:18 PDT 2014


 sw/source/core/uibase/docvw/edtwin2.cxx |   17 +++++++++++++++--
 sw/source/core/uibase/inc/edtwin.hxx    |    5 +++++
 2 files changed, 20 insertions(+), 2 deletions(-)

New commits:
commit d5482208ba905df70e4012f5f5f0d9bc8bac443a
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Oct 9 10:38:34 2014 +0100

    Resolves: fdo#55546 center ellipsis tooltips that don't fit on screen
    
    (cherry picked from commit 912ecaf565e68d2ca3fb9584712313e712749f75)
    
    Conflicts:
    	sw/source/uibase/docvw/edtwin2.cxx
    	sw/source/uibase/inc/edtwin.hxx
    
    Change-Id: Ic44c9032878892fa33c839e5aaac1996e7bed943
    Reviewed-on: https://gerrit.libreoffice.org/11874
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/source/core/uibase/docvw/edtwin2.cxx b/sw/source/core/uibase/docvw/edtwin2.cxx
index bbcaaf1..9fd7355 100644
--- a/sw/source/core/uibase/docvw/edtwin2.cxx
+++ b/sw/source/core/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/core/uibase/inc/edtwin.hxx b/sw/source/core/uibase/inc/edtwin.hxx
index aade966..7e5396d 100644
--- a/sw/source/core/uibase/inc/edtwin.hxx
+++ b/sw/source/core/uibase/inc/edtwin.hxx
@@ -285,6 +285,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(Window *pParent, SwView &);


More information about the Libreoffice-commits mailing list