]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/settings.cpp
Fixed the drawing of the HRules so they don't try to iterate over all
[wxWidgets.git] / src / gtk1 / settings.cpp
index 29e3b821f97783fd1def312119b4d4f72e7bc488..4aae2448f713da73d841bff3c8d3d43a1cd1f737 100644 (file)
 #include "wx/settings.h"
 #include "wx/debug.h"
 
 #include "wx/settings.h"
 #include "wx/debug.h"
 
+#include "wx/cmndata.h"
+
 #include <gdk/gdk.h>
 #include <gdk/gdk.h>
+#include <gdk/gdkprivate.h>
 #include <gtk/gtk.h>
 
 #include <gtk/gtk.h>
 
+extern GdkFont *GtkGetDefaultGuiFont();
+
+
 /*
 #define wxSYS_COLOUR_SCROLLBAR         0
 #define wxSYS_COLOUR_BACKGROUND        1
 /*
 #define wxSYS_COLOUR_SCROLLBAR         0
 #define wxSYS_COLOUR_BACKGROUND        1
@@ -63,6 +69,7 @@ wxColour *g_systemBtnHighlightColour  = (wxColour *) NULL;
 wxColour *g_systemHighlightColour     = (wxColour *) NULL;
 wxColour *g_systemHighlightTextColour = (wxColour *) NULL;
 wxColour *g_systemListBoxColour       = (wxColour *) NULL;
 wxColour *g_systemHighlightColour     = (wxColour *) NULL;
 wxColour *g_systemHighlightTextColour = (wxColour *) NULL;
 wxColour *g_systemListBoxColour       = (wxColour *) NULL;
+wxColour *g_systemBtnTextColour       = (wxColour *) NULL;
 
 wxFont *g_systemFont = (wxFont *) NULL;
 
 
 wxFont *g_systemFont = (wxFont *) NULL;
 
@@ -76,6 +83,7 @@ void wxSystemSettings::Done()
     delete g_systemHighlightTextColour;
     delete g_systemListBoxColour;
     delete g_systemFont;
     delete g_systemHighlightTextColour;
     delete g_systemListBoxColour;
     delete g_systemFont;
+    delete g_systemBtnTextColour;
 }
 
 wxColour wxSystemSettings::GetSystemColour( int index )
 }
 
 wxColour wxSystemSettings::GetSystemColour( int index )
@@ -91,7 +99,36 @@ wxColour wxSystemSettings::GetSystemColour( int index )
         case wxSYS_COLOUR_ACTIVEBORDER:
         case wxSYS_COLOUR_INACTIVEBORDER:
         case wxSYS_COLOUR_BTNFACE:
         case wxSYS_COLOUR_ACTIVEBORDER:
         case wxSYS_COLOUR_INACTIVEBORDER:
         case wxSYS_COLOUR_BTNFACE:
+        case wxSYS_COLOUR_3DLIGHT:
         {
         {
+            if (!g_systemBtnFaceColour)
+            {
+                GtkWidget *widget = gtk_button_new();
+                GtkStyle *def = gtk_rc_get_style( widget );
+                if (!def)
+                    def = gtk_widget_get_default_style();
+                if (def)
+                {
+                    int red = def->bg[GTK_STATE_NORMAL].red;
+                    int green = def->bg[GTK_STATE_NORMAL].green;
+                    int blue = def->bg[GTK_STATE_NORMAL].blue;
+                    g_systemBtnFaceColour = 
+                           new wxColour( red    >> SHIFT,
+                                         green  >> SHIFT,
+                                                 blue   >> SHIFT );
+                }
+                else
+                {
+                    g_systemBtnFaceColour = 
+                           new wxColour( 0      >> SHIFT,
+                                         0      >> SHIFT,
+                                                 0x9c40 >> SHIFT );
+                }
+                gtk_widget_destroy( widget );
+
+            }
+            return *g_systemBtnFaceColour;
+           /*
             if (!g_systemBtnFaceColour)
             {
                 g_systemBtnFaceColour = 
             if (!g_systemBtnFaceColour)
             {
                 g_systemBtnFaceColour = 
@@ -100,14 +137,29 @@ wxColour wxSystemSettings::GetSystemColour( int index )
                                              0xd6d6 >> SHIFT );
             }
             return *g_systemBtnFaceColour;
                                              0xd6d6 >> SHIFT );
             }
             return *g_systemBtnFaceColour;
+           */
         }
         case wxSYS_COLOUR_WINDOW:
         {
             return *wxWHITE;
         }
         }
         case wxSYS_COLOUR_WINDOW:
         {
             return *wxWHITE;
         }
+        case wxSYS_COLOUR_3DDKSHADOW:
+        {
+            return *wxBLACK;
+        }
         case wxSYS_COLOUR_GRAYTEXT:
         case wxSYS_COLOUR_BTNSHADOW:
         case wxSYS_COLOUR_GRAYTEXT:
         case wxSYS_COLOUR_BTNSHADOW:
+        //case wxSYS_COLOUR_3DSHADOW:
         {
         {
+            if (!g_systemBtnShadowColour)
+            {
+                wxColour faceColour(GetSystemColour(wxSYS_COLOUR_3DFACE));
+                g_systemBtnShadowColour =
+                   new wxColour((unsigned char) (faceColour.Red() * 0.666),
+                                (unsigned char) (faceColour.Green() * 0.666),
+                                (unsigned char) (faceColour.Blue() * 0.666));
+           }
+  /*
             if (!g_systemBtnShadowColour)
             {
                 g_systemBtnShadowColour = 
             if (!g_systemBtnShadowColour)
             {
                 g_systemBtnShadowColour = 
@@ -115,10 +167,14 @@ wxColour wxSystemSettings::GetSystemColour( int index )
                                      0x7530 >> SHIFT,
                                              0x7530 >> SHIFT );
             }
                                      0x7530 >> SHIFT,
                                              0x7530 >> SHIFT );
             }
+  */
             return *g_systemBtnShadowColour;
         }
             return *g_systemBtnShadowColour;
         }
-        case wxSYS_COLOUR_BTNHIGHLIGHT:
+        case wxSYS_COLOUR_3DHIGHLIGHT:
+        //case wxSYS_COLOUR_BTNHIGHLIGHT:
         {
         {
+            return * wxWHITE;
+/* I think this should normally be white (JACS 8/2000)
             if (!g_systemBtnHighlightColour)
             {
                 g_systemBtnHighlightColour = 
             if (!g_systemBtnHighlightColour)
             {
                 g_systemBtnHighlightColour = 
@@ -127,6 +183,7 @@ wxColour wxSystemSettings::GetSystemColour( int index )
                                              0xea60 >> SHIFT );
             }
             return *g_systemBtnHighlightColour;
                                              0xea60 >> SHIFT );
             }
             return *g_systemBtnHighlightColour;
+*/
         }
         case wxSYS_COLOUR_HIGHLIGHT:
         {
         }
         case wxSYS_COLOUR_HIGHLIGHT:
         {
@@ -164,13 +221,13 @@ wxColour wxSystemSettings::GetSystemColour( int index )
             {
                 GtkWidget *widget = gtk_list_new();
                 GtkStyle *def = gtk_rc_get_style( widget );
             {
                 GtkWidget *widget = gtk_list_new();
                 GtkStyle *def = gtk_rc_get_style( widget );
-                if (!def)
+                if (!def) 
                     def = gtk_widget_get_default_style();
                 if (def)
                 {
                     def = gtk_widget_get_default_style();
                 if (def)
                 {
-                    int red = def->bg[GTK_STATE_NORMAL].red;
-                    int green = def->bg[GTK_STATE_NORMAL].green;
-                    int blue = def->bg[GTK_STATE_NORMAL].blue;
+                    int red = def->base[GTK_STATE_NORMAL].red;
+                    int green = def->base[GTK_STATE_NORMAL].green;
+                    int blue = def->base[GTK_STATE_NORMAL].blue;
                     g_systemListBoxColour = 
                            new wxColour( red    >> SHIFT,
                                          green  >> SHIFT,
                     g_systemListBoxColour = 
                            new wxColour( red    >> SHIFT,
                                          green  >> SHIFT,
@@ -179,7 +236,6 @@ wxColour wxSystemSettings::GetSystemColour( int index )
                 else
                     g_systemListBoxColour = new wxColour(*wxWHITE);
                 gtk_widget_destroy( widget );
                 else
                     g_systemListBoxColour = new wxColour(*wxWHITE);
                 gtk_widget_destroy( widget );
-
             }
             return *g_systemListBoxColour;
         }
             }
             return *g_systemListBoxColour;
         }
@@ -190,7 +246,30 @@ wxColour wxSystemSettings::GetSystemColour( int index )
     case wxSYS_COLOUR_BTNTEXT:
     case wxSYS_COLOUR_INFOTEXT:
     {
     case wxSYS_COLOUR_BTNTEXT:
     case wxSYS_COLOUR_INFOTEXT:
     {
-      return *wxBLACK;
+            if (!g_systemBtnTextColour)
+            {
+                GtkWidget *widget = gtk_button_new();
+                GtkStyle *def = gtk_rc_get_style( widget );
+                if (!def)
+                    def = gtk_widget_get_default_style();
+                if (def)
+                {
+                    int red = def->fg[GTK_STATE_NORMAL].red;
+                    int green = def->fg[GTK_STATE_NORMAL].green;
+                    int blue = def->fg[GTK_STATE_NORMAL].blue;
+                    g_systemBtnTextColour = 
+                           new wxColour( red    >> SHIFT,
+                                         green  >> SHIFT,
+                                                 blue   >> SHIFT );
+                }
+                else
+                {
+                    g_systemBtnTextColour = 
+                     new wxColour(0, 0, 0);
+                }
+                gtk_widget_destroy( widget );
+            }
+            return *g_systemBtnTextColour;
     }
     case wxSYS_COLOUR_HIGHLIGHTTEXT:
     {
     }
     case wxSYS_COLOUR_HIGHLIGHTTEXT:
     {
@@ -229,7 +308,23 @@ wxFont wxSystemSettings::GetSystemFont( int index )
         case wxSYS_DEFAULT_GUI_FONT:
         {
             if (!g_systemFont)
         case wxSYS_DEFAULT_GUI_FONT:
         {
             if (!g_systemFont)
+            {
+#if 0
+                GdkFont *gdk_font = GtkGetDefaultGuiFont();
+                if (gdk_font)
+                {
+                    GSList *font_list = ((GdkFontPrivate*)gdk_font)->names;
+                    char *name = (char*)font_list->data;
+                    wxString font_string( name );
+                    wxFontData font_data;
+                    g_systemFont = new wxFont( font_string, font_data );
+                }
+                gtk_widget_destroy( widget );
+#endif
+
                 g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL );
                 g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL );
+                
+            }
             return *g_systemFont;
         }
     }
             return *g_systemFont;
         }
     }