sc/sdi/cellsh.sdi | 3 + sc/source/ui/src/popup.src | 25 ++++++++++++++ sc/source/ui/view/cellsh.cxx | 4 ++ sc/source/ui/view/cellsh1.cxx | 24 +++++++++++++- sfx2/inc/sfx2/sfxcommands.h | 3 + sfx2/inc/sfx2/sfxsids.hrc | 6 +-- sfx2/sdi/sfx.sdi | 72 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 133 insertions(+), 4 deletions(-)
New commits: commit 710d768aafd6b2c1fdc5627bede25000c3e346d5 Author: Noel Power <noel.po...@novell.com> Date: Thu Mar 29 19:42:54 2012 +0100 add for calc extra paste ctx menu with options to paste text or formula only diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi index ce942e2..4f586e8 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 441c336..de6fba5 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 c1e5670..0d76bb7 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 3c6807f..99921c7 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 ee56e78..e6e22c2 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 f7cb90b..94b2ea6 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 6b197c7..00885e3 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 _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits