diff options
-rw-r--r-- | vcl/unx/gtk/window/gtkframe.cxx | 38 |
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 ) |