[Libreoffice-commits] core.git: sw/inc sw/source

Jim Raykowski (via logerrit) logerrit at kemper.freedesktop.org
Thu Apr 29 05:27:50 UTC 2021


 sw/inc/bitmaps.hlst                  |    2 ++
 sw/inc/strings.hrc                   |    6 ++++++
 sw/source/core/crsr/crstrvl.cxx      |    3 ++-
 sw/source/uibase/inc/workctrl.hxx    |    4 +++-
 sw/source/uibase/ribbar/workctrl.cxx |   20 +++++++++++++++-----
 sw/source/uibase/uiview/viewmdi.cxx  |   26 ++++++++++++++++++++++++++
 6 files changed, 54 insertions(+), 7 deletions(-)

New commits:
commit 4bc0af27204f099f14cb4c97611089643cbe271c
Author:     Jim Raykowski <raykowj at gmail.com>
AuthorDate: Sun Mar 7 07:56:35 2021 -0900
Commit:     Jim Raykowski <raykowj at gmail.com>
CommitDate: Thu Apr 29 07:27:12 2021 +0200

    tdf#137741 Add ability to navigate by fields from Navigate By control
    
    Change-Id: I3cc464a3d5097b4e0438ea22ebf6daad5a2f2a86
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112144
    Tested-by: Jenkins
    Reviewed-by: Jim Raykowski <raykowj at gmail.com>

diff --git a/sw/inc/bitmaps.hlst b/sw/inc/bitmaps.hlst
index 5b7d13195135..a486eb386238 100644
--- a/sw/inc/bitmaps.hlst
+++ b/sw/inc/bitmaps.hlst
@@ -72,6 +72,8 @@
 #define RID_BMP_RIBBAR_FORMULA                  "sw/res/sr20018.png"
 #define RID_BMP_RIBBAR_ERROR                    "sw/res/sr20019.png"
 #define RID_BMP_RIBBAR_RECENCY                  "sw/res/sc20244.png"
+#define RID_BMP_RIBBAR_FIELD                    "sw/res/sc20244.png"
+#define RID_BMP_RIBBAR_FIELD_BYTYPE             "sw/res/sc20244.png"
 
 #define RID_BMP_NAVI_OUTLINE                    "sw/res/nc20000.png"
 #define RID_BMP_NAVI_TABLE                      "sw/res/nc20001.png"
diff --git a/sw/inc/strings.hrc b/sw/inc/strings.hrc
index f67b3ecf9a31..ade17282c17f 100644
--- a/sw/inc/strings.hrc
+++ b/sw/inc/strings.hrc
@@ -1181,6 +1181,8 @@
 #define ST_TABLE_FORMULA                        NC_("ST_TABLE_FORMULA", "Table formula")
 #define ST_TABLE_FORMULA_ERROR                  NC_("ST_TABLE_FORMULA_ERROR", "Wrong table formula")
 #define ST_RECENCY                              NC_("ST_RECENCY", "Recency")
+#define ST_FIELD                                NC_("ST_FIELD", "Field")
+#define ST_FIELD_BYTYPE                         NC_("ST_FIELD_BYTYPE", "Field by type")
 // Strings for the quickhelp of the View-PgUp/Down-Buttons
 #define STR_IMGBTN_TBL_DOWN                     NC_("STR_IMGBTN_TBL_DOWN", "Next table")
 #define STR_IMGBTN_FRM_DOWN                     NC_("STR_IMGBTN_FRM_DOWN", "Next frame")
@@ -1220,6 +1222,10 @@
 #define STR_IMGBTN_TBLFML_ERR_DOWN              NC_("STR_IMGBTN_TBLFML_ERR_DOWN", "Next faulty table formula")
 #define STR_IMGBTN_RECENCY_UP                   NC_("STR_IMGBTN_RECENCY_UP", "Go back")
 #define STR_IMGBTN_RECENCY_DOWN                 NC_("STR_IMGBTN_RECENCY_DOWN", "Go forward")
+#define STR_IMGBTN_FIELD_UP                     NC_("STR_IMGBTN_FIELD_UP", "Previous field")
+#define STR_IMGBTN_FIELD_DOWN                   NC_("STR_IMGBTN_FIELD_DOWN", "Next field")
+#define STR_IMGBTN_FIELD_BYTYPE_UP              NC_("STR_IMGBTN_FIELD_BYTYPE_UP", "Previous field with current field type")
+#define STR_IMGBTN_FIELD_BYTYPE_DOWN            NC_("STR_IMGBTN_FIELD_BYTYPE_DOWN", "Next field with current field type")
 
 #define STR_REDLINE_INSERT                      NC_("STR_REDLINE_INSERT", "Inserted")
 #define STR_REDLINE_DELETE                      NC_("STR_REDLINE_DELETE", "Deleted")
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 3b2ad6514a51..58bf0b4f9626 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -729,10 +729,11 @@ bool SwCursorShell::MoveFieldType(
     {
         const SwFieldTypes& rFieldTypes = *mxDoc->getIDocumentFieldsAccess().GetFieldTypes();
         const size_t nSize = rFieldTypes.size();
+        const bool bAllFieldTypes = nResType == SwFieldIds::Unknown;
         for( size_t i=0; i < nSize; ++i )
         {
             pFieldType = rFieldTypes[ i ].get();
-            if( nResType == pFieldType->Which() )
+            if (bAllFieldTypes || nResType == pFieldType->Which())
             {
                 ::lcl_MakeFieldLst( aSrtLst, *pFieldType, IsReadOnlyAvailable() );
             }
diff --git a/sw/source/uibase/inc/workctrl.hxx b/sw/source/uibase/inc/workctrl.hxx
index de05fe608633..7f4d93a4afae 100644
--- a/sw/source/uibase/inc/workctrl.hxx
+++ b/sw/source/uibase/inc/workctrl.hxx
@@ -47,7 +47,9 @@ class SwView;
 #define NID_TABLE_FORMULA   20016
 #define NID_TABLE_FORMULA_ERROR     20017
 #define NID_RECENCY 20018
-#define NID_COUNT  19
+#define NID_FIELD   20019
+#define NID_FIELD_BYTYPE    20020
+#define NID_COUNT  21
 
 class SwTbxAutoTextCtrl : public SfxToolBoxControl
 {
diff --git a/sw/source/uibase/ribbar/workctrl.cxx b/sw/source/uibase/ribbar/workctrl.cxx
index 6a88d7c1a072..fe443c9aa99b 100644
--- a/sw/source/uibase/ribbar/workctrl.cxx
+++ b/sw/source/uibase/ribbar/workctrl.cxx
@@ -59,7 +59,7 @@
 #include <sfx2/viewfrm.hxx>
 
 // Size check
-#define NAVI_ENTRIES 19
+#define NAVI_ENTRIES 21
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -179,7 +179,9 @@ static sal_uInt16 aNavigationInsertIds[ NAVI_ENTRIES ] =
     NID_INDEX_ENTRY,
     NID_TABLE_FORMULA,
     NID_TABLE_FORMULA_ERROR,
-    NID_RECENCY
+    NID_RECENCY,
+    NID_FIELD,
+    NID_FIELD_BYTYPE
 };
 
 std::u16string_view const aNavigationImgIds[ NAVI_ENTRIES ] =
@@ -202,7 +204,9 @@ std::u16string_view const aNavigationImgIds[ NAVI_ENTRIES ] =
     u"" RID_BMP_RIBBAR_ENTRY,
     u"" RID_BMP_RIBBAR_FORMULA,
     u"" RID_BMP_RIBBAR_ERROR,
-    u"" RID_BMP_RIBBAR_RECENCY
+    u"" RID_BMP_RIBBAR_RECENCY,
+    u"" RID_BMP_RIBBAR_FIELD,
+    u"" RID_BMP_RIBBAR_FIELD_BYTYPE
 };
 
 static const char* aNavigationStrIds[ NAVI_ENTRIES ] =
@@ -225,7 +229,9 @@ static const char* aNavigationStrIds[ NAVI_ENTRIES ] =
     ST_INDEX_ENTRY,
     ST_TABLE_FORMULA,
     ST_TABLE_FORMULA_ERROR,
-    ST_RECENCY
+    ST_RECENCY,
+    ST_FIELD,
+    ST_FIELD_BYTYPE
 };
 
 // these are global strings
@@ -250,6 +256,8 @@ static const char* STR_IMGBTN_ARY[] =
     STR_IMGBTN_TBLFML_DOWN,
     STR_IMGBTN_TBLFML_ERR_DOWN,
     STR_IMGBTN_RECENCY_DOWN,
+    STR_IMGBTN_FIELD_DOWN,
+    STR_IMGBTN_FIELD_BYTYPE_DOWN,
     STR_IMGBTN_TBL_UP,
     STR_IMGBTN_FRM_UP,
     STR_IMGBTN_PGE_UP,
@@ -268,7 +276,9 @@ static const char* STR_IMGBTN_ARY[] =
     STR_IMGBTN_INDEX_ENTRY_UP,
     STR_IMGBTN_TBLFML_UP,
     STR_IMGBTN_TBLFML_ERR_UP,
-    STR_IMGBTN_RECENCY_UP
+    STR_IMGBTN_RECENCY_UP,
+    STR_IMGBTN_FIELD_UP,
+    STR_IMGBTN_FIELD_BYTYPE_UP,
 };
 
 static OUString lcl_GetScrollToolTip(bool bNext)
diff --git a/sw/source/uibase/uiview/viewmdi.cxx b/sw/source/uibase/uiview/viewmdi.cxx
index 69bd97623606..f2d3c5747d9e 100644
--- a/sw/source/uibase/uiview/viewmdi.cxx
+++ b/sw/source/uibase/uiview/viewmdi.cxx
@@ -422,6 +422,32 @@ IMPL_LINK( SwView, MoveNavigationHdl, void*, p, void )
             GetViewFrame()->GetDispatcher()->Execute(bNext ?
                                         FN_NEXT_BOOKMARK :
                                             FN_PREV_BOOKMARK);
+            break;
+        case NID_FIELD:
+            rSh.EnterStdMode();
+            rSh.MoveFieldType(nullptr, bNext, SwFieldIds::Unknown);
+        break;
+        case NID_FIELD_BYTYPE:
+        {
+            // see: SwFieldMgr::GoNextPrev
+            SwField* pCurField = rSh.GetCurField(true);
+            if (!pCurField)
+                break;
+            rSh.EnterStdMode();
+            SwFieldType* pTyp = nullptr;
+            const SwFieldTypesEnum nTypeId = pCurField->GetTypeId();
+            if (SwFieldTypesEnum::SetInput == nTypeId || SwFieldTypesEnum::UserInput == nTypeId)
+                pTyp = rSh.GetFieldType(0, SwFieldIds::Input);
+            else
+                pTyp = pCurField->GetTyp();
+            if (pTyp)
+            {
+                if (pTyp->Which() == SwFieldIds::Database)
+                    rSh.MoveFieldType(nullptr, bNext, SwFieldIds::Database);
+                else
+                    rSh.MoveFieldType(pTyp, bNext);
+            }
+        }
         break;
         case NID_OUTL:
             rSh.EnterStdMode();


More information about the Libreoffice-commits mailing list