if (!win->m_hasVMT)
return FALSE;
-
+
#if (GTK_MINOR_VERSION > 0)
int x = 0;
int y = 0;
so we do this directly after realization */
static gint
-gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win )
+gtk_frame_realized_callback( GtkWidget * WXUNUSED(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. */
func |= GDK_FUNC_RESIZE;
decor |= GDK_DECOR_RESIZEH;
}
-
+
gdk_window_set_decorations( win->m_widget->window, (GdkWMDecoration)decor);
gdk_window_set_functions( win->m_widget->window, (GdkWMFunction)func);
}
else
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 1, 1, 1);
- /* set size hints */
- gint flag = 0; // GDK_HINT_POS;
- if ((win->GetMinWidth() != -1) || (win->GetMinHeight() != -1)) flag |= GDK_HINT_MIN_SIZE;
- if ((win->GetMaxWidth() != -1) || (win->GetMaxHeight() != -1)) flag |= GDK_HINT_MAX_SIZE;
- if (flag)
- {
- gdk_window_set_hints( win->m_widget->window,
- win->m_x, win->m_y,
- win->GetMinWidth(), win->GetMinHeight(),
- win->GetMaxWidth(), win->GetMaxHeight(),
- flag );
- }
-
/* reset the icon */
wxIcon iconOld = win->GetIcon();
if ( iconOld != wxNullIcon )
m_menuBarDetached = FALSE;
m_toolBarDetached = FALSE;
m_insertInClientArea = TRUE;
- m_isFrame = FALSE;
}
bool wxFrame::Create( wxWindow *parent,
wxTopLevelWindows.Append( this );
m_needParent = FALSE;
- m_isFrame = TRUE;
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
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",
{
wxFAIL_MSG( wxT("DoMoveWindow called for wxFrame") );
}
-
+
void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
{
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
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. */
skip the part which handles m_frameMenuBar, m_frameToolBar and (most
importantly) m_mainWidget */
+ if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
+ if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
+ if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
+ if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
+
if (m_mainWidget)
{
- /* check if size is in legal range */
- if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
- if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
- if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
- if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
+ /* set size hints */
+ gint flag = 0; // GDK_HINT_POS;
+ if ((m_minWidth != -1) || (m_minHeight != -1)) flag |= GDK_HINT_MIN_SIZE;
+ if ((m_maxWidth != -1) || (m_maxHeight != -1)) flag |= GDK_HINT_MAX_SIZE;
+ GdkGeometry geom;
+ geom.min_width = m_minWidth;
+ geom.min_height = m_minHeight;
+ geom.max_width = m_maxWidth;
+ geom.max_height = m_maxHeight;
+ gtk_window_set_geometry_hints( GTK_WINDOW(m_widget),
+ (GtkWidget*) NULL,
+ &geom,
+ (GdkWindowHints) flag );
/* I revert back to wxGTK's original behaviour. m_mainWidget holds the
* menubar, the toolbar and the client area, which is represented by
}
#endif
- /* 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;
// send size event to frame
gtk_signal_disconnect_by_func( GTK_OBJECT(m_frameMenuBar->m_widget),
GTK_SIGNAL_FUNC(gtk_menu_detached_callback), (gpointer)this );
}
-
+
gtk_container_remove( GTK_CONTAINER(m_mainWidget), m_frameMenuBar->m_widget );
gtk_widget_ref( m_frameMenuBar->m_widget );
gtk_widget_unparent( m_frameMenuBar->m_widget );
m_frameToolBar = wxFrameBase::CreateToolBar( style, id, name );
- if (m_frameToolBar)
- GetChildren().DeleteObject( m_frameToolBar );
-
m_insertInClientArea = TRUE;
m_sizeSet = FALSE;