X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/63c5efa344d45069b5f6d92078ab4149780ed4dc..aa99e0cd2242db04fe1f9bb7d91aea545def2422:/src/gtk/toplevel.cpp diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index b91b944750..d2a5bdd6b1 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -106,7 +106,6 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* win->m_width = alloc->width; win->m_height = alloc->height; - win->m_queuedFullRedraw = TRUE; win->GtkUpdateSize(); } } @@ -350,21 +349,27 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, if (m_widget == NULL) { GtkWindowType win_type = GTK_WINDOW_TOPLEVEL; - if (style & wxFRAME_TOOL_WINDOW) win_type = GTK_WINDOW_POPUP; if (GetExtraStyle() & wxTOPLEVEL_EX_DIALOG) { - // there is no more GTK_WINDOW_DIALOG in 2.0 #ifdef __WXGTK20__ - win_type = GTK_WINDOW_TOPLEVEL; + m_widget = gtk_window_new(GTK_WINDOW_TOPLEVEL); + // Tell WM that this is a dialog window and make it center + // on parent by default (this is what GtkDialog ctor does): + gtk_window_set_type_hint(GTK_WINDOW(m_widget), + GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_position(GTK_WINDOW(m_widget), + GTK_WIN_POS_CENTER_ON_PARENT); #else - win_type = GTK_WINDOW_DIALOG; + m_widget = gtk_window_new(GTK_WINDOW_DIALOG); #endif } - - m_widget = gtk_window_new( win_type ); + else + { + m_widget = gtk_window_new(win_type); + } } if (m_parent && (((GTK_IS_WINDOW(m_parent->m_widget)) && @@ -374,6 +379,13 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, gtk_window_set_transient_for( GTK_WINDOW(m_widget), GTK_WINDOW(m_parent->m_widget) ); } +#if GTK_CHECK_VERSION(2,2,0) + if (style & wxFRAME_NO_TASKBAR) + { + gtk_window_set_skip_taskbar_hint(GTK_WINDOW(m_widget), TRUE); + } +#endif + if (!name.IsEmpty()) gtk_window_set_wmclass( GTK_WINDOW(m_widget), wxGTK_CONV( name ), wxGTK_CONV( name ) ); @@ -924,15 +936,22 @@ void wxTopLevelWindowGTK::Maximize(bool maximize) bool wxTopLevelWindowGTK::IsMaximized() const { +#ifdef __WXGTK20__ + if(!m_widget->window) + return false; + + return gdk_window_get_state(m_widget->window) & GDK_WINDOW_STATE_MAXIMIZED; +#else // wxFAIL_MSG( _T("not implemented") ); // This is an approximation return FALSE; +#endif } void wxTopLevelWindowGTK::Restore() { -#ifdef __GTK20__ +#ifdef __WXGTK20__ // "Present" seems similar enough to "restore" gtk_window_present( GTK_WINDOW( m_widget ) ); #else