]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/toplevel.cpp
Add new wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED event. Implement for all backends, exten...
[wxWidgets.git] / src / gtk1 / toplevel.cpp
index 50731776a9f32eaf6cd64911987222ab05bf2e83..22364cdcdc59e00a6b0f085136cacee9e2d39d95 100644 (file)
     #include "wx/log.h"
     #include "wx/app.h"
     #include "wx/dcclient.h"
     #include "wx/log.h"
     #include "wx/app.h"
     #include "wx/dcclient.h"
+    #include "wx/dialog.h"
+    #include "wx/timer.h"
+    #include "wx/settings.h"
+    #include "wx/control.h"
 #endif
 
 #endif
 
-#include "wx/dialog.h"
-#include "wx/control.h"
 #include "wx/gtk1/private.h"
 #include "wx/gtk1/private.h"
-#include "wx/timer.h"
-#include "wx/settings.h"
 #include "wx/evtloop.h"
 
 #include <glib.h>
 #include "wx/evtloop.h"
 
 #include <glib.h>
@@ -61,15 +61,13 @@ extern bool g_isIdle;
 // data
 // ----------------------------------------------------------------------------
 
 // data
 // ----------------------------------------------------------------------------
 
-extern wxList           wxPendingDelete;
-
 extern int              g_openDialogs;
 extern wxWindowGTK     *g_delayedFocus;
 
 // the frame that is currently active (i.e. its child has focus). It is
 // used to generate wxActivateEvents
 extern int              g_openDialogs;
 extern wxWindowGTK     *g_delayedFocus;
 
 // the frame that is currently active (i.e. its child has focus). It is
 // used to generate wxActivateEvents
-static wxTopLevelWindowGTK *g_activeFrame = (wxTopLevelWindowGTK*) NULL;
-static wxTopLevelWindowGTK *g_lastActiveFrame = (wxTopLevelWindowGTK*) NULL;
+static wxTopLevelWindowGTK *g_activeFrame = NULL;
+static wxTopLevelWindowGTK *g_lastActiveFrame = NULL;
 
 // if we detect that the app has got/lost the focus, we set this variable to
 // either TRUE or FALSE and an activate event will be sent during the next
 
 // if we detect that the app has got/lost the focus, we set this variable to
 // either TRUE or FALSE and an activate event will be sent during the next
@@ -161,7 +159,7 @@ static gint gtk_frame_focus_in_callback( GtkWidget *widget,
     wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), g_activeFrame);
     wxActivateEvent event(wxEVT_ACTIVATE, true, g_activeFrame->GetId());
     event.SetEventObject(g_activeFrame);
     wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), g_activeFrame);
     wxActivateEvent event(wxEVT_ACTIVATE, true, g_activeFrame->GetId());
     event.SetEventObject(g_activeFrame);
-    g_activeFrame->GetEventHandler()->ProcessEvent(event);
+    g_activeFrame->HandleWindowEvent(event);
 
     return FALSE;
 }
 
     return FALSE;
 }
@@ -172,9 +170,9 @@ static gint gtk_frame_focus_in_callback( GtkWidget *widget,
 //-----------------------------------------------------------------------------
 
 extern "C" {
 //-----------------------------------------------------------------------------
 
 extern "C" {
-static gint gtk_frame_focus_out_callback( GtkWidget *widget,
+static gint gtk_frame_focus_out_callback( GtkWidget *WXUNUSED(widget),
                                           GdkEventFocus *WXUNUSED(gdk_event),
                                           GdkEventFocus *WXUNUSED(gdk_event),
-                                          wxTopLevelWindowGTK *win )
+                                          wxTopLevelWindowGTK *WXUNUSED(win) )
 {
     if (g_isIdle)
         wxapp_install_idle_handler();
 {
     if (g_isIdle)
         wxapp_install_idle_handler();
@@ -193,7 +191,7 @@ static gint gtk_frame_focus_out_callback( GtkWidget *widget,
         wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), g_activeFrame);
         wxActivateEvent event(wxEVT_ACTIVATE, false, g_activeFrame->GetId());
         event.SetEventObject(g_activeFrame);
         wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), g_activeFrame);
         wxActivateEvent event(wxEVT_ACTIVATE, false, g_activeFrame->GetId());
         event.SetEventObject(g_activeFrame);
-        g_activeFrame->GetEventHandler()->ProcessEvent(event);
+        g_activeFrame->HandleWindowEvent(event);
 
         g_activeFrame = NULL;
     }
 
         g_activeFrame = NULL;
     }
@@ -293,7 +291,7 @@ gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WX
 
     wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() );
     mevent.SetEventObject( win );
 
     wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() );
     mevent.SetEventObject( win );
-    win->GetEventHandler()->ProcessEvent( mevent );
+    win->HandleWindowEvent( mevent );
 
     return FALSE;
 }
 
     return FALSE;
 }
@@ -329,7 +327,7 @@ gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget),
 
     // reset the icon
     wxIconBundle iconsOld = win->GetIcons();
 
     // reset the icon
     wxIconBundle iconsOld = win->GetIcons();
-    if ( iconsOld.GetIcon(-1).Ok() )
+    if ( !iconsOld.IsEmpty() )
     {
         win->SetIcon( wxNullIcon );
         win->SetIcons( iconsOld );
     {
         win->SetIcon( wxNullIcon );
         win->SetIcons( iconsOld );
@@ -457,7 +455,7 @@ void wxTopLevelWindowGTK::Init()
     m_sizeSet = false;
     m_miniEdge = 0;
     m_miniTitle = 0;
     m_sizeSet = false;
     m_miniEdge = 0;
     m_miniTitle = 0;
-    m_mainWidget = (GtkWidget*) NULL;
+    m_mainWidget = NULL;
     m_insertInClientArea = true;
     m_isIconized = false;
     m_fsIsShowing = false;
     m_insertInClientArea = true;
     m_isIconized = false;
     m_fsIsShowing = false;
@@ -658,11 +656,11 @@ wxTopLevelWindowGTK::~wxTopLevelWindowGTK()
 {
     if (m_grabbed)
     {
 {
     if (m_grabbed)
     {
-        wxASSERT_MSG( false, _T("Window still grabbed"));
+        wxASSERT_MSG( false, wxT("Window still grabbed"));
         RemoveGrab();
     }
 
         RemoveGrab();
     }
 
-    m_isBeingDeleted = true;
+    SendDestroyEvent();
 
     // it may also be GtkScrolledWindow in the case of an MDI child
     if (GTK_IS_WINDOW(m_widget))
 
     // it may also be GtkScrolledWindow in the case of an MDI child
     if (GTK_IS_WINDOW(m_widget))
@@ -992,7 +990,7 @@ void wxTopLevelWindowGTK::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y),
                             : maxHeight ;
 
         gtk_window_set_geometry_hints( GTK_WINDOW(m_widget),
                             : maxHeight ;
 
         gtk_window_set_geometry_hints( GTK_WINDOW(m_widget),
-                                       (GtkWidget*) NULL,
+                                       NULL,
                                        &geom,
                                        (GdkWindowHints) flag );
 
                                        &geom,
                                        (GdkWindowHints) flag );
 
@@ -1022,7 +1020,7 @@ void wxTopLevelWindowGTK::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y),
     // send size event to frame
     wxSizeEvent event( wxSize(m_width,m_height), GetId() );
     event.SetEventObject( this );
     // send size event to frame
     wxSizeEvent event( wxSize(m_width,m_height), GetId() );
     event.SetEventObject( this );
-    GetEventHandler()->ProcessEvent( event );
+    HandleWindowEvent( event );
 
     m_resizing = false;
 }
 
     m_resizing = false;
 }
@@ -1045,8 +1043,8 @@ void wxTopLevelWindowGTK::OnInternalIdle()
         if ( g_delayedFocus &&
              wxGetTopLevelParent((wxWindow*)g_delayedFocus) == this )
         {
         if ( g_delayedFocus &&
              wxGetTopLevelParent((wxWindow*)g_delayedFocus) == this )
         {
-            wxLogTrace(_T("focus"),
-                       _T("Setting focus from wxTLW::OnIdle() to %s(%s)"),
+            wxLogTrace(wxT("focus"),
+                       wxT("Setting focus from wxTLW::OnIdle() to %s(%s)"),
                        g_delayedFocus->GetClassInfo()->GetClassName(),
                        g_delayedFocus->GetLabel().c_str());
 
                        g_delayedFocus->GetClassInfo()->GetClassName(),
                        g_delayedFocus->GetLabel().c_str());
 
@@ -1088,29 +1086,27 @@ void wxTopLevelWindowGTK::SetTitle( const wxString &title )
     gtk_window_set_title( GTK_WINDOW(m_widget), wxGTK_CONV( title ) );
 }
 
     gtk_window_set_title( GTK_WINDOW(m_widget), wxGTK_CONV( title ) );
 }
 
-void wxTopLevelWindowGTK::SetIcon( const wxIcon &icon )
-{
-    SetIcons( wxIconBundle( icon ) );
-}
-
 void wxTopLevelWindowGTK::SetIcons( const wxIconBundle &icons )
 {
     wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
 
     wxTopLevelWindowBase::SetIcons( icons );
 
 void wxTopLevelWindowGTK::SetIcons( const wxIconBundle &icons )
 {
     wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
 
     wxTopLevelWindowBase::SetIcons( icons );
 
+    if ( icons.IsEmpty() )
+        return;
+
     GdkWindow* window = m_widget->window;
     if (!window)
         return;
 
     wxIcon icon = icons.GetIcon(-1);
     GdkWindow* window = m_widget->window;
     if (!window)
         return;
 
     wxIcon icon = icons.GetIcon(-1);
-    if (icon.Ok())
+    if (icon.IsOk())
     {
         wxMask *mask = icon.GetMask();
     {
         wxMask *mask = icon.GetMask();
-        GdkBitmap *bm = (GdkBitmap *) NULL;
+        GdkBitmap *bm = NULL;
         if (mask) bm = mask->GetBitmap();
 
         if (mask) bm = mask->GetBitmap();
 
-        gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm );
+        gdk_window_set_icon( m_widget->window, NULL, icon.GetPixmap(), bm );
     }
 
     wxSetIconsX11( (WXDisplay*)GDK_WINDOW_XDISPLAY( window ),
     }
 
     wxSetIconsX11( (WXDisplay*)GDK_WINDOW_XDISPLAY( window ),
@@ -1121,14 +1117,14 @@ void wxTopLevelWindowGTK::SetIcons( const wxIconBundle &icons )
 // frame state: maximized/iconized/normal
 // ----------------------------------------------------------------------------
 
 // frame state: maximized/iconized/normal
 // ----------------------------------------------------------------------------
 
-void wxTopLevelWindowGTK::Maximize(bool maximize)
+void wxTopLevelWindowGTK::Maximize(bool WXUNUSED(maximize))
 {
 {
-    wxFAIL_MSG( _T("not implemented") );
+    wxFAIL_MSG( wxT("not implemented") );
 }
 
 bool wxTopLevelWindowGTK::IsMaximized() const
 {
 }
 
 bool wxTopLevelWindowGTK::IsMaximized() const
 {
-  //    wxFAIL_MSG( _T("not implemented") );
+  //    wxFAIL_MSG( wxT("not implemented") );
 
     // This is an approximation
     return false;
 
     // This is an approximation
     return false;
@@ -1136,7 +1132,7 @@ bool wxTopLevelWindowGTK::IsMaximized() const
 
 void wxTopLevelWindowGTK::Restore()
 {
 
 void wxTopLevelWindowGTK::Restore()
 {
-    wxFAIL_MSG( _T("not implemented") );
+    wxFAIL_MSG( wxT("not implemented") );
 }
 
 void wxTopLevelWindowGTK::Iconize( bool iconize )
 }
 
 void wxTopLevelWindowGTK::Iconize( bool iconize )
@@ -1146,7 +1142,7 @@ void wxTopLevelWindowGTK::Iconize( bool iconize )
        GdkWindow *window = m_widget->window;
 
        // you should do it later, for example from OnCreate() handler
        GdkWindow *window = m_widget->window;
 
        // you should do it later, for example from OnCreate() handler
-       wxCHECK_RET( window, _T("frame not created yet - can't iconize") );
+       wxCHECK_RET( window, wxT("frame not created yet - can't iconize") );
 
        XIconifyWindow( GDK_WINDOW_XDISPLAY( window ),
                        GDK_WINDOW_XWINDOW( window ),
 
        XIconifyWindow( GDK_WINDOW_XDISPLAY( window ),
                        GDK_WINDOW_XWINDOW( window ),
@@ -1214,7 +1210,7 @@ static bool do_shape_combine_region(GdkWindow* window, const wxRegion& region)
 bool wxTopLevelWindowGTK::SetShape(const wxRegion& region)
 {
     wxCHECK_MSG( HasFlag(wxFRAME_SHAPED), false,
 bool wxTopLevelWindowGTK::SetShape(const wxRegion& region)
 {
     wxCHECK_MSG( HasFlag(wxFRAME_SHAPED), false,
-                 _T("Shaped windows must be created with the wxFRAME_SHAPED style."));
+                 wxT("Shaped windows must be created with the wxFRAME_SHAPED style."));
 
     GdkWindow *window = NULL;
     if (m_wxwindow)
 
     GdkWindow *window = NULL;
     if (m_wxwindow)