summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/unx/gtk/window/gtkframe.cxx38
1 files changed, 19 insertions, 19 deletions
diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
index 03f8c59fcad1..eb87e7481496 100644
--- a/vcl/unx/gtk/window/gtkframe.cxx
+++ b/vcl/unx/gtk/window/gtkframe.cxx
@@ -4223,13 +4223,9 @@ uno::Reference<accessibility::XAccessibleEditableText>
return uno::Reference< accessibility::XAccessibleEditableText >();
}
-static uno::Reference<accessibility::XAccessibleEditableText> lcl_GetxText()
+static uno::Reference<accessibility::XAccessibleEditableText> lcl_GetxText(Window *pFocusWin)
{
uno::Reference<accessibility::XAccessibleEditableText> xText;
- Window* pFocusWin = ImplGetSVData()->maWinData.mpFocusWin;
- if (!pFocusWin)
- return xText;
-
try
{
uno::Reference< accessibility::XAccessible > xAccessible( pFocusWin->GetAccessible( true ) );
@@ -4238,36 +4234,40 @@ static uno::Reference<accessibility::XAccessibleEditableText> lcl_GetxText()
}
catch(const uno::Exception& e)
{
- g_warning( "Exception in getting input method surrounding text" );
+ SAL_WARN( "vcl.gtk", "Exception in getting input method surrounding text: " << e.Message);
}
return xText;
}
gboolean GtkSalFrame::IMHandler::signalIMRetrieveSurrounding( GtkIMContext* pContext, gpointer /*im_handler*/ )
{
- uno::Reference<accessibility::XAccessibleEditableText> xText = lcl_GetxText();
+ Window *pFocusWin = Application::GetFocusWindow();
+ if (!pFocusWin)
+ return true;
+ uno::Reference<accessibility::XAccessibleEditableText> xText = lcl_GetxText(pFocusWin);
if (xText.is())
{
sal_uInt32 nPosition = xText->getCaretPosition();
- rtl::OUString sAllText = xText->getText();
- if (sAllText.isEmpty())
- return sal_False;
- rtl::OString sUTF = rtl::OUStringToOString(sAllText, RTL_TEXTENCODING_UTF8);
- rtl::OUString sCursorText(sAllText.copy(0, nPosition));
- gtk_im_context_set_surrounding(pContext, sUTF.getStr(), sUTF.getLength(),
- rtl::OUStringToOString(sCursorText, RTL_TEXTENCODING_UTF8).getLength());
- return sal_True;
+ OUString sAllText = xText->getText();
+ OString sUTF = OUStringToOString(sAllText, RTL_TEXTENCODING_UTF8);
+ OUString sCursorText(sAllText.copy(0, nPosition));
+ gtk_im_context_set_surrounding(pContext, sUTF.getStr(), sUTF.getLength(),
+ OUStringToOString(sCursorText, RTL_TEXTENCODING_UTF8).getLength());
+ return true;
}
- return sal_False;
+ return false;
}
gboolean GtkSalFrame::IMHandler::signalIMDeleteSurrounding( GtkIMContext*, gint offset, gint nchars,
gpointer /*im_handler*/ )
{
- uno::Reference<accessibility::XAccessibleEditableText> xText = lcl_GetxText();
+ Window *pFocusWin = Application::GetFocusWindow();
+ if (!pFocusWin)
+ return true;
+ uno::Reference<accessibility::XAccessibleEditableText> xText = lcl_GetxText(pFocusWin);
if (xText.is())
{
sal_uInt32 nPosition = xText->getCaretPosition();
@@ -4282,10 +4282,10 @@ gboolean GtkSalFrame::IMHandler::signalIMDeleteSurrounding( GtkIMContext*, gint
nDeleteEnd = xText->getCharacterCount();
xText->deleteText(nDeletePos, nDeleteEnd);
- return sal_True;
+ return true;
}
- return sal_False;
+ return false;
}
Size GtkSalDisplay::GetScreenSize( int nDisplayScreen )