summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorStephan Schäfer <ssa@openoffice.org>2001-06-27 07:25:19 +0000
committerStephan Schäfer <ssa@openoffice.org>2001-06-27 07:25:19 +0000
commitb7458991e1581f835182780ef814c098a731d165 (patch)
tree1ef6c0293669074a8943c52690bf5a13161ffe0f /vcl
parent9b84cd962f6635c211116d4082f3f48775f4e5cd (diff)
#86010# transmit cursor rect for CJK input
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/window/cursor.cxx14
-rw-r--r--vcl/source/window/window.cxx8
-rw-r--r--vcl/source/window/winproc.cxx30
3 files changed, 45 insertions, 7 deletions
diff --git a/vcl/source/window/cursor.cxx b/vcl/source/window/cursor.cxx
index ec2bb1c80506..29d064b86c91 100644
--- a/vcl/source/window/cursor.cxx
+++ b/vcl/source/window/cursor.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: cursor.cxx,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 17:05:40 $
+ * last change: $Author: ssa $ $Date: 2001-06-27 08:25:19 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -79,7 +79,11 @@
#ifndef _SV_CURSOR_HXX
#include <cursor.hxx>
#endif
-
+#ifdef REMOTE_APPSERVER
+#ifndef _SV_WINDATA_HXX
+#include <windata.hxx>
+#endif
+#endif
#pragma hdrstop
// =======================================================================
@@ -158,6 +162,10 @@ void Cursor::ImplDraw()
// Ausgabeflaeche berechnen und ausgeben
ImplCursorInvert( mpData );
mpData->mbCurVisible = TRUE;
+#ifdef REMOTE_APPSERVER
+ // update remote cursor pos
+ ImplUpdateCursorRect( pWindow );
+#endif
}
}
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 5d5fdcb700af..822fc0282fb7 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: window.cxx,v $
*
- * $Revision: 1.24 $
+ * $Revision: 1.25 $
*
- * last change: $Author: ssa $ $Date: 2001-06-22 14:14:52 $
+ * last change: $Author: ssa $ $Date: 2001-06-27 08:25:19 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -4914,6 +4914,7 @@ void Window::SetCursorRect( const Rectangle* pRect, long nExtTextInputWidth )
{
DBG_CHKTHIS( Window, ImplDbgCheckWindow );
+#ifndef REMOTE_APPSERVER
ImplWinData* pWinData = ImplGetWinData();
if ( pWinData->mpCursorRect )
{
@@ -4932,6 +4933,9 @@ void Window::SetCursorRect( const Rectangle* pRect, long nExtTextInputWidth )
}
pWinData->mnCursorExtWidth = nExtTextInputWidth;
+#else
+ ImplGetFrame()->SetCursorRect( pRect, nExtTextInputWidth );
+#endif
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
index a5aa8dc4a8ac..4e7381e7e03c 100644
--- a/vcl/source/window/winproc.cxx
+++ b/vcl/source/window/winproc.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: winproc.cxx,v $
*
- * $Revision: 1.22 $
+ * $Revision: 1.23 $
*
- * last change: $Author: ssa $ $Date: 2001-06-22 14:14:52 $
+ * last change: $Author: ssa $ $Date: 2001-06-27 08:25:19 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -2118,10 +2118,28 @@ long ImplWindowFrameProc( void* pInst, SalFrame* pFrame,
#else // => REMOTE_APPSERVER
+void ImplUpdateCursorRect( Window *pWindow )
+{
+ RmFrameWindow *pFrame = pWindow->ImplGetFrame();
+ if( !pFrame )
+ return;
+ if( pFrame->IsInEvtHandler() )
+ return; // we'll update later
+
+ Rectangle rRect;
+ long rWidth;
+ ImplHandleExtTextInputPos( pWindow, rRect, rWidth );
+ pFrame->SetCursorRect( &rRect, rWidth );
+}
+
void ImplRemoteWindowFrameProc( ExtRmEvent* pEvent )
{
DBG_TESTSOLARMUTEX();
+ // disable updates like remote CursorRect
+ if( pEvent->GetWindow() && pEvent->GetWindow()->ImplGetFrame() )
+ pEvent->GetWindow()->ImplGetFrame()->IsInEvtHandler( true );
+
ULONG nId = pEvent->GetId();
switch ( nId )
{
@@ -2242,6 +2260,14 @@ void ImplRemoteWindowFrameProc( ExtRmEvent* pEvent )
}
break;
}
+
+ // enable updates like remote CursorRect
+ if( pEvent->GetWindow() && pEvent->GetWindow()->ImplGetFrame() )
+ {
+ pEvent->GetWindow()->ImplGetFrame()->IsInEvtHandler( false );
+ ImplUpdateCursorRect( pEvent->GetWindow() );
+ }
}
+
#endif