rpms/openoffice.org/devel openoffice.org-2.0.3.ooo68047.vcl.zwj.patch, NONE, 1.1 openoffice.org-2.0.3.ooo68048.vcl.imsurroundtext.patch, NONE, 1.1

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Tue Aug 1 15:50:58 UTC 2006


Author: caolanm

Update of /cvs/dist/rpms/openoffice.org/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv17168

Added Files:
	openoffice.org-2.0.3.ooo68047.vcl.zwj.patch 
	openoffice.org-2.0.3.ooo68048.vcl.imsurroundtext.patch 
Log Message:
new patches

openoffice.org-2.0.3.ooo68047.vcl.zwj.patch:
 source/gdi/sallayout.cxx     |    0 
 vcl/source/gdi/sallayout.cxx |    2 +-
 2 files changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE openoffice.org-2.0.3.ooo68047.vcl.zwj.patch ---
Index: source/gdi/sallayout.cxx
===================================================================
RCS file: /cvs/gsl/vcl/source/gdi/sallayout.cxx,v
retrieving revision 1.78
diff -u -r1.78 sallayout.cxx
--- openoffice.org.orig/vcl/source/gdi/sallayout.cxx	3 May 2006 16:35:28 -0000	1.78
+++ openoffice.org/vcl/source/gdi/sallayout.cxx	1 Aug 2006 15:25:19 -0000
@@ -264,7 +264,7 @@
     if( (0x0001 <= cChar) && (cChar <= 0x001F) )
         return true;
     // formatting characters
-    if( (0x200B <= cChar) && (cChar <= 0x200F) )
+    if( (0x200E <= cChar) && (cChar <= 0x200F) )
         return true;
     if( (0x2028 <= cChar) && (cChar <= 0x202E) )
         return true;

openoffice.org-2.0.3.ooo68048.vcl.imsurroundtext.patch:
 gtkframe.cxx |   71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 70 insertions(+), 1 deletion(-)

--- NEW FILE openoffice.org-2.0.3.ooo68048.vcl.imsurroundtext.patch ---
Index: gtkframe.cxx
===================================================================
RCS file: /cvs/gsl/vcl/unx/gtk/window/gtkframe.cxx,v
retrieving revision 1.47
diff -u -r1.47 gtkframe.cxx
--- openoffice.org.orig/vcl/unx/gtk/window/gtkframe.cxx	5 May 2006 11:01:02 -0000	1.47
+++ openoffice.org/vcl/unx/gtk/window/gtkframe.cxx	1 Aug 2006 15:13:58 -0000
@@ -63,6 +63,9 @@
 
 #include <com/sun/star/accessibility/XAccessibleContext.hpp>
 #include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
 
 using namespace com::sun::star;
 
@@ -2914,13 +2960,79 @@
         pThis->updateIMSpotLocation();
 }
 
+uno::Reference<accessibility::XAccessibleEditableText> 
+	FindFocus(uno::Reference< accessibility::XAccessibleContext > xContext)
+{
+    if (!xContext.is())
+        uno::Reference< accessibility::XAccessibleEditableText >();
+
+	uno::Reference<accessibility::XAccessibleStateSet> xState = xContext->getAccessibleStateSet();
+	if (xState.is())
+	{
+		if (xState->contains(accessibility::AccessibleStateType::FOCUSED))
+			return uno::Reference<accessibility::XAccessibleEditableText>(xContext, uno::UNO_QUERY);
+	}
+
+	for (sal_uInt32 i = 0; i < xContext->getAccessibleChildCount(); ++i)
+	{
+		uno::Reference< accessibility::XAccessible > xChild = xContext->getAccessibleChild(i);
+		if (!xChild.is())
+			continue;
+	    	uno::Reference< accessibility::XAccessibleContext > xChildContext = xChild->getAccessibleContext();
+		if (!xChildContext.is())
+			continue;
+		uno::Reference< accessibility::XAccessibleEditableText > xText = FindFocus(xChildContext);
+		if (xText.is())
+			return xText;
+	}
+	return uno::Reference< accessibility::XAccessibleEditableText >();
+}
+
+uno::Reference<accessibility::XAccessibleEditableText> lcl_GetxText()
+{
+    uno::Reference<accessibility::XAccessibleEditableText> xText;
+    Window* pFocusWin = ImplGetSVData()->maWinData.mpFocusWin;
+    if (!pFocusWin)
+	return xText;
+
+    uno::Reference< accessibility::XAccessible > xAccessible( pFocusWin->GetAccessible( true ) );
+    if (xAccessible.is())
+        xText = FindFocus(xAccessible->getAccessibleContext());
+    return xText;
+}
+
 gboolean GtkSalFrame::IMHandler::signalIMRetrieveSurrounding( GtkIMContext* pContext, gpointer im_handler )
 {
+    uno::Reference<accessibility::XAccessibleEditableText> xText = lcl_GetxText();
+
+    if (xText.is())
+    {
+        sal_uInt32 nPosition = xText->getCaretPosition();
+        rtl::OUString sAllText = xText->getText();
+		if (!sAllText.getLength())
+            return FALSE;
+	rtl::OString sUTF = rtl::OUStringToOString(sAllText, RTL_TEXTENCODING_UTF8);
+	rtl::OUString sCursorText(sAllText, nPosition);
+	gtk_im_context_set_surrounding(pContext, sUTF.getStr(), sUTF.getLength(), 
+		rtl::OUStringToOString(sCursorText, RTL_TEXTENCODING_UTF8).getLength());
+	return TRUE;
+    }
+
     return FALSE;
 }
 
-gboolean GtkSalFrame::IMHandler::signalIMDeleteSurrounding( GtkIMContext* pContext, gint arg1, gint arg2, gpointer im_handler )
+gboolean GtkSalFrame::IMHandler::signalIMDeleteSurrounding( GtkIMContext* pContext, gint offset, gint nchars, 
+    gpointer im_handler )
 {
+    uno::Reference<accessibility::XAccessibleEditableText> xText = lcl_GetxText();
+
+    if (xText.is())
+    {
+        sal_uInt32 nPosition = xText->getCaretPosition();
+	xText->deleteText(nPosition + offset, nPosition + offset + nchars);
+	return TRUE;
+    }
+
     return FALSE;
 }
 




More information about the fedora-cvs-commits mailing list