X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e90c1d2a19361551eb07778280f22be3e759cf64..59fe1666ce79d76b7decec871801c7622a789299:/src/gtk1/dialog.cpp?ds=sidebyside diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp index 275b1eb4e9..712a1fd986 100644 --- a/src/gtk1/dialog.cpp +++ b/src/gtk1/dialog.cpp @@ -38,33 +38,6 @@ extern bool g_isIdle; extern wxList wxPendingDelete; -/* -//----------------------------------------------------------------------------- -// instruct X to set the WM hint for positioning -//----------------------------------------------------------------------------- - -extern "C" { - -static void gdk_window_set_position_hint( GdkWindow *window, gint x, gint y ) -{ - GdkWindowPrivate *priv; - XSizeHints size_hints; - - g_return_if_fail (window != NULL); - - priv = (GdkWindowPrivate*) window; - if (priv->destroyed) return; - - size_hints.flags = PPosition; - size_hints.x = x; - size_hints.y = y; - - XSetWMNormalHints (priv->xdisplay, priv->xwindow, &size_hints); -} - -} -*/ - //----------------------------------------------------------------------------- // "delete_event" //----------------------------------------------------------------------------- @@ -145,41 +118,11 @@ 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 + /* I haven't been able to set the position of the dialog before it is shown, so I set the - position in "realize" and "map" */ + position in "realize" */ gtk_widget_set_uposition( widget, win->m_x, win->m_y ); -/* - gdk_window_set_position_hint( widget->window, win->m_x, win->m_y ); -*/ - - /* reset the icon */ - if (win->m_icon != wxNullIcon) - { - wxIcon icon( win->m_icon ); - win->m_icon = wxNullIcon; - win->SetIcon( icon ); - } - - return FALSE; -} - -//----------------------------------------------------------------------------- -// "map" from m_widget -//----------------------------------------------------------------------------- - -static gint -gtk_dialog_map_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" and "map" */ - 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; @@ -216,6 +159,27 @@ gtk_dialog_map_callback( GtkWidget *widget, wxDialog *win ) else gtk_window_set_policy(GTK_WINDOW(win->m_widget), 1, 1, 1); + /* set size hints */ + gint flag = 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 */ + if (win->m_icon != wxNullIcon) + { + wxIcon icon( win->m_icon ); + win->m_icon = wxNullIcon; + win->SetIcon( icon ); + } + return FALSE; } @@ -230,7 +194,7 @@ gtk_dialog_map_callback( GtkWidget *widget, wxDialog *win ) static void wxInsertChildInDialog( wxDialog* parent, wxWindow* child ) { - gtk_myfixed_put( GTK_MYFIXED(parent->m_wxwindow), + gtk_pizza_put( GTK_PIZZA(parent->m_wxwindow), GTK_WIDGET(child->m_widget), child->m_x, child->m_y, @@ -264,6 +228,7 @@ void wxDialog::Init() m_returnCode = 0; m_sizeSet = FALSE; m_modalShowing = FALSE; + m_isFrame = TRUE; } wxDialog::wxDialog( wxWindow *parent, @@ -288,7 +253,7 @@ bool wxDialog::Create( wxWindow *parent, if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) { - wxFAIL_MSG( T("wxDialog creation failed") ); + wxFAIL_MSG( wxT("wxDialog creation failed") ); return FALSE; } @@ -304,7 +269,7 @@ bool wxDialog::Create( wxWindow *parent, gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event", GTK_SIGNAL_FUNC(gtk_dialog_delete_callback), (gpointer)this ); - m_wxwindow = gtk_myfixed_new(); + m_wxwindow = gtk_pizza_new(); gtk_widget_show( m_wxwindow ); GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS ); @@ -321,11 +286,6 @@ bool wxDialog::Create( wxWindow *parent, gtk_signal_connect( GTK_OBJECT(m_widget), "realize", GTK_SIGNAL_FUNC(gtk_dialog_realized_callback), (gpointer) this ); - /* we set the position of the window after the map event. setting it - before has no effect (with KWM) */ - gtk_signal_connect( GTK_OBJECT(m_widget), "map", - GTK_SIGNAL_FUNC(gtk_dialog_map_callback), (gpointer) this ); - /* the user resized the frame by dragging etc. */ gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", GTK_SIGNAL_FUNC(gtk_dialog_size_callback), (gpointer)this ); @@ -356,7 +316,7 @@ wxDialog::~wxDialog() void wxDialog::SetTitle( const wxString& title ) { m_title = title; - if (m_title.IsNull()) m_title = T(""); + if (m_title.IsNull()) m_title = wxT(""); gtk_window_set_title( GTK_WINDOW(m_widget), m_title.mbc_str() ); } @@ -404,7 +364,7 @@ void wxDialog::OnPaint( wxPaintEvent& WXUNUSED(event) ) // yes } -void wxDialog::OnCloseWindow(wxCloseEvent& event) +void wxDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { // We'll send a Cancel message by default, // which may close the dialog. @@ -442,7 +402,7 @@ bool wxDialog::Destroy() void wxDialog::OnSize( wxSizeEvent &WXUNUSED(event) ) { - wxASSERT_MSG( (m_widget != NULL), T("invalid dialog") ); + wxASSERT_MSG( (m_widget != NULL), wxT("invalid dialog") ); #if wxUSE_CONSTRAINTS if (GetAutoLayout()) @@ -477,8 +437,8 @@ void wxDialog::OnSize( wxSizeEvent &WXUNUSED(event) ) void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags ) { - wxASSERT_MSG( (m_widget != NULL), T("invalid dialog") ); - wxASSERT_MSG( (m_wxwindow != NULL), T("invalid dialog") ); + wxASSERT_MSG( (m_widget != NULL), wxT("invalid dialog") ); + wxASSERT_MSG( (m_wxwindow != NULL), wxT("invalid dialog") ); if (m_resizing) return; /* I don't like recursions */ m_resizing = TRUE; @@ -503,6 +463,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags ) m_height = height; } +/* if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) { if (width == -1) m_width = 80; @@ -512,6 +473,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags ) { if (height == -1) m_height = 26; } +*/ if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; @@ -565,19 +527,6 @@ void wxDialog::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int heigh GetEventHandler()->ProcessEvent( event ); } -void wxDialog::Centre( int direction ) -{ - wxASSERT_MSG( (m_widget != NULL), T("invalid dialog") ); - - int x = 0; - int y = 0; - - if ((direction & wxHORIZONTAL) == wxHORIZONTAL) x = (gdk_screen_width () - m_width) / 2; - if ((direction & wxVERTICAL) == wxVERTICAL) y = (gdk_screen_height () - m_height) / 2; - - Move( x, y ); -} - void wxDialog::OnInternalIdle() { if (!m_sizeSet && GTK_WIDGET_REALIZED(m_wxwindow)) @@ -623,14 +572,14 @@ void wxDialog::SetModal( bool WXUNUSED(flag) ) else if (m_windowStyle & wxDIALOG_MODAL) m_windowStyle -= wxDIALOG_MODAL; */ - wxFAIL_MSG( T("wxDialog:SetModal obsolete now") ); + wxFAIL_MSG( wxT("wxDialog:SetModal obsolete now") ); } int wxDialog::ShowModal() { if (IsModal()) { - wxFAIL_MSG( T("wxDialog:ShowModal called twice") ); + wxFAIL_MSG( wxT("wxDialog:ShowModal called twice") ); return GetReturnCode(); } @@ -653,7 +602,7 @@ void wxDialog::EndModal( int retCode ) if (!IsModal()) { - wxFAIL_MSG( T("wxDialog:EndModal called twice") ); + wxFAIL_MSG( wxT("wxDialog:EndModal called twice") ); return; }