]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/toplevel.cpp
[ 1216436 ] cleanup 'shadow variable' warnings from gcc in headers.
[wxWidgets.git] / src / gtk / toplevel.cpp
index fb7300af9dbb5a6ffefee59158edb6425e9dfaef..c8705377dc76da3aa56c38960f6876f0d37d6307 100644 (file)
@@ -82,6 +82,7 @@ static int              g_sendActivateEvent = -1;
 // "focus_in_event"
 //-----------------------------------------------------------------------------
 
 // "focus_in_event"
 //-----------------------------------------------------------------------------
 
+extern "C" {
 static gint gtk_frame_focus_in_callback( GtkWidget *widget,
                                          GdkEvent *WXUNUSED(event),
                                          wxTopLevelWindowGTK *win )
 static gint gtk_frame_focus_in_callback( GtkWidget *widget,
                                          GdkEvent *WXUNUSED(event),
                                          wxTopLevelWindowGTK *win )
@@ -115,11 +116,13 @@ static gint gtk_frame_focus_in_callback( GtkWidget *widget,
 
     return FALSE;
 }
 
     return FALSE;
 }
+}
 
 //-----------------------------------------------------------------------------
 // "focus_out_event"
 //-----------------------------------------------------------------------------
 
 
 //-----------------------------------------------------------------------------
 // "focus_out_event"
 //-----------------------------------------------------------------------------
 
+extern "C" {
 static gint gtk_frame_focus_out_callback( GtkWidget *widget, 
                                           GdkEventFocus *WXUNUSED(gdk_event), 
                                           wxTopLevelWindowGTK *win )
 static gint gtk_frame_focus_out_callback( GtkWidget *widget, 
                                           GdkEventFocus *WXUNUSED(gdk_event), 
                                           wxTopLevelWindowGTK *win )
@@ -148,11 +151,13 @@ static gint gtk_frame_focus_out_callback( GtkWidget *widget,
         
     return FALSE;
 }
         
     return FALSE;
 }
+}
 
 //-----------------------------------------------------------------------------
 // "focus" from m_window
 //-----------------------------------------------------------------------------
 
 
 //-----------------------------------------------------------------------------
 // "focus" from m_window
 //-----------------------------------------------------------------------------
 
+extern "C" {
 static gint gtk_frame_focus_callback( GtkWidget *widget, GtkDirectionType WXUNUSED(d), wxWindow *WXUNUSED(win) )
 {
     if (g_isIdle)
 static gint gtk_frame_focus_callback( GtkWidget *widget, GtkDirectionType WXUNUSED(d), wxWindow *WXUNUSED(win) )
 {
     if (g_isIdle)
@@ -162,11 +167,13 @@ static gint gtk_frame_focus_callback( GtkWidget *widget, GtkDirectionType WXUNUS
     gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus" );
     return TRUE;
 }
     gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus" );
     return TRUE;
 }
+}
 
 //-----------------------------------------------------------------------------
 // "size_allocate"
 //-----------------------------------------------------------------------------
 
 
 //-----------------------------------------------------------------------------
 // "size_allocate"
 //-----------------------------------------------------------------------------
 
+extern "C" {
 static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxTopLevelWindowGTK *win )
 {
     if (g_isIdle)
 static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxTopLevelWindowGTK *win )
 {
     if (g_isIdle)
@@ -192,11 +199,13 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation*
         win->GtkUpdateSize();
     }
 }
         win->GtkUpdateSize();
     }
 }
+}
 
 //-----------------------------------------------------------------------------
 // "delete_event"
 //-----------------------------------------------------------------------------
 
 
 //-----------------------------------------------------------------------------
 // "delete_event"
 //-----------------------------------------------------------------------------
 
+extern "C" {
 static gint gtk_frame_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxTopLevelWindowGTK *win )
 {
     if (g_isIdle)
 static gint gtk_frame_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxTopLevelWindowGTK *win )
 {
     if (g_isIdle)
@@ -209,12 +218,14 @@ static gint gtk_frame_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WX
 
     return TRUE;
 }
 
     return TRUE;
 }
+}
 
 
 //-----------------------------------------------------------------------------
 // "configure_event"
 //-----------------------------------------------------------------------------
 
 
 
 //-----------------------------------------------------------------------------
 // "configure_event"
 //-----------------------------------------------------------------------------
 
+extern "C" {
 static gint
 gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WXUNUSED(event), wxTopLevelWindowGTK *win )
 {
 static gint
 gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WXUNUSED(event), wxTopLevelWindowGTK *win )
 {
@@ -237,6 +248,7 @@ gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WX
 
     return FALSE;
 }
 
     return FALSE;
 }
+}
 
 //-----------------------------------------------------------------------------
 // "realize" from m_widget
 
 //-----------------------------------------------------------------------------
 // "realize" from m_widget
@@ -245,6 +257,7 @@ gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WX
 // we cannot MWM hints and icons before the widget has been realized,
 // so we do this directly after realization
 
 // we cannot MWM hints and icons before the widget has been realized,
 // so we do this directly after realization
 
+extern "C" {
 static void
 gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget),
                              wxTopLevelWindowGTK *win )
 static void
 gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget),
                              wxTopLevelWindowGTK *win )
@@ -273,11 +286,13 @@ gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget),
         win->SetIcons( iconsOld );
     }
 }
         win->SetIcons( iconsOld );
     }
 }
+}
 
 //-----------------------------------------------------------------------------
 // "map_event" from m_widget
 //-----------------------------------------------------------------------------
 
 
 //-----------------------------------------------------------------------------
 // "map_event" from m_widget
 //-----------------------------------------------------------------------------
 
+extern "C" {
 static void
 gtk_frame_map_callback( GtkWidget * WXUNUSED(widget),
                         GdkEvent * WXUNUSED(event),
 static void
 gtk_frame_map_callback( GtkWidget * WXUNUSED(widget),
                         GdkEvent * WXUNUSED(event),
@@ -285,11 +300,13 @@ gtk_frame_map_callback( GtkWidget * WXUNUSED(widget),
 {
     win->SetIconizeState(FALSE);
 }
 {
     win->SetIconizeState(FALSE);
 }
+}
 
 //-----------------------------------------------------------------------------
 // "unmap_event" from m_widget
 //-----------------------------------------------------------------------------
 
 
 //-----------------------------------------------------------------------------
 // "unmap_event" from m_widget
 //-----------------------------------------------------------------------------
 
+extern "C" {
 static void
 gtk_frame_unmap_callback( GtkWidget * WXUNUSED(widget),
                           GdkEvent * WXUNUSED(event),
 static void
 gtk_frame_unmap_callback( GtkWidget * WXUNUSED(widget),
                           GdkEvent * WXUNUSED(event),
@@ -297,11 +314,13 @@ gtk_frame_unmap_callback( GtkWidget * WXUNUSED(widget),
 {
     win->SetIconizeState(TRUE);
 }
 {
     win->SetIconizeState(TRUE);
 }
+}
 
 //-----------------------------------------------------------------------------
 // "expose_event" of m_client
 //-----------------------------------------------------------------------------
 
 
 //-----------------------------------------------------------------------------
 // "expose_event" of m_client
 //-----------------------------------------------------------------------------
 
+extern "C" {
 static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_event, wxWindow *win )
 {
     GtkPizza *pizza = GTK_PIZZA(widget);
 static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_event, wxWindow *win )
 {
     GtkPizza *pizza = GTK_PIZZA(widget);
@@ -316,6 +335,7 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
 
     return FALSE;
 }
 
     return FALSE;
 }
+}
 
 //-----------------------------------------------------------------------------
 // "draw" of m_client
 
 //-----------------------------------------------------------------------------
 // "draw" of m_client
@@ -323,6 +343,7 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
 
 #ifndef __WXGTK20__
 
 
 #ifndef __WXGTK20__
 
+extern "C" {
 static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxWindow *win )
 {
     GtkPizza *pizza = GTK_PIZZA(widget);
 static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxWindow *win )
 {
     GtkPizza *pizza = GTK_PIZZA(widget);
@@ -335,6 +356,7 @@ static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxW
                         (char *)"base",
                         0, 0, -1, -1);
 }
                         (char *)"base",
                         0, 0, -1, -1);
 }
+}
 
 #endif // GTK+ 1.x
 
 
 #endif // GTK+ 1.x
 
@@ -450,21 +472,23 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent,
         {
             m_widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 #if GTK_CHECK_VERSION(2,1,0)
         {
             m_widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 #if GTK_CHECK_VERSION(2,1,0)
-            if (style & wxFRAME_TOOL_WINDOW)
+            if (!gtk_check_version(2,1,0))
             {
             {
-                gtk_window_set_type_hint(GTK_WINDOW(m_widget),
-                                         GDK_WINDOW_TYPE_HINT_UTILITY);
+                if (style & wxFRAME_TOOL_WINDOW)
+                {
+                    gtk_window_set_type_hint(GTK_WINDOW(m_widget),
+                                             GDK_WINDOW_TYPE_HINT_UTILITY);
                 
                 
-                // On some WMs, like KDE, a TOOL_WINDOW will still show
-                // on the taskbar, but on Gnome a TOOL_WINDOW will not.
-                // For consistency between WMs and with Windows, we 
-                // should set the NO_TASKBAR flag which will apply
-                // the set_skip_taskbar_hint if it is available,
-                // ensuring no taskbar entry will appear.
-                style |= wxFRAME_NO_TASKBAR;
+                    // On some WMs, like KDE, a TOOL_WINDOW will still show
+                    // on the taskbar, but on Gnome a TOOL_WINDOW will not.
+                    // For consistency between WMs and with Windows, we 
+                    // should set the NO_TASKBAR flag which will apply
+                    // the set_skip_taskbar_hint if it is available,
+                    // ensuring no taskbar entry will appear.
+                    style |= wxFRAME_NO_TASKBAR;
+                }
             }
 #endif
             }
 #endif
-
         }
     }
 
         }
     }
 
@@ -478,9 +502,22 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent,
     }
 
 #if GTK_CHECK_VERSION(2,2,0)
     }
 
 #if GTK_CHECK_VERSION(2,2,0)
-    if (style & wxFRAME_NO_TASKBAR)
+    if (!gtk_check_version(2,2,0))
+    {
+        if (style & wxFRAME_NO_TASKBAR)
+        {
+            gtk_window_set_skip_taskbar_hint(GTK_WINDOW(m_widget), TRUE);
+        }
+    }
+#endif
+
+#if GTK_CHECK_VERSION(2,4,0)
+    if (!gtk_check_version(2,4,0))
     {
     {
-        gtk_window_set_skip_taskbar_hint(GTK_WINDOW(m_widget), TRUE);
+        if (style & wxSTAY_ON_TOP)
+        {
+            gtk_window_set_keep_above(GTK_WINDOW(m_widget), TRUE);
+        }
     }
 #endif
 
     }
 #endif