]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/app.cpp
mention wx[Flex]GridSizer too
[wxWidgets.git] / src / gtk / app.cpp
index 8502f2a279105cffa2b66fbd0fb0c1bf89d25247..b27af26cf35b79205115caa4329c18d4d6eef085 100644 (file)
 #endif
 
 #include <unistd.h>
+#include "wx/gtk/win_gtk.h"
 
-#include <glib.h>
-#include <gdk/gdk.h>
 #include <gtk/gtk.h>
 
-#include "wx/gtk/win_gtk.h"
 
 //-----------------------------------------------------------------------------
 // global data
@@ -335,6 +333,9 @@ wxApp::wxApp()
 #endif
 
     m_colorCube = (unsigned char*) NULL;
+    
+    // this is NULL for a "regular" wxApp, but is set (and freed) by a wxGLApp
+    m_glVisualInfo = (void *) NULL;
 }
 
 wxApp::~wxApp()
@@ -355,11 +356,29 @@ bool wxApp::OnInitGui()
 
     GdkVisual *visual = gdk_visual_get_system();
 
+    // if this is a wxGLApp (derived from wxApp), and we've already
+    // chosen a specific visual, then derive the GdkVisual from that
+    if (m_glVisualInfo != NULL) {
+#ifdef __WXGTK20__
+        /* seems gtk_widget_set_default_visual no longer exists? */
+        GdkVisual* vis = gtk_widget_get_default_visual();
+#else
+        GdkVisual* vis = gdkx_visual_get( 
+            ((XVisualInfo *) m_glVisualInfo) ->visualid );
+        gtk_widget_set_default_visual( vis );
+#endif
+
+        GdkColormap *colormap = gdk_colormap_new( vis, FALSE );
+        gtk_widget_set_default_colormap( colormap );
+
+        visual = vis;
+    }
+    
     /* on some machines, the default visual is just 256 colours, so
        we make sure we get the best. this can sometimes be wasteful,
        of course, but what do these guys pay $30.000 for? */
 
-    if ((gdk_visual_get_best() != gdk_visual_get_system()) &&
+    else if ((gdk_visual_get_best() != gdk_visual_get_system()) &&
         (m_useBestVisual))
     {
 #ifdef __WXGTK20__