summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/sdi/cellsh.sdi3
-rw-r--r--sc/source/ui/src/popup.src25
-rw-r--r--sc/source/ui/view/cellsh.cxx4
-rw-r--r--sc/source/ui/view/cellsh1.cxx24
-rw-r--r--sfx2/inc/sfx2/sfxcommands.h3
-rw-r--r--sfx2/inc/sfx2/sfxsids.hrc6
-rw-r--r--sfx2/sdi/sfx.sdi72
7 files changed, 133 insertions, 4 deletions
diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi
index ce942e2c8948..4f586e88523a 100644
--- a/sc/sdi/cellsh.sdi
+++ b/sc/sdi/cellsh.sdi
@@ -160,6 +160,9 @@ interface CellSelection
SID_COPY [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
SID_PASTE [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
SID_PASTE_SPECIAL [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
+ SID_PASTE_ONLY [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
+ SID_PASTE_ONLY_TEXT [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
+ SID_PASTE_ONLY_FORMULA [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
SID_CLIPBOARD_FORMAT_ITEMS [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
SID_EXTERNAL_SOURCE [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
FID_MERGE_ON [ ExecMethod = Execute; StateMethod = GetState; ]
diff --git a/sc/source/ui/src/popup.src b/sc/source/ui/src/popup.src
index 441c336cb9c0..de6fba55376e 100644
--- a/sc/source/ui/src/popup.src
+++ b/sc/source/ui/src/popup.src
@@ -133,6 +133,31 @@ Menu RID_POPUP_CELLS
HelpId = CMD_SID_PASTE_SPECIAL ;
Text [ en-US ] = "P~aste Special..." ;
};
+
+ MenuItem
+ {
+ Identifier = SID_PASTE_ONLY ;
+ HelpId = CMD_SID_PASTE_ONLY ;
+ Text [ en-US ] = "Paste O~nly" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_PASTE_ONLY_TEXT ;
+ HelpId = CMD_SID_PASTE_ONLY_TEXT ;
+ Text [ en-US ] = "~Text" ;
+ };
+ MenuItem
+ {
+ Identifier = SID_PASTE_ONLY_FORMULA ;
+ HelpId = CMD_SID_PASTE_ONLY_FORMULA ;
+ Text [ en-US ] = "~Formula" ;
+ };
+ };
+ };
+ };
//------------------------------
MenuItem { Separator = TRUE ; };
//------------------------------
diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx
index c1e56709fef4..0d76bb7494f5 100644
--- a/sc/source/ui/view/cellsh.cxx
+++ b/sc/source/ui/view/cellsh.cxx
@@ -449,6 +449,8 @@ IMPL_LINK( ScCellShell, ClipboardChanged, TransferableDataHelper*, pDataHelper )
SfxBindings& rBindings = GetViewData()->GetBindings();
rBindings.Invalidate( SID_PASTE );
rBindings.Invalidate( SID_PASTE_SPECIAL );
+ rBindings.Invalidate( SID_PASTE_ONLY_TEXT );
+ rBindings.Invalidate( SID_PASTE_ONLY_FORMULA );
rBindings.Invalidate( SID_CLIPBOARD_FORMAT_ITEMS );
}
return 0;
@@ -537,6 +539,8 @@ void ScCellShell::GetClipState( SfxItemSet& rSet )
{
rSet.DisableItem( SID_PASTE );
rSet.DisableItem( SID_PASTE_SPECIAL );
+ rSet.DisableItem( SID_PASTE_ONLY_TEXT );
+ rSet.DisableItem( SID_PASTE_ONLY_FORMULA );
rSet.DisableItem( SID_CLIPBOARD_FORMAT_ITEMS );
}
else if ( rSet.GetItemState( SID_CLIPBOARD_FORMAT_ITEMS ) != SFX_ITEM_UNKNOWN )
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 3c6807f5b25a..99921c767317 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -1331,9 +1331,11 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
if ( bAsLink && bOtherDoc )
pTabViewShell->PasteFromSystem(SOT_FORMATSTR_ID_LINK); // DDE insert
else
+ {
pTabViewShell->PasteFromClip( nFlags, pOwnClip->GetDocument(),
nFunction, bSkipEmpty, bTranspose, bAsLink,
eMoveMode, IDF_NONE, sal_True ); // allow warning dialog
+ }
}
if( !pReqArgs )
@@ -1367,7 +1369,27 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
}
pTabViewShell->CellContentChanged(); // => PasteFromXXX ???
break;
-
+ case SID_PASTE_ONLY_TEXT:
+ case SID_PASTE_ONLY_FORMULA:
+ {
+ Window* pWin = GetViewData()->GetActiveWin();
+ if ( ScTransferObj::GetOwnClipboard( pWin ) ) // own cell data
+ {
+ rReq.SetSlot( FID_INS_CELL_CONTENTS );
+ rtl::OUString aFlags;
+ if ( nSlot == SID_PASTE_ONLY_TEXT )
+ aFlags = "VDS";
+ else
+ aFlags = "F";
+ rReq.AppendItem( SfxStringItem( FID_INS_CELL_CONTENTS, aFlags ) );
+ ExecuteSlot( rReq, GetInterface() );
+ rReq.SetReturnValue(SfxInt16Item(nSlot, 1)); // 1 = success
+ pTabViewShell->CellContentChanged();
+ }
+ else
+ rReq.SetReturnValue(SfxInt16Item(nSlot, 0)); // 0 = fail
+ break;
+ }
case SID_PASTE_SPECIAL:
// differentiate between own cell data and draw objects/external data
// this makes FID_INS_CELL_CONTENTS superfluous
diff --git a/sfx2/inc/sfx2/sfxcommands.h b/sfx2/inc/sfx2/sfxcommands.h
index ee56e787f0af..e6e22c296f00 100644
--- a/sfx2/inc/sfx2/sfxcommands.h
+++ b/sfx2/inc/sfx2/sfxcommands.h
@@ -201,6 +201,9 @@
#define CMD_SID_PASTE ".uno:Paste"
#define CMD_SID_CLIPBOARD_FORMAT_ITEMS ".uno:ClipboardFormatItems"
#define CMD_SID_PASTE_SPECIAL ".uno:PasteSpecial"
+#define CMD_SID_PASTE_ONLY ".uno:PasteOnly"
+#define CMD_SID_PASTE_ONLY_TEXT ".uno:PasteOnlyText"
+#define CMD_SID_PASTE_ONLY_FORMULA ".uno:PasteOnlyFormula"
#define CMD_SID_DOCPATH ".uno:DocPath"
#define CMD_SID_PICKLIST ".uno:PickList"
#define CMD_SID_PLUGINS_ACTIVE ".uno:PlugInsActive"
diff --git a/sfx2/inc/sfx2/sfxsids.hrc b/sfx2/inc/sfx2/sfxsids.hrc
index f7cb90b59135..94b2ea6cbcbd 100644
--- a/sfx2/inc/sfx2/sfxsids.hrc
+++ b/sfx2/inc/sfx2/sfxsids.hrc
@@ -536,9 +536,9 @@
// default-ids for macros
#define SID_RECORDING_FLOATWINDOW (SID_SFX_START + 800)
#define SID_RECORDMACRO (SID_SFX_START + 1669)
- // FREE: SID_SFX_START + 801
- // FREE: SID_SFX_START + 802
- // FREE: SID_SFX_START + 803
+#define SID_PASTE_ONLY (SID_SFX_START + 801)
+#define SID_PASTE_ONLY_TEXT (SID_SFX_START + 802)
+#define SID_PASTE_ONLY_FORMULA (SID_SFX_START + 803)
// FREE: SID_SFX_START + 804
// FREE: SID_SFX_START + 805
// FREE: SID_SFX_START + 806
diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi
index 6b197c719b2e..00885e357990 100644
--- a/sfx2/sdi/sfx.sdi
+++ b/sfx2/sdi/sfx.sdi
@@ -4630,6 +4630,78 @@ SfxInt16Item PasteSpecial SID_PASTE_SPECIAL
GroupId = GID_EDIT;
]
+SfxVoidItem PasteOnly SID_PASTE_ONLY
+()
+[
+ /* 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 = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+SfxVoidItem PasteOnlyText SID_PASTE_ONLY_TEXT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+SfxVoidItem PasteOnlyFormula SID_PASTE_ONLY_FORMULA
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
//--------------------------------------------------------------------------
SfxStringItem DocPath SID_DOCPATH