-//-----------------------------------------------------------------------------
-// data
-//-----------------------------------------------------------------------------
-
-extern wxList wxPendingDelete;
-
-//-----------------------------------------------------------------------------
-// "delete_event"
-//-----------------------------------------------------------------------------
-
-bool gtk_dialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxDialog *win )
-{
- if (g_isIdle)
- wxapp_install_idle_handler();
-
- win->Close();
-
- return TRUE;
-}
-
-//-----------------------------------------------------------------------------
-// "size_allocate"
-//-----------------------------------------------------------------------------
-
-static void gtk_dialog_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxDialog *win )
-{
- if (g_isIdle)
- wxapp_install_idle_handler();
-
- if (!win->m_hasVMT) return;
-
- if ((win->m_width != alloc->width) || (win->m_height != alloc->height))
- {
- win->m_width = alloc->width;
- win->m_height = alloc->height;
- win->UpdateSize();
- }
-}
-
-//-----------------------------------------------------------------------------
-// "configure_event"
-//-----------------------------------------------------------------------------
-
-static gint gtk_dialog_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WXUNUSED(event), wxDialog *win )
-{
- if (g_isIdle)
- wxapp_install_idle_handler();
-
- if (!win->m_hasVMT) return FALSE;
-
- int x = 0;
- int y = 0;
- gdk_window_get_root_origin( win->m_widget->window, &x, &y );
-
- win->m_x = x;
- win->m_y = y;
-
- wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() );
- mevent.SetEventObject( win );
- win->GetEventHandler()->ProcessEvent( mevent );
-
- return FALSE;
-}
-
-//-----------------------------------------------------------------------------
-// "realize" from m_widget
-//-----------------------------------------------------------------------------
-
-/* we cannot MWM hints and icons before the widget has been realized,
- so we do this directly after realization */
-
-static gint
-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" and "map" */
- gtk_widget_set_uposition( widget, 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;
- long func = (long) GDK_FUNC_MOVE ;
-
- if ((win->GetWindowStyle() & wxCAPTION) != 0)
- decor |= GDK_DECOR_TITLE;
- if ((win->GetWindowStyle() & wxSYSTEM_MENU) != 0)
- {
- decor |= GDK_DECOR_MENU;
- func |= GDK_FUNC_CLOSE;
- }
- if ((win->GetWindowStyle() & wxMINIMIZE_BOX) != 0)
- {
- func |= GDK_FUNC_MINIMIZE;
- decor |= GDK_DECOR_MINIMIZE;
- }
- if ((win->GetWindowStyle() & wxMAXIMIZE_BOX) != 0)
- {
- decor |= GDK_DECOR_MAXIMIZE;
- func |= GDK_FUNC_MAXIMIZE;
- }
- if ((win->GetWindowStyle() & wxRESIZE_BORDER) != 0)
- {
- 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);
-
- /* GTK's shrinking/growing policy */
- if ((win->GetWindowStyle() & wxRESIZE_BORDER) == 0)
- gtk_window_set_policy(GTK_WINDOW(win->m_widget), 0, 0, 1);
- else
- gtk_window_set_policy(GTK_WINDOW(win->m_widget), 1, 1, 1);
-
- return FALSE;
-}
-
-//-----------------------------------------------------------------------------
-// InsertChild for wxDialog
-//-----------------------------------------------------------------------------
-
-/* Callback for wxFrame. This very strange beast has to be used because
- * C++ has no virtual methods in a constructor. We have to emulate a
- * virtual function here as wxWindows requires different ways to insert
- * a child in container classes. */