summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2012-05-14 10:02:12 +0200
committerMiklos Vajna <vmiklos@suse.cz>2012-05-14 10:03:02 +0200
commit2b92546ee3aa3d56f64c68ff3e8e782b3c56dba4 (patch)
treebec48a9c3a90c38ba7b2e6fce890a05947ae5739
parent73c40f95742b6b4854cae177a711098dc106c35d (diff)
fdo#49750 findbar: try to fill empty textfield with selected text
Change-Id: I583bb91e7fc325557abcc0756506133112da895c
-rw-r--r--svx/source/tbxctrls/tbunosearchcontrollers.cxx20
1 files changed, 19 insertions, 1 deletions
diff --git a/svx/source/tbxctrls/tbunosearchcontrollers.cxx b/svx/source/tbxctrls/tbunosearchcontrollers.cxx
index 4e63eef5b7a0..5fddc89c48a5 100644
--- a/svx/source/tbxctrls/tbunosearchcontrollers.cxx
+++ b/svx/source/tbxctrls/tbunosearchcontrollers.cxx
@@ -33,6 +33,7 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/frame/XLayoutManager.hpp>
+#include <com/sun/star/text/XTextRange.hpp>
#include <com/sun/star/ui/XUIElement.hpp>
#include <com/sun/star/util/URL.hpp>
@@ -185,7 +186,24 @@ long FindTextFieldControl::PreNotify( NotifyEvent& rNEvt )
case EVENT_GETFOCUS:
if ( m_bToClearTextField )
{
- SetText( String() );
+ 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 );
m_bToClearTextField = sal_False;
}
SetSelection( Selection( SELECTION_MIN, SELECTION_MAX ) );