summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorZolnai Tamás <zolniatamas@caesar.elte.hu>2012-08-10 09:32:03 +0200
committerAndras Timar <atimar@suse.com>2012-08-10 21:51:43 +0200
commitb68ad0ba9ceb8bdfc9fc3a3211c254824d38c267 (patch)
treeda9f01e5f49f79bd72a4366172f461b3491210a4 /svx
parent35b6007b7f62b75a3e6ec924fa5863cd6e7a53e0 (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.hxx1
-rw-r--r--svx/source/tbxctrls/tbunosearchcontrollers.cxx50
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;
}