X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/06fda9e808172d72700908b69cb775ed71b1d0d7..4f60dce5d49d3a5f38d93c867bd3527fe60e1aec:/src/gtk/toplevel.cpp?ds=sidebyside diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index cb412255eb..f0258fbd24 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -87,7 +87,7 @@ static gint gtk_frame_focus_in_callback( GtkWidget *widget, { if (g_isIdle) wxapp_install_idle_handler(); - + switch ( g_sendActivateEvent ) { case -1: @@ -112,7 +112,7 @@ static gint gtk_frame_focus_in_callback( GtkWidget *widget, event.SetEventObject(g_activeFrame); g_activeFrame->GetEventHandler()->ProcessEvent(event); - return TRUE; + return FALSE; } //----------------------------------------------------------------------------- @@ -134,15 +134,18 @@ static gint gtk_frame_focus_out_callback( GtkWidget *widget, // wxASSERT_MSG( (g_activeFrame == win), wxT("TLW deactivatd although it wasn't active") ); // wxPrintf( wxT("inactive: %s\n"), win->GetTitle().c_str() ); - - wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), g_activeFrame); - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, g_activeFrame->GetId()); - event.SetEventObject(g_activeFrame); - g_activeFrame->GetEventHandler()->ProcessEvent(event); - g_activeFrame = NULL; + if (g_activeFrame) + { + wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), g_activeFrame); + wxActivateEvent event(wxEVT_ACTIVATE, FALSE, g_activeFrame->GetId()); + event.SetEventObject(g_activeFrame); + g_activeFrame->GetEventHandler()->ProcessEvent(event); + + g_activeFrame = NULL; + } - return TRUE; + return FALSE; } //----------------------------------------------------------------------------- @@ -451,11 +454,13 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, } } - if (m_parent && (((GTK_IS_WINDOW(m_parent->m_widget)) && + wxWindow *topParent = wxGetTopLevelParent(m_parent); + if (topParent && (((GTK_IS_WINDOW(topParent->m_widget)) && (GetExtraStyle() & wxTOPLEVEL_EX_DIALOG)) || (style & wxFRAME_FLOAT_ON_PARENT))) { - gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(m_parent->m_widget) ); + gtk_window_set_transient_for( GTK_WINDOW(m_widget), + GTK_WINDOW(topParent->m_widget) ); } #if GTK_CHECK_VERSION(2,2,0) @@ -965,6 +970,9 @@ void wxTopLevelWindowGTK::OnInternalIdle() { bool activate = g_sendActivateEvent != 0; + // if (!activate) wxPrintf( wxT("de") ); + // wxPrintf( wxT("activate\n") ); + // do it only once g_sendActivateEvent = -1;