include/svtools/ruler.hxx        |    4 ++--
 include/svx/strings.hrc          |   11 ++++++++---
 svtools/source/control/ruler.cxx |    9 +++++++++
 svx/source/dialog/svxruler.cxx   |   10 ++++++++++
 4 files changed, 29 insertions(+), 5 deletions(-)

New commits:
commit d3568ad1fad269e326e922ab61f439fe51863bbf
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Wed Aug 13 10:36:43 2025 +0200
Commit:     Andreas Heinisch <andreas.heini...@yahoo.de>
CommitDate: Thu Aug 21 12:14:43 2025 +0200

    tdf#84949 - Show tooltip for left, center, right, and decimal tab
    
    Change-Id: Idf0ac686b5918a8941d20dbcde23162879acc1d7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189496
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>
    Tested-by: Jenkins

diff --git a/include/svtools/ruler.hxx b/include/svtools/ruler.hxx
index 046e02241a28..8f54fdc7713e 100644
--- a/include/svtools/ruler.hxx
+++ b/include/svtools/ruler.hxx
@@ -460,10 +460,10 @@ constexpr WinBits WB_EXTRAFIELD = 0x00004000;
 constexpr WinBits WB_RIGHT_ALIGNED = 0x00008000;
 constexpr auto WB_STDRULER = WB_HORZ;
 
-
+// tdf#84949 - TabAlign is used to identify the current tabulator alignment
 enum class RulerType { DontKnow, Outside,
                  Margin1, Margin2,
-                 Border, Indent, Tab };
+                 Border, Indent, Tab, TabAlign };
 
 enum class RulerExtra { DontKnow, NullOffset, Tab };
 
diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc
index 0aa190537145..011092678295 100644
--- a/include/svx/strings.hrc
+++ b/include/svx/strings.hrc
@@ -1314,11 +1314,16 @@
 
 #define RID_SVXSTR_QUERY_EXIT_RECOVERY                      
NC_("RID_SVXSTR_QUERY_EXIT_RECOVERY", "Are you sure you want to discard the 
%PRODUCTNAME document recovery data?")
 
-#define RID_SVXSTR_RULER_TAB_LEFT                           
NC_("RID_SVXSTR_RULER_TAB_LEFT", "Left")
-#define RID_SVXSTR_RULER_TAB_RIGHT                          
NC_("RID_SVXSTR_RULER_TAB_RIGHT", "Right")
-#define RID_SVXSTR_RULER_TAB_CENTER                         
NC_("RID_SVXSTR_RULER_TAB_CENTER", "Center")
+#define RID_SVXSTR_RULER_TAB_LEFT                           
NC_("RID_SVXSTR_RULER_TAB_LEFT", "Left/Top")
+#define RID_SVXSTR_RULER_TAB_RIGHT                          
NC_("RID_SVXSTR_RULER_TAB_RIGHT", "Right/Bottom")
+#define RID_SVXSTR_RULER_TAB_CENTER                         
NC_("RID_SVXSTR_RULER_TAB_CENTER", "Centered")
 #define RID_SVXSTR_RULER_TAB_DECIMAL                        
NC_("RID_SVXSTR_RULER_TAB_DECIMAL", "Decimal")
 
+#define RID_SVXSTR_RULER_TAB_POS_LEFT                       
NC_("RID_SVXSTR_RULER_TAB_POS_LEFT", "Tab Position: Left/Top")
+#define RID_SVXSTR_RULER_TAB_POS_RIGHT                      
NC_("RID_SVXSTR_RULER_TAB_POS_RIGHT", "Tab Position: Right/Bottom")
+#define RID_SVXSTR_RULER_TAB_POS_CENTER                     
NC_("RID_SVXSTR_RULER_TAB_POS_CENTER", "Tab Position: Centered")
+#define RID_SVXSTR_RULER_TAB_POS_DECIMAL                    
NC_("RID_SVXSTR_RULER_TAB_POS_DECIMAL", "Tab Position: Decimal")
+
 #define RID_SVXSTR_INSERT_HELPTEXT                          
NC_("RID_SVXSTR_INSERT_HELPTEXT", "Insert mode. Click to change to overwrite 
mode.")
 #define RID_SVXSTR_OVERWRITE_HELPTEXT                       
NC_("RID_SVXSTR_OVERWRITE_HELPTEXT", "Overwrite mode. Click to change to insert 
mode.")
 // To be shown in the status bar when in overwrite mode, please try to make it 
not longer than the word 'Overwrite'.
diff --git a/svtools/source/control/ruler.cxx b/svtools/source/control/ruler.cxx
index ebd4b1908dc5..3b16fa111b66 100644
--- a/svtools/source/control/ruler.cxx
+++ b/svtools/source/control/ruler.cxx
@@ -1469,6 +1469,15 @@ bool Ruler::ImplDoHitTest( const Point& rPos, 
RulerSelection* pHitTest,
     else
         nXExtraOff = 0;
 
+    // tdf#84949 - check if the mouse is moved over the extra field
+    // to show a tooltip for left, center, right, and decimal tab
+    if (maExtraRect.Contains(Point(nX, nY)))
+    {
+        pHitTest->nPos = nX;
+        pHitTest->eType = RulerType::TabAlign;
+        return true;
+    }
+
     // test if outside
     nX -= mnVirOff;
     if ( (nX < mpData->nRulVirOff - nXExtraOff) ||
diff --git a/svx/source/dialog/svxruler.cxx b/svx/source/dialog/svxruler.cxx
index b1c6fc8c4fa0..0da1b7246eff 100644
--- a/svx/source/dialog/svxruler.cxx
+++ b/svx/source/dialog/svxruler.cxx
@@ -523,6 +523,10 @@ void SvxRuler::UpdateFrame()
     }
 }
 
+const TranslateId RID_SVXSTR_RULER_TAB_POS[]
+    = { RID_SVXSTR_RULER_TAB_POS_LEFT, RID_SVXSTR_RULER_TAB_POS_RIGHT,
+        RID_SVXSTR_RULER_TAB_POS_CENTER, RID_SVXSTR_RULER_TAB_POS_DECIMAL };
+
 void SvxRuler::MouseMove( const MouseEvent& rMEvt )
 {
     if( bActive )
@@ -629,6 +633,12 @@ void SvxRuler::MouseMove( const MouseEvent& rMEvt )
 
             break;
         }
+        // tdf#84949 - show tooltip for left, center, right, and decimal tab
+        case RulerType::TabAlign:
+        {
+            SetQuickHelpText(SvxResId(RID_SVXSTR_RULER_TAB_POS[nDefTabType]));
+            break;
+        }
         default:
         {
             SetQuickHelpText(u""_ustr);

Reply via email to