[Libreoffice-commits] core.git: sc/sdi sc/source
Justin Luth
justin_luth at sil.org
Mon Sep 14 23:48:59 PDT 2015
sc/sdi/editsh.sdi | 2 ++
sc/sdi/scalc.sdi | 24 ++++++++++++++++++++++++
sc/source/ui/view/editsh.cxx | 41 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 67 insertions(+)
New commits:
commit 7c9a484249da249dea7129ca93f5d1cbf5fbe462
Author: Justin Luth <justin_luth at sil.org>
Date: Mon Sep 14 07:39:25 2015 +0300
tdf#73691 - add alt-x support to calc
Alt-X (Unicode notation toggling) was added to Writer
and Draw/Impress in earlier. This adds it to Calc as well.
Change-Id: Ieb5188b9ff35cb35941c36d22292069723df80b6
Reviewed-on: https://gerrit.libreoffice.org/18558
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
diff --git a/sc/sdi/editsh.sdi b/sc/sdi/editsh.sdi
index 52cc6b4..b5c35c9 100644
--- a/sc/sdi/editsh.sdi
+++ b/sc/sdi/editsh.sdi
@@ -43,6 +43,8 @@ interface TableText
SID_REDO [ ExecMethod = ExecuteUndo; StateMethod = GetUndoState; Export = FALSE; ]
SID_REPEAT [ ExecMethod = ExecuteUndo; StateMethod = GetUndoState; Export = FALSE; ]
+ SID_UNICODE_NOTATION_TOGGLE [ ExecMethod = Execute; Export = FALSE; ]
+
// ---- Attribute:
SID_ATTR_CHAR_FONT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
SID_ATTR_CHAR_FONTHEIGHT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi
index 1fade23..a33801b 100644
--- a/sc/sdi/scalc.sdi
+++ b/sc/sdi/scalc.sdi
@@ -8903,6 +8903,30 @@ SfxVoidItem ConvertFormulaToValue SID_CONVERT_FORMULA_TO_VALUE
GroupId = GID_OPTIONS;
]
+SfxVoidItem UnicodeNotationToggle SID_UNICODE_NOTATION_TOGGLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
SfxVoidItem ShowDetail SID_OUTLINE_SHOW
()
[
diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx
index 846d780..c95251e 100644
--- a/sc/source/ui/view/editsh.cxx
+++ b/sc/source/ui/view/editsh.cxx
@@ -21,6 +21,7 @@
#include <comphelper/string.hxx>
#include "scitems.hxx"
#include <editeng/eeitem.hxx>
+#include <i18nutil/unicode.hxx>
#include <svx/clipfmtitem.hxx>
#include <svx/svxdlg.hxx>
@@ -331,6 +332,46 @@ void ScEditShell::Execute( SfxRequest& rReq )
bSetModified = false;
}
return;
+ case SID_UNICODE_NOTATION_TOGGLE:
+ {
+ EditView* pActiveView = pHdl ? pHdl->GetActiveView() : pEditView;
+ if( pActiveView )
+ {
+ OUString sInput = pEngine->GetText();
+ ESelection aSel( pActiveView->GetSelection() );
+ if( aSel.HasRange() )
+ sInput = pActiveView->GetSelected();
+
+ if( aSel.nStartPos > aSel.nEndPos )
+ aSel.nEndPos = aSel.nStartPos;
+
+ //calculate a valid end-position by reading logical characters
+ sal_Int32 nUtf16Pos=0;
+ while( (nUtf16Pos < sInput.getLength()) && (nUtf16Pos < aSel.nEndPos) )
+ {
+ sInput.iterateCodePoints(&nUtf16Pos);
+ if( nUtf16Pos > aSel.nEndPos )
+ aSel.nEndPos = nUtf16Pos;
+ }
+
+ ToggleUnicodeCodepoint aToggle = ToggleUnicodeCodepoint();
+ while( nUtf16Pos && aToggle.AllowMoreInput( sInput[nUtf16Pos-1]) )
+ --nUtf16Pos;
+ OUString sReplacement = aToggle.ReplacementString();
+ if( !sReplacement.isEmpty() )
+ {
+ aSel.nStartPos = aSel.nEndPos - aToggle.StringToReplace().getLength();
+ pTableView->SetSelection( aSel );
+ pTableView->InsertText(sReplacement, true);
+ if( pTopView )
+ {
+ pTopView->SetSelection( aSel );
+ pTopView->InsertText(sReplacement, true);
+ }
+ }
+ }
+ }
+ break;
case SID_CHARMAP:
{
More information about the Libreoffice-commits
mailing list