diff options
Diffstat (limited to 'UConnectionManager.pas')
| -rw-r--r-- | UConnectionManager.pas | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/UConnectionManager.pas b/UConnectionManager.pas index a89147d..7109cc3 100644 --- a/UConnectionManager.pas +++ b/UConnectionManager.pas @@ -66,7 +66,7 @@ type Thread: TOpenConnectionThread; SourcePanelEngine: TPanelEngine; ConnectedEngine: TVFSEngine; - function DoConnectInternal(const URI: string; Engine: TVFSEngine; VFSDialogsParentWindow: PGtkWidget; VFSQuickConnectMode: boolean): boolean; + function DoConnectInternal(const URI: string; Engine: TVFSEngine; VFSDialogsParentWindow: PGtkWidget; VFSQuickConnectMode: boolean; Error: PPGError): boolean; end; var @@ -74,7 +74,7 @@ var implementation -uses ULocale, UCoreUtils, UConfig, UConnectionProperties, UGnome, UQuickConnect; +uses ULocale, UCoreUtils, UConfig, UConnectionProperties, UGnome, UQuickConnect, UError; procedure TFConnectionManager.FormCreate(Sender: TObject); @@ -539,6 +539,7 @@ var Engine: TVFSEngine; FActiveConnInfo: TConnMgrItem; DontShowAgain: boolean; res: TMessageButton; + Error: PGError; begin FActiveConnInfo := nil; if ListView.Selected <> nil then FActiveConnInfo := ListView.Selected.AsPointer(0); @@ -599,8 +600,10 @@ begin Engine.Password := FActiveConnInfo.Password; Engine.PasswordUsed := False; - if not DoConnectInternal(UTF8ToStr(FActiveConnInfo.GetURI(False)), Engine, FWidget, False) then begin - if not FSilenceError then Application.MessageBox(PGtkWindow(FWidget), LANGCouldntOpenURI, [mbOK], mbError, mbOK, mbOK); + Error := nil; + if not DoConnectInternal(UTF8ToStr(FActiveConnInfo.GetURI(False)), Engine, FWidget, False, @Error) then begin + if not FSilenceError then + ShowError(Self, 'Couldn''t open the URI specified', Error); ListViewTable.Enabled := True; CloseButton.Enabled := True; ConnectButton.Enabled := True; @@ -609,6 +612,8 @@ begin StopButton.Enabled := False; ListView.SetFocus; Engine.Free; + if Error <> nil then + g_error_free(Error); Exit; end; @@ -619,7 +624,7 @@ begin ModalResult := mbOK; end; -function TFConnectionManager.DoConnectInternal(const URI: string; Engine: TVFSEngine; VFSDialogsParentWindow: PGtkWidget; VFSQuickConnectMode: boolean): boolean; +function TFConnectionManager.DoConnectInternal(const URI: string; Engine: TVFSEngine; VFSDialogsParentWindow: PGtkWidget; VFSQuickConnectMode: boolean; Error: PPGError): boolean; begin Result := False; FSilenceError := False; @@ -658,6 +663,8 @@ begin end; until Thread.Finished; Result := Thread.OpenResult; + if Thread.OpenError <> nil then + g_propagate_error(Error, Thread.OpenError); FSilenceError := Thread.VFSCallbackCancelled; Thread.Free; Thread := nil; |
