X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c37b0f0907b07878551a00165b0ad323bd2ccdaf..ee3dd6dd5f7f4e081ae9a5ead179d0ca5b752759:/src/gtk/toplevel.cpp diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 3c7d3038e4..9e2a4176f9 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -327,11 +327,14 @@ void wxTopLevelWindowGTK::GTKConfigureEvent(int x, int y) gtk_window_get_position(GTK_WINDOW(m_widget), &point.x, &point.y); } - m_x = point.x; - m_y = point.y; - wxMoveEvent event(point, GetId()); - event.SetEventObject(this); - HandleWindowEvent(event); + if (m_x != point.x || m_y != point.y) + { + m_x = point.x; + m_y = point.y; + wxMoveEvent event(point, GetId()); + event.SetEventObject(this); + HandleWindowEvent(event); + } } //----------------------------------------------------------------------------- @@ -350,14 +353,6 @@ void wxTopLevelWindowGTK::GTKHandleRealized() gdk_window_set_functions(gtk_widget_get_window(m_widget), (GdkWMFunction)m_gdkFunc); - // GTK's shrinking/growing policy - if ( !(m_gdkFunc & GDK_FUNC_RESIZE) ) - gtk_window_set_resizable(GTK_WINDOW(m_widget), FALSE); -#ifndef __WXGTK3__ - else - gtk_window_set_policy(GTK_WINDOW(m_widget), 1, 1, 1); -#endif - const wxIconBundle& icons = GetIcons(); if (icons.GetIconCount()) SetIcons(icons); @@ -554,11 +549,7 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, long style, const wxString &name ) { - // always create a frame of some reasonable, even if arbitrary, size (at - // least for MSW compatibility) - wxSize size = sizeOrig; - size.x = WidthDefault(size.x); - size.y = HeightDefault(size.y); + const wxSize size(WidthDefault(sizeOrig.x), HeightDefault(sizeOrig.y)); wxTopLevelWindows.Append( this ); @@ -669,7 +660,7 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, PostCreation(); #ifndef __WXGTK3__ - if ((m_x != -1) || (m_y != -1)) + if (pos != wxDefaultPosition) gtk_widget_set_uposition( m_widget, m_x, m_y ); #endif @@ -751,8 +742,12 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, } } - // GTK sometimes chooses very small size if max size hint is not explicitly set - DoSetSizeHints(m_minWidth, m_minHeight, m_maxWidth, m_maxHeight, m_incWidth, m_incHeight); + if ((style & wxRESIZE_BORDER) == 0) + gtk_window_set_resizable(GTK_WINDOW(m_widget), false); +#ifndef __WXGTK3__ + else + gtk_window_set_policy(GTK_WINDOW(m_widget), 1, 1, 1); +#endif m_decorSize = GetCachedDecorSize(); int w, h; @@ -1102,6 +1097,9 @@ void wxTopLevelWindowGTK::DoSetSize( int x, int y, int width, int height, int si if ( m_x != old_x || m_y != old_y ) { gtk_window_move( GTK_WINDOW(m_widget), m_x, m_y ); + wxMoveEvent event(wxPoint(m_x, m_y), GetId()); + event.SetEventObject(this); + HandleWindowEvent(event); } const wxSize oldSize(m_width, m_height);