summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2007-06-19 14:47:37 +0000
committerKurt Zenker <kz@openoffice.org>2007-06-19 14:47:37 +0000
commita4814f1a2da870bfce35610887b6eda94b3d4ad3 (patch)
treeaf99a6f1ae0c5e230f50867d62dd91fe2258e40b
parentINTEGRATION: CWS gh14 (1.32.4); FILE MERGED (diff)
downloadcore-a4814f1a2da870bfce35610887b6eda94b3d4ad3.tar.gz
core-a4814f1a2da870bfce35610887b6eda94b3d4ad3.zip
INTEGRATION: CWS gh14 (1.30.4); FILE MERGED
2007/06/15 14:25:15 gh 1.30.4.2: #148037# plus encancement 2007/06/15 09:49:09 gh 1.30.4.1: #i76851# new command to get status of executed slot
-rw-r--r--automation/source/server/statemnt.cxx40
1 files changed, 37 insertions, 3 deletions
diff --git a/automation/source/server/statemnt.cxx b/automation/source/server/statemnt.cxx
index e847ca7831fc..6bb5c1e52788 100644
--- a/automation/source/server/statemnt.cxx
+++ b/automation/source/server/statemnt.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: statemnt.cxx,v $
*
- * $Revision: 1.31 $
+ * $Revision: 1.32 $
*
- * last change: $Author: gh $ $Date: 2007-06-15 11:40:39 $
+ * last change: $Author: kz $ $Date: 2007-06-19 15:47:37 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -742,7 +742,16 @@ BOOL StatementSlot::Execute()
Reference < XStatusListener > xListener = ( XStatusListener* )new SlotStatusListener;
xDisp->addStatusListener( xListener, aTargetURL );
if ( static_cast< SlotStatusListener* >(xListener.get())->bEnabled )
- xDisp->dispatch( aTargetURL, aArgs );
+ {
+ if ( bIsSlotInExecute )
+ ReportError( GEN_RES_STR0( S_SLOT_IN_EXECUTE ) );
+ else
+ {
+ bIsSlotInExecute = TRUE;
+ xDisp->dispatch( aTargetURL, aArgs );
+ bIsSlotInExecute = FALSE;
+ }
+ }
else
ReportError( GEN_RES_STR1( S_UNO_URL_EXECUTE_FAILED_DISABLED, aTargetURL.Complete ) );
xDisp->removeStatusListener( xListener, aTargetURL );
@@ -2632,7 +2641,27 @@ BOOL StatementCommand::Execute()
else
pRet->GenReturn ( RET_Value, aSmartMethodId, aString1);
}
+ break;
+ case RC_WaitSlot:
+ {
+ if ( ! (nParams & PARAM_USHORT_1) )
+ nNr1 = 1000; // defaults to 1000 = 1 Sec.
+ if ( !bBool1 )
+ {
+ nLNr1 = Time().GetTime() + nNr1/10;
+ bBool1 = TRUE;
+ }
+ if ( !bIsSlotInExecute )
+ pRet->GenReturn ( RET_Value, aSmartMethodId, comm_USHORT(CONST_WSFinished) );
+ else
+ {
+ if ( Time().GetTime() < long(nLNr1) ) // Aktuelle Zeit kleiner Endzeit
+ return FALSE;
+ pRet->GenReturn ( RET_Value, aSmartMethodId, comm_USHORT(CONST_WSTimeout) );
+ }
+ }
+ break;
}
@@ -2644,6 +2673,8 @@ BOOL StatementCommand::Execute()
case RC_AppDelay: // Diese Befehle werden anderswo behandelt
case RC_DisplayHid:
case RC_ResetApplication:
+ case RC_WaitSlot:
+
case RC_AppAbort: // Sofortiges Löschen aller Befehle
break;
case RC_Assert:
@@ -4744,6 +4775,9 @@ BOOL StatementControl::Execute()
int i = 10;
while ( i-- && !pControl->HasFocus() ) // reschedule a bit
SafeReschedule();
+ if ( !WinPtrValid( pControl ) )
+ return FALSE;
+ }
if ( !pControl->HasFocus() ) // to get asyncronous focus
{
bBool2 = TRUE;