Author: hdu
Date: Mon Jul 14 07:21:47 2014
New Revision: 1610349

URL: http://svn.apache.org/r1610349
Log:
#i125226# expect DDE servers to be already up

Merged from trunk.

Modified:
    openoffice/branches/AOO410/   (props changed)
    openoffice/branches/AOO410/main/   (props changed)
    openoffice/branches/AOO410/main/sfx2/source/appl/impldde.cxx

Propchange: openoffice/branches/AOO410/
------------------------------------------------------------------------------
  Merged /openoffice/trunk:r1609204,1609208,1609302,1609426,1610347

Propchange: openoffice/branches/AOO410/main/
------------------------------------------------------------------------------
  Merged /openoffice/trunk/main:r1609204,1609208,1609302,1609426,1610347

Modified: openoffice/branches/AOO410/main/sfx2/source/appl/impldde.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/sfx2/source/appl/impldde.cxx?rev=1610349&r1=1610348&r2=1610349&view=diff
==============================================================================
--- openoffice/branches/AOO410/main/sfx2/source/appl/impldde.cxx (original)
+++ openoffice/branches/AOO410/main/sfx2/source/appl/impldde.cxx Mon Jul 14 
07:21:47 2014
@@ -49,6 +49,8 @@
 #include <svl/svdde.hxx>
 #include <sot/formats.hxx>
 
+#include <unotools/securityoptions.hxx>
+
 #define DDELINK_COLD           0
 #define DDELINK_HOT            1
 
@@ -207,9 +209,6 @@ sal_Bool SvDDEObject::GetData( ::com::su
 
 sal_Bool SvDDEObject::Connect( SvBaseLink * pSvLink )
 {
-#if defined(WNT)
-       static sal_Bool bInWinExec = sal_False;
-#endif
        sal_uInt16 nLinkType = pSvLink->GetUpdateMode();
        if( pConnection )               // Verbindung steht ja schon
        {
@@ -236,61 +235,22 @@ sal_Bool SvDDEObject::Connect( SvBaseLin
        pConnection = new DdeConnection( sServer, sTopic );
        if( pConnection->GetError() )
        {
-               // kann man denn das System-Topic ansprechen ?
-               // dann ist der Server oben, kennt nur nicht das Topic!
-               if( sTopic.EqualsIgnoreCaseAscii( "SYSTEM" ) )
+               // check if the DDE server knows the "SYSTEM" topic
+               bool bSysTopic = false;
+               if( !sTopic.EqualsIgnoreCaseAscii( "SYSTEM" ))
                {
-                       sal_Bool bSysTopic;
-                       {
-                               DdeConnection aTmp( sServer, 
String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "SYSTEM" ) ) );
-                               bSysTopic = !aTmp.GetError();
-                       }
-
-                       if( bSysTopic )
-                       {
-                               nError = DDELINK_ERROR_DATA;
-                               return sal_False;
-                       }
-                       // ansonsten unter Win/WinNT die Applikation direkt 
starten
+                       DdeConnection aTmp( sServer, String::CreateFromAscii( 
RTL_CONSTASCII_STRINGPARAM( "SYSTEM" ) ) );
+                       bSysTopic = !aTmp.GetError();
                }
 
-#if defined(WNT)
-
-               // Server nicht da, starten und nochmal versuchen
-               if( !bInWinExec )
-               {
-                       ByteString aCmdLine( sServer, RTL_TEXTENCODING_ASCII_US 
);
-                       aCmdLine.Append( ".exe " );
-                       aCmdLine.Append( ByteString( sTopic, 
RTL_TEXTENCODING_ASCII_US ) );
-
-                       if( WinExec( aCmdLine.GetBuffer(), SW_SHOWMINIMIZED ) < 
32 )
-                               nError = DDELINK_ERROR_APP;
-                       else
-                       {
-                               sal_uInt16 i;
-                               for( i=0; i<5; i++ )
-                               {
-                                       bInWinExec = sal_True;
-                                       Application::Reschedule();
-                                       bInWinExec = sal_False;
-
-                                       delete pConnection;
-                                       pConnection = new DdeConnection( 
sServer, sTopic );
-                                       if( !pConnection->GetError() )
-                                               break;
-                               }
-
-                               if( i == 5 )
-                               {
-                                       nError = DDELINK_ERROR_APP;
-                               }
-                       }
-               }
-               else
-#endif // WNT
+               if( bSysTopic )
                {
-                       nError = DDELINK_ERROR_APP;
+                       // if the system topic works then the server is up but 
just doesn't know the original topic
+                       nError = DDELINK_ERROR_DATA;
+                       return sal_False;
                }
+
+               nError = DDELINK_ERROR_APP;
        }
 
        if( LINKUPDATE_ALWAYS == nLinkType && !pLink && 
!pConnection->GetError() )


Reply via email to