diff options
author | Zolnai Tamás <zolniatamas@caesar.elte.hu> | 2012-08-10 09:32:03 +0200 |
---|---|---|
committer | Andras Timar <atimar@suse.com> | 2012-08-10 21:51:43 +0200 |
commit | b68ad0ba9ceb8bdfc9fc3a3211c254824d38c267 (patch) | |
tree | da9f01e5f49f79bd72a4366172f461b3491210a4 /svx | |
parent | 35b6007b7f62b75a3e6ec924fa5863cd6e7a53e0 (diff) |
fdo#37791 Insert selected text to Findbar by Ctrl F
The dispatch function of FindbarDispatcher class is called when
Ctrl+f is pressed. This function makes Toolbar visible and takes
focus to TextField. So expand this function to insert the selected
text to TextField at the same time. With dynamic_cast convert
Window pointer, which point to the TextField and call TextField's new
function: SetTextToSelected_Impl(), which makes the mentioned
insertion.
Plus make a little cleanup. Replace one string, which is defined by
a macro.
Change-Id: I2a8a3b10a016f5b28ea58fa3e63a3f31c9a816bf
Signed-off-by: Andras Timar <atimar@suse.com>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/inc/tbunosearchcontrollers.hxx | 1 | ||||
-rw-r--r-- | svx/source/tbxctrls/tbunosearchcontrollers.cxx | 50 |
2 files changed, 32 insertions, 19 deletions
diff --git a/svx/inc/tbunosearchcontrollers.hxx b/svx/inc/tbunosearchcontrollers.hxx index 91ddec8ba12e..490a3f0aebf2 100644 --- a/svx/inc/tbunosearchcontrollers.hxx +++ b/svx/inc/tbunosearchcontrollers.hxx @@ -65,6 +65,7 @@ public: void InitControls_Impl(); void Remember_Impl(const String& rStr); + void SetTextToSelected_Impl(); private: diff --git a/svx/source/tbxctrls/tbunosearchcontrollers.cxx b/svx/source/tbxctrls/tbunosearchcontrollers.cxx index f53dab21f4ec..4deaf8c5f545 100644 --- a/svx/source/tbxctrls/tbunosearchcontrollers.cxx +++ b/svx/source/tbxctrls/tbunosearchcontrollers.cxx @@ -117,6 +117,32 @@ void FindTextFieldControl::Remember_Impl(const String& rStr) InsertEntry(rStr, 0); } +void FindTextFieldControl::SetTextToSelected_Impl() +{ + OUString aString; + + try + { + css::uno::Reference<css::frame::XController> xController(m_xFrame->getController(), css::uno::UNO_QUERY_THROW); + css::uno::Reference<css::frame::XModel> xModel(xController->getModel(), css::uno::UNO_QUERY_THROW); + css::uno::Reference<css::container::XIndexAccess> xIndexAccess(xModel->getCurrentSelection(), css::uno::UNO_QUERY_THROW); + if (xIndexAccess->getCount() > 0) + { + css::uno::Reference<css::text::XTextRange> xTextRange(xIndexAccess->getByIndex(0), css::uno::UNO_QUERY_THROW); + aString = xTextRange->getString(); + } + } + catch ( ... ) + { + } + + if ( aString.getLength() != 0 ) + { + SetText( aString ); + m_bToClearTextField = sal_False; + } +} + void FindTextFieldControl::Modify() { ComboBox::Modify(); @@ -186,24 +212,7 @@ long FindTextFieldControl::PreNotify( NotifyEvent& rNEvt ) case EVENT_GETFOCUS: if ( m_bToClearTextField ) { - String aString; - - try - { - css::uno::Reference<css::frame::XController> xController(m_xFrame->getController(), css::uno::UNO_QUERY_THROW); - css::uno::Reference<css::frame::XModel> xModel(xController->getModel(), css::uno::UNO_QUERY_THROW); - css::uno::Reference<css::container::XIndexAccess> xIndexAccess(xModel->getCurrentSelection(), css::uno::UNO_QUERY_THROW); - if (xIndexAccess->getCount() > 0) - { - css::uno::Reference<css::text::XTextRange> xTextRange(xIndexAccess->getByIndex(0), css::uno::UNO_QUERY_THROW); - aString = xTextRange->getString(); - } - } - catch ( ... ) - { - } - - SetText( aString ); + SetText( OUString() ); m_bToClearTextField = sal_False; } SetSelection( Selection( SELECTION_MIN, SELECTION_MAX ) ); @@ -760,11 +769,14 @@ void SAL_CALL FindbarDispatcher::dispatch( const css::util::URL& aURL, const css for ( sal_uInt16 i=0; i<nItemCount; ++i ) { ::rtl::OUString sItemCommand = pToolBox->GetItemCommand(i); - if ( sItemCommand == ".uno:FindText" ) + if ( sItemCommand == COMMAND_FINDTEXT ) { Window* pItemWin = pToolBox->GetItemWindow( i ); if ( pItemWin ) { + FindTextFieldControl* pFindTextFieldControl = dynamic_cast<FindTextFieldControl*>(pItemWin); + if ( pFindTextFieldControl ) + pFindTextFieldControl->SetTextToSelected_Impl(); pItemWin->GrabFocus(); return; } |