diff --git a/src/syncterm/htmlwin.cpp b/src/syncterm/htmlwin.cpp index 96173846155f491ec318ac27bc0c9c2afc131d74..1f4598149569ad1bbcb0142576bd8a0fa993a2cc 100644 --- a/src/syncterm/htmlwin.cpp +++ b/src/syncterm/htmlwin.cpp @@ -49,6 +49,7 @@ static bool html_thread_running=false; enum html_window_state { HTML_WIN_STATE_RAISED + ,HTML_WIN_STATE_LOWERED ,HTML_WIN_STATE_ICONIZED ,HTML_WIN_STATE_HIDDEN }; @@ -178,6 +179,13 @@ void MyHTML::OnState(wxCommandEvent &event) htmlWindow->Raise(); htmlWindow->SetFocus(); break; + case HTML_WIN_STATE_LOWERED: + if(!frame->IsShown()) + frame->Show(); + if(frame->IsIconized()) + frame->Iconize(false); + frame->Lower(); + break; case HTML_WIN_STATE_ICONIZED: if(!frame->IsShown()) frame->Show(); @@ -252,7 +260,7 @@ bool MyApp::OnInit() , wxT("SyncTERM HTML") , wxPoint(window_xpos,window_ypos) , wxSize(window_width,window_height) - , wxCLOSE_BOX | wxMINIMIZE_BOX | wxCAPTION | wxCLIP_CHILDREN + , wxMINIMIZE_BOX | /* wxMAXIMIZE_BOX */ | wxRESIZE_BORDER | /* wxSYSTEM_MENU */ | wxCAPTION | wxCLOSE_BOX | /* wxCLIP_CHILDREN */ ); htmlWindow = new MyHTML(frame, HTML_ID); htmlWindow->SetRelatedFrame(frame,wxT("SyncTERM HTML : %s")); @@ -260,8 +268,6 @@ bool MyApp::OnInit() wxInitAllImageHandlers(); frame->Show(); SetTopWindow( frame ); - while(wxTheApp->Pending()) - wxTheApp->Dispatch(); sem_post(&appstarted); return true; } @@ -330,6 +336,13 @@ extern "C" { sem_wait(&state_changed); } + void lower_html(void) + { + html_window_requested_state=HTML_WIN_STATE_LOWERED; + send_html_event(state_event); + sem_wait(&state_changed); + } + void html_commit(void) { pthread_mutex_lock(&update_mutex); diff --git a/src/syncterm/htmlwin.h b/src/syncterm/htmlwin.h index 11ad702859fb645803b03f1a778ba4bd4dfd221b..62c340e654b29550eb7651261691d9e0579eb7e2 100644 --- a/src/syncterm/htmlwin.h +++ b/src/syncterm/htmlwin.h @@ -15,6 +15,7 @@ int run_html(int width, int height, int xpos, int ypos, void(*callback)(const ch void hide_html(void); void iconize_html(void); void raise_html(void); +void lower_html(void); void add_html_char(char ch); void add_html(const char *buf); void html_commit(void); diff --git a/src/syncterm/term.c b/src/syncterm/term.c index 14885816c0674e0f1bd60d8ca552e1ab9c6e895d..1ac5e1e8b79d6e3f1b39030328193254752a7739 100644 --- a/src/syncterm/term.c +++ b/src/syncterm/term.c @@ -40,7 +40,7 @@ static struct text_info log_ti; #ifdef WITH_WXWIDGETS enum html_mode { HTML_MODE_HIDDEN - ,HTML_MODE_ICONIZED + ,HTML_MODE_LOWERED ,HTML_MODE_RAISED ,HTML_MODE_READING }; @@ -1326,8 +1326,10 @@ BOOL doterm(struct bbslist *bbs) else html_supported=HTML_NOTSUPPORTED; } - if(html_supported==HTML_SUPPORTED) + if(html_supported==HTML_SUPPORTED) { conn_send(htmlresponse, sizeof(htmlresponse)-1, 0); + hide_html(); + } } else { show_html(""); @@ -1384,8 +1386,8 @@ BOOL doterm(struct bbslist *bbs) #ifdef WITH_WXWIDGETS if(html_mode==HTML_MODE_RAISED) { if(html_startx!=wherex() || html_starty!=wherey()) { - iconize_html(); - html_mode=HTML_MODE_ICONIZED; + lower_html(); + html_mode=HTML_MODE_LOWERED; } } #endif