Molecular Modeling Software
リビジョン | 8890f5af8840f811653338120f2c2c143b9c8519 (tree) |
---|---|
日時 | 2018-03-22 08:46:44 |
作者 | toshinagata1964 <toshinagata1964@a2be...> |
コミッター | toshinagata1964 |
Mac: fix unstable behavior on drag-and-dropping a log file on the application icon.
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/molby/trunk@612 a2be9bc6-48de-4e38-9406-05402d4bc13c
@@ -88,7 +88,7 @@ IMPLEMENT_APP(MyApp) | ||
88 | 88 | |
89 | 89 | BEGIN_EVENT_TABLE(MyApp, wxApp) |
90 | 90 | EVT_COMMAND(MyDocumentEvent_scriptMenuModified, MyDocumentEvent, MyApp::OnScriptMenuModified) |
91 | - EVT_COMMAND(MyDocumentEvent_openFilesByIPC, MyDocumentEvent, MyApp::OnOpenFilesByIPC) | |
91 | + EVT_COMMAND(MyDocumentEvent_openFilesByEvent, MyDocumentEvent, MyApp::OnOpenFilesByEvent) | |
92 | 92 | EVT_UPDATE_UI_RANGE(myMenuID_MyFirstMenuItem, myMenuID_MyLastMenuItem, MyApp::OnUpdateUI) |
93 | 93 | EVT_MENU(myMenuID_ExecuteScript, MyApp::OnExecuteScript) |
94 | 94 | EVT_MENU(myMenuID_OpenConsoleWindow, MyApp::OnOpenConsoleWindow) |
@@ -342,7 +342,7 @@ bool MyApp::OnInit(void) | ||
342 | 342 | files.append(argv[i]); |
343 | 343 | files.append(wxT("\n")); |
344 | 344 | } |
345 | - OnOpenFiles(files); | |
345 | + RequestOpenFilesByEvent(files); | |
346 | 346 | } |
347 | 347 | |
348 | 348 | gInitCompleted = true; |
@@ -542,8 +542,8 @@ MyApp::MacNewFile() | ||
542 | 542 | void |
543 | 543 | MyApp::MacOpenFile(const wxString &fileName) |
544 | 544 | { |
545 | - wxString files(fileName); | |
546 | - OnOpenFiles(files); | |
545 | + wxString file(fileName); | |
546 | + RequestOpenFilesByEvent(file); | |
547 | 547 | } |
548 | 548 | |
549 | 549 | /* Open given files: instead of calling MacOpenFile() for each entry, build a file list |
@@ -1162,21 +1162,29 @@ MyApp::OnActivate(wxActivateEvent &event) | ||
1162 | 1162 | } |
1163 | 1163 | |
1164 | 1164 | void |
1165 | -MyApp::RequestOpenFilesByIPC(wxString& files) | |
1165 | +MyApp::RequestOpenFilesByEvent(wxString& files) | |
1166 | 1166 | { |
1167 | 1167 | if (m_pendingFilesToOpen != NULL) |
1168 | 1168 | m_pendingFilesToOpen->Append(files); |
1169 | 1169 | else |
1170 | 1170 | m_pendingFilesToOpen = new wxString(files); |
1171 | - wxCommandEvent myEvent(MyDocumentEvent, MyDocumentEvent_openFilesByIPC); | |
1171 | + if (!m_pendingFilesToOpen->EndsWith(wxT("\n"))) | |
1172 | + m_pendingFilesToOpen->Append(wxT("\n")); | |
1173 | + wxCommandEvent myEvent(MyDocumentEvent, MyDocumentEvent_openFilesByEvent); | |
1172 | 1174 | wxPostEvent(this, myEvent); |
1173 | 1175 | } |
1174 | 1176 | |
1175 | 1177 | void |
1176 | -MyApp::OnOpenFilesByIPC(wxCommandEvent& event) | |
1178 | +MyApp::OnOpenFilesByEvent(wxCommandEvent& event) | |
1177 | 1179 | { |
1178 | 1180 | if (m_pendingFilesToOpen == NULL) |
1179 | 1181 | return; |
1182 | + if (!gInitCompleted) { | |
1183 | + // Repost this event and try again later | |
1184 | + wxCommandEvent myEvent(MyDocumentEvent, MyDocumentEvent_openFilesByEvent); | |
1185 | + wxPostEvent(this, myEvent); | |
1186 | + return; | |
1187 | + } | |
1180 | 1188 | OnOpenFiles(*m_pendingFilesToOpen); |
1181 | 1189 | delete m_pendingFilesToOpen; |
1182 | 1190 | m_pendingFilesToOpen = NULL; |
@@ -177,8 +177,8 @@ class MyApp: public wxApp | ||
177 | 177 | |
178 | 178 | void OnActivate(wxActivateEvent &event); |
179 | 179 | |
180 | - void RequestOpenFilesByIPC(wxString& files); | |
181 | - void OnOpenFilesByIPC(wxCommandEvent& event); | |
180 | + void RequestOpenFilesByEvent(wxString& files); | |
181 | + void OnOpenFilesByEvent(wxCommandEvent& event); | |
182 | 182 | |
183 | 183 | bool OnOpenFiles(const wxString &files); |
184 | 184 |
@@ -226,7 +226,7 @@ protected: | ||
226 | 226 | MyDocument **m_TimerDocs; |
227 | 227 | wxTimer *m_Timer; |
228 | 228 | |
229 | - wxString *m_pendingFilesToOpen; /* Files to be processed by OnOpenFilesByIPC() */ | |
229 | + wxString *m_pendingFilesToOpen; /* Files to be processed by OnOpenFilesByEvent() */ | |
230 | 230 | |
231 | 231 | wxTopLevelWindow *m_frameToBeDestroyed; /* Used in CheckIfAllWindowsAreGone() */ |
232 | 232 |
@@ -37,7 +37,7 @@ enum { | ||
37 | 37 | MyDocumentEvent_updateDisplay, |
38 | 38 | MyDocumentEvent_insertFrameFromMD, |
39 | 39 | MyDocumentEvent_threadTerminated, |
40 | - MyDocumentEvent_openFilesByIPC, | |
40 | + MyDocumentEvent_openFilesByEvent, | |
41 | 41 | MyDocumentEvent_documentWillClose, |
42 | 42 | MyDocumentEvent_openAuxiliaryDocuments |
43 | 43 | }; |
@@ -74,7 +74,7 @@ MyServerConnection::OnExecute(const wxString& topic, const void *data, size_t si | ||
74 | 74 | { |
75 | 75 | if (topic == MOLBY_IPC_TOPIC) { |
76 | 76 | wxString files((wxChar *)data); |
77 | - wxGetApp().RequestOpenFilesByIPC(files); | |
77 | + wxGetApp().RequestOpenFilesByEvent(files); | |
78 | 78 | return true; |
79 | 79 | } else return false; |
80 | 80 | } |