editeng/source/editeng/editview.cxx |    5 +++++
 editeng/source/editeng/impedit.cxx  |    6 ++++++
 editeng/source/editeng/impedit.hxx  |    6 ++++++
 include/editeng/editview.hxx        |   12 ++++++++++++
 4 files changed, 29 insertions(+)

New commits:
commit b9dc126723594f1de7f4479233340d3f00f1f173
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Thu Apr 27 15:59:43 2023 -0400
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Fri May 19 13:12:28 2023 +0200

    lok: editeng: add LOK special flags
    
    The function "IsRightToLeft" fails in Hebrew language
    when Calc has a layout RTL, create a special flag to handle.
    
    Signed-off-by: Henry Castro <hcas...@collabora.com>
    Change-Id: I661f49dc5990f39807c6dba10970dea8c502643c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151145
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151971
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/editeng/source/editeng/editview.cxx 
b/editeng/source/editeng/editview.cxx
index f243d6d8feb6..d8eae893dd71 100644
--- a/editeng/source/editeng/editview.cxx
+++ b/editeng/source/editeng/editview.cxx
@@ -1726,6 +1726,11 @@ bool EditView::HasLOKSpecialPositioning() const
     return pImpEditView->HasLOKSpecialPositioning();
 }
 
+void EditView::SetLOKSpecialFlags(LOKSpecialFlags eFlags)
+{
+    pImpEditView->SetLOKSpecialFlags(eFlags);
+}
+
 void EditView::SuppressLOKMessages(bool bSet)
 {
     pImpEditView->SuppressLOKMessages(bSet);
diff --git a/editeng/source/editeng/impedit.cxx 
b/editeng/source/editeng/impedit.cxx
index 7d378af4da14..c8d0b56a4245 100644
--- a/editeng/source/editeng/impedit.cxx
+++ b/editeng/source/editeng/impedit.cxx
@@ -2749,4 +2749,10 @@ bool ImpEditView::HasLOKSpecialPositioning() const
     return bool(mpLOKSpecialPositioning);
 }
 
+void ImpEditView::SetLOKSpecialFlags(LOKSpecialFlags eFlags)
+{
+    assert(mpLOKSpecialPositioning);
+    mpLOKSpecialPositioning->SetFlags(eFlags);
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/editeng/source/editeng/impedit.hxx 
b/editeng/source/editeng/impedit.hxx
index 3e54400ef0ce..002eb1e04c2a 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -234,6 +234,9 @@ public:
     Point            GetWindowPos(const Point& rDocPos, MapUnit eDocPosUnit) 
const;
     tools::Rectangle GetWindowPos(const tools::Rectangle& rDocRect, MapUnit 
eDocRectUnit) const;
 
+    void SetFlags(LOKSpecialFlags eFlags) { meFlags = eFlags; }
+    bool IsLayoutRTL() { return bool(meFlags & LOKSpecialFlags::LayoutRTL); }
+
     Point GetRefPoint() const;
 
 private:
@@ -244,6 +247,7 @@ private:
     tools::Rectangle maOutArea;
     Point maVisDocStartPos;
     MapUnit meUnit;
+    LOKSpecialFlags meFlags;
 };
 
 
@@ -467,6 +471,8 @@ public:
     tools::Rectangle GetLOKSpecialVisArea() const;
     bool HasLOKSpecialPositioning() const;
 
+    void SetLOKSpecialFlags(LOKSpecialFlags eFlags);
+
     void SuppressLOKMessages(bool bSet) { mbSuppressLOKMessages = bSet; }
     bool IsSuppressLOKMessages() const { return mbSuppressLOKMessages; }
 
diff --git a/include/editeng/editview.hxx b/include/editeng/editview.hxx
index 73d4c23f49a9..1ea777eb7d91 100644
--- a/include/editeng/editview.hxx
+++ b/include/editeng/editview.hxx
@@ -86,6 +86,16 @@ enum class ScrollRangeCheck
     PaperWidthTextSize = 2,   // VisArea must be within paper width, Text Size
 };
 
+enum class LOKSpecialFlags {
+    NONE               = 0x0000,
+    LayoutRTL          = 0x0001,
+};
+
+namespace o3tl
+{
+    template<> struct typed_flags<LOKSpecialFlags> : 
is_typed_flags<LOKSpecialFlags, 0x77> {};
+}
+
 // Helper class that allows to set a callback at the EditView. When
 // set, Invalidates and repaints are suppressed at the EditView, but
 // EditViewInvalidate() will be triggered to allow the consumer to
@@ -377,6 +387,8 @@ public:
     tools::Rectangle GetLOKSpecialVisArea() const;
     bool HasLOKSpecialPositioning() const;
 
+    void SetLOKSpecialFlags(LOKSpecialFlags eFlags);
+
     void SuppressLOKMessages(bool bSet);
     bool IsSuppressLOKMessages() const;
 

Reply via email to