18
18
char szWorkingDir[512 ]; // The current working directory
19
19
std:: string szInitialUrl;
20
20
std:: string szRunningDir;
21
+ bool isReallyClosing = false ;
21
22
22
23
// The global ClientHandler reference.
23
24
extern CefRefPtr<ClientHandler> g_handler;
@@ -26,14 +27,23 @@ extern CefRefPtr<ClientHandler> g_handler;
26
27
time_t g_appStartupTime;
27
28
28
29
void destroy (void ) {
29
- printf (" Gonna die! \n " );
30
30
CefQuitMessageLoop ();
31
31
}
32
32
33
33
void TerminationSignalHandler (int signatl) {
34
34
destroy ();
35
35
}
36
36
37
+ static gboolean HandleQuit (int signatl) {
38
+ if (!isReallyClosing && g_handler.get () && g_handler->GetBrowserId ()) {
39
+ CefRefPtr<CommandCallback> callback = new CloseWindowCommandCallback (g_handler->GetBrowser ());
40
+
41
+ g_handler->SendJSCommand (g_handler->GetBrowser (), FILE_CLOSE_WINDOW, callback);
42
+ return TRUE ;
43
+ }
44
+ destroy ();
45
+ }
46
+
37
47
int GetInitialUrl () {
38
48
GtkWidget *dialog;
39
49
const char * dialog_title = " Please select the index.html file" ;
@@ -76,7 +86,6 @@ std::string AppGetRunningDirectory() {
76
86
if (buf[len] == ' /' ){
77
87
buf[len] = ' \0 ' ;
78
88
szRunningDir.append (buf);
79
- printf (" szRunningDir: %s\n " , szRunningDir.c_str ());
80
89
return szRunningDir;
81
90
}
82
91
}
@@ -150,10 +159,12 @@ int main(int argc, char* argv[]) {
150
159
151
160
GtkWidget* m_editWnd = gtk_entry_new ();
152
161
162
+ g_signal_connect (G_OBJECT (window), " delete_event" ,
163
+ G_CALLBACK (HandleQuit), NULL );
153
164
g_signal_connect (G_OBJECT (window), " destroy" ,
154
165
G_CALLBACK (gtk_widget_destroyed), &window);
155
- g_signal_connect (G_OBJECT (window), " destroy" ,
156
- G_CALLBACK (destroy), NULL );
166
+ // g_signal_connect(G_OBJECT(window), "destroy",
167
+ // G_CALLBACK(destroy), NULL);
157
168
158
169
// Create the handler.
159
170
g_handler = new ClientHandler ();
0 commit comments