From: Robert Roebling Date: Sun, 19 Mar 2000 16:23:09 +0000 (+0000) Subject: Funny resize behaviour fix. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/15909a16b313e09d05f40fc9b95b414d7c83bac1 Funny resize behaviour fix. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 84f625014f..6369b7d3a7 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -250,7 +250,7 @@ wxApp::wxApp() m_topWindow = (wxWindow *) NULL; m_exitOnFrameDelete = TRUE; - m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL ); + m_idleTag = gtk_idle_add_priority( 500, wxapp_idle_callback, (gpointer) NULL ); #if wxUSE_THREADS m_wakeUpTimerTag = 0; diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp index 55d5e95511..7550d74cef 100644 --- a/src/gtk/dialog.cpp +++ b/src/gtk/dialog.cpp @@ -131,11 +131,6 @@ gtk_dialog_realized_callback( GtkWidget *widget, wxDialog *win ) if (g_isIdle) wxapp_install_idle_handler(); - /* I haven't been able to set the position of - the dialog before it is shown, so I set the - position in "realize" */ - gtk_widget_set_uposition( widget, win->m_x, win->m_y ); - /* all this is for Motif Window Manager "hints" and is supposed to be recognized by other WM as well. not tested. */ long decor = (long) GDK_DECOR_BORDER; @@ -308,6 +303,10 @@ bool wxDialog::Create( wxWindow *parent, PostCreation(); + if ((m_x != -1) || (m_y != -1)) + gtk_widget_set_uposition( m_widget, m_x, m_y ); + gtk_widget_set_usize( m_widget, m_width, m_height ); + /* we cannot set MWM hints before the widget has been realized, so we do this directly after realization */ gtk_signal_connect( GTK_OBJECT(m_widget), "realize", @@ -530,6 +529,8 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags ) if ((m_width != old_width) || (m_height != old_height)) { + gtk_widget_set_usize( m_widget, m_width, m_height ); + /* actual resizing is deferred to GtkOnSize in idle time and when showing the dialog */ m_sizeSet = FALSE; @@ -555,9 +556,6 @@ void wxDialog::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int heigh if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - /* we actually set the size of a frame here and no-where else */ - gtk_widget_set_usize( m_widget, m_width, m_height ); - m_sizeSet = TRUE; wxSizeEvent event( wxSize(m_width,m_height), GetId() ); diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index 6f7ffa47a8..04d2407999 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -248,11 +248,6 @@ gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win ) if (g_isIdle) wxapp_install_idle_handler(); - /* I haven't been able to set the position of - the dialog before it is shown, so I set the - position in "realize" */ - gtk_widget_set_uposition( widget, win->m_x, win->m_y ); - if ((win->m_miniEdge > 0) || (win->HasFlag(wxSIMPLE_BORDER))) { /* This is a mini-frame or a borderless frame. */ @@ -490,6 +485,10 @@ bool wxFrame::Create( wxWindow *parent, PostCreation(); + if ((m_x != -1) || (m_y != -1)) + gtk_widget_set_uposition( m_widget, m_x, m_y ); + gtk_widget_set_usize( m_widget, m_width, m_height ); + /* we cannot set MWM hints and icons before the widget has been realized, so we do this directly after realization */ gtk_signal_connect( GTK_OBJECT(m_widget), "realize", @@ -610,6 +609,8 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags ) if ((m_width != old_width) || (m_height != old_height)) { + gtk_widget_set_usize( m_widget, m_width, m_height ); + /* we set the size in GtkOnSize, i.e. mostly the actual resizing is done either directly before the frame is shown or in idle time so that different calls to SetSize() don't lead to flicker. */ @@ -852,7 +853,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), #endif /* we actually set the size of a frame here and no-where else */ - gtk_widget_set_usize( m_widget, m_width, m_height ); +// gtk_widget_set_usize( m_widget, m_width, m_height ); m_sizeSet = TRUE; diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index 84f625014f..6369b7d3a7 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -250,7 +250,7 @@ wxApp::wxApp() m_topWindow = (wxWindow *) NULL; m_exitOnFrameDelete = TRUE; - m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL ); + m_idleTag = gtk_idle_add_priority( 500, wxapp_idle_callback, (gpointer) NULL ); #if wxUSE_THREADS m_wakeUpTimerTag = 0; diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp index 55d5e95511..7550d74cef 100644 --- a/src/gtk1/dialog.cpp +++ b/src/gtk1/dialog.cpp @@ -131,11 +131,6 @@ gtk_dialog_realized_callback( GtkWidget *widget, wxDialog *win ) if (g_isIdle) wxapp_install_idle_handler(); - /* I haven't been able to set the position of - the dialog before it is shown, so I set the - position in "realize" */ - gtk_widget_set_uposition( widget, win->m_x, win->m_y ); - /* all this is for Motif Window Manager "hints" and is supposed to be recognized by other WM as well. not tested. */ long decor = (long) GDK_DECOR_BORDER; @@ -308,6 +303,10 @@ bool wxDialog::Create( wxWindow *parent, PostCreation(); + if ((m_x != -1) || (m_y != -1)) + gtk_widget_set_uposition( m_widget, m_x, m_y ); + gtk_widget_set_usize( m_widget, m_width, m_height ); + /* we cannot set MWM hints before the widget has been realized, so we do this directly after realization */ gtk_signal_connect( GTK_OBJECT(m_widget), "realize", @@ -530,6 +529,8 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags ) if ((m_width != old_width) || (m_height != old_height)) { + gtk_widget_set_usize( m_widget, m_width, m_height ); + /* actual resizing is deferred to GtkOnSize in idle time and when showing the dialog */ m_sizeSet = FALSE; @@ -555,9 +556,6 @@ void wxDialog::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int heigh if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - /* we actually set the size of a frame here and no-where else */ - gtk_widget_set_usize( m_widget, m_width, m_height ); - m_sizeSet = TRUE; wxSizeEvent event( wxSize(m_width,m_height), GetId() ); diff --git a/src/gtk1/frame.cpp b/src/gtk1/frame.cpp index 6f7ffa47a8..04d2407999 100644 --- a/src/gtk1/frame.cpp +++ b/src/gtk1/frame.cpp @@ -248,11 +248,6 @@ gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win ) if (g_isIdle) wxapp_install_idle_handler(); - /* I haven't been able to set the position of - the dialog before it is shown, so I set the - position in "realize" */ - gtk_widget_set_uposition( widget, win->m_x, win->m_y ); - if ((win->m_miniEdge > 0) || (win->HasFlag(wxSIMPLE_BORDER))) { /* This is a mini-frame or a borderless frame. */ @@ -490,6 +485,10 @@ bool wxFrame::Create( wxWindow *parent, PostCreation(); + if ((m_x != -1) || (m_y != -1)) + gtk_widget_set_uposition( m_widget, m_x, m_y ); + gtk_widget_set_usize( m_widget, m_width, m_height ); + /* we cannot set MWM hints and icons before the widget has been realized, so we do this directly after realization */ gtk_signal_connect( GTK_OBJECT(m_widget), "realize", @@ -610,6 +609,8 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags ) if ((m_width != old_width) || (m_height != old_height)) { + gtk_widget_set_usize( m_widget, m_width, m_height ); + /* we set the size in GtkOnSize, i.e. mostly the actual resizing is done either directly before the frame is shown or in idle time so that different calls to SetSize() don't lead to flicker. */ @@ -852,7 +853,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), #endif /* we actually set the size of a frame here and no-where else */ - gtk_widget_set_usize( m_widget, m_width, m_height ); +// gtk_widget_set_usize( m_widget, m_width, m_height ); m_sizeSet = TRUE;