related tdf#111733 TextCharacterSpacingControl sw: goto position tab

The kerning button on the sidebar very unhelpfully launches
the character properties dialog at the last-used tab,
instead of bringing the user directly to the "position" tab
where the kerning (.uno:Spacing) property can be found.

Notes:
-sw draw text (eg. textbox) does nothing - no dialog at all
-sw comments also do nothing
-sc does nothing
-sd does nothing

Somehow the sidebar is calling SID_ATTR_CHAR_KERNING,
but I can't find out where. In any case, I have to change
this SID_ATTR_CHAR_KERNING into SID_CHAR_DLG_POSITION
for these "do nothing" situations. That can happen in
separate commits for each situation.

I basically copied SID_CHAR_DLG_EFFECTS which is
explicitly called in underline's "more options",
so it is used a bit differently.

Change-Id: I833d54da3664b9c01325130a2c36bbbe90b2b878
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129043
Tested-by: Justin Luth <jluth@mail.com>
Reviewed-by: Justin Luth <jluth@mail.com>
diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc
index 467a96e..f4623b6 100644
--- a/include/svx/svxids.hrc
+++ b/include/svx/svxids.hrc
@@ -958,6 +958,7 @@ class SvxViewLayoutItem;

#define SID_CELL_FORMAT_BORDER                          ( SID_SVX_START + 1132 )
#define SID_CHAR_DLG_EFFECT                             ( SID_SVX_START + 1133 )
#define SID_CHAR_DLG_POSITION                           ( SID_SVX_START + 1134 )

#define FN_SVX_SET_NUMBER                               ( SID_SVX_START + 1136 )
#define FN_SVX_SET_BULLET                               ( SID_SVX_START + 1137 )
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index d97996d..9cea6ad 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -6676,6 +6676,11 @@ bit 3 (0x8): #define UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON 8
          <value xml:lang="en-US">Character Font Effects...</value>
        </prop>
      </node>
      <node oor:name=".uno:FontPositionDialog" oor:op="replace">
        <prop oor:name="Label" oor:type="xs:string">
          <value xml:lang="en-US">Character Font Position...</value>
        </prop>
      </node>
      <node oor:name=".uno:FormatMenu" oor:op="replace">
        <prop oor:name="Label" oor:type="xs:string">
          <value xml:lang="en-US">F~ormat</value>
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index 84f959f..2ea903d 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -3008,6 +3008,25 @@ SfxVoidItem FontEffectsDialog SID_CHAR_DLG_EFFECT
]


SfxVoidItem FontPositionDialog SID_CHAR_DLG_POSITION
()
[
    AutoUpdate = FALSE,
    FastCall = FALSE,
    ReadOnlyDoc = FALSE,
    Toggle = FALSE,
    Container = FALSE,
    RecordAbsolute = FALSE,
    RecordPerItem;
    Asynchron;

    AccelConfig = TRUE,
    MenuConfig = TRUE,
    ToolBoxConfig = TRUE,
    GroupId = SfxGroupId::Format;
]


SvxFontHeightItem  FontHeight SID_ATTR_CHAR_FONTHEIGHT

[
diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi
index 38359c5..c30d3b2 100644
--- a/sw/sdi/_textsh.sdi
+++ b/sw/sdi/_textsh.sdi
@@ -1531,6 +1531,11 @@ interface BaseText
        ExecMethod = Execute ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_CHAR_DLG_POSITION
    [
        ExecMethod = Execute ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_CHAR_DLG_FOR_PARAGRAPH
    [
        ExecMethod = Execute ;
diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx
index 3e13df5e..b2f8abd 100644
--- a/sw/source/uibase/shells/basesh.cxx
+++ b/sw/source/uibase/shells/basesh.cxx
@@ -2173,12 +2173,12 @@ SwBaseShell::~SwBaseShell()
void SwBaseShell::ExecTextCtrl( SfxRequest& rReq )
{
    const SfxItemSet *pArgs = rReq.GetArgs();
    const sal_uInt16 nSlot = rReq.GetSlot();

    if( pArgs)
    {
        SwWrtShell &rSh = GetShell();
        std::unique_ptr<SvxScriptSetItem> pSSetItem;
        sal_uInt16 nSlot = rReq.GetSlot();
        SfxItemPool& rPool = rSh.GetAttrPool();
        sal_uInt16 nWhich = rPool.GetWhich( nSlot );
        SvtScriptType nScripts = SvtScriptType::LATIN | SvtScriptType::ASIAN | SvtScriptType::COMPLEX;
@@ -2292,7 +2292,12 @@ void SwBaseShell::ExecTextCtrl( SfxRequest& rReq )
        }
    }
    else
        GetView().GetViewFrame()->GetDispatcher()->Execute( SID_CHAR_DLG );
    {
        if (nSlot == SID_ATTR_CHAR_KERNING)
            GetView().GetViewFrame()->GetDispatcher()->Execute(SID_CHAR_DLG_POSITION);
        else
            GetView().GetViewFrame()->GetDispatcher()->Execute(SID_CHAR_DLG);
    }
    rReq.Done();
}

diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx
index 0436659..4677237 100644
--- a/sw/source/uibase/shells/textsh1.cxx
+++ b/sw/source/uibase/shells/textsh1.cxx
@@ -164,6 +164,8 @@ static void sw_CharDialog(SwWrtShell &rWrtSh, bool bUseDialog, sal_uInt16 nSlot,
            pDlg->SetCurPageId("hyperlink");
        else if (nSlot == SID_CHAR_DLG_EFFECT)
            pDlg->SetCurPageId("fonteffects");
        else if (nSlot == SID_CHAR_DLG_POSITION)
            pDlg->SetCurPageId("position");
        else if (nSlot == SID_CHAR_DLG_FOR_PARAGRAPH)
            pDlg->SetCurPageId("font");
        else if (pReq)
@@ -946,6 +948,7 @@ void SwTextShell::Execute(SfxRequest &rReq)
        }
        case SID_CHAR_DLG:
        case SID_CHAR_DLG_EFFECT:
        case SID_CHAR_DLG_POSITION:
        {
            sw_CharDialog( rWrtSh, bUseDialog, nSlot, pArgs, &rReq );
        }