]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/win_gtk.c
The Image sample now does anti-aliasing, oh well.
[wxWidgets.git] / src / gtk1 / win_gtk.c
index c4e8c421010071f1ed1a0d0411774504e360f238..0f2d927beaa22400e9fa5391403cb7629da1497c 100644 (file)
@@ -1,8 +1,8 @@
 /* ///////////////////////////////////////////////////////////////////////////
 /* ///////////////////////////////////////////////////////////////////////////
-// Name:        wx_gtk.h
+// Name:        win_gtk.c
 // Purpose:     native GTK+ widget for wxWindows
 // Author:      Robert Roebling
 // Purpose:     native GTK+ widget for wxWindows
 // Author:      Robert Roebling
-// Id:          $id$
+// Id:          $Id$
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////// */
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////// */
 #include "wx/gtk/win_gtk.h"
 #include <gtk/gtkfeatures.h>
 
 #include "wx/gtk/win_gtk.h"
 #include <gtk/gtkfeatures.h>
 
+/*-------------------------------------------------------------------------
+// conditional compilation
+//------------------------------------------------------------------------- */
+
+#if (GTK_MINOR_VERSION == 1)
+#if (GTK_MICRO_VERSION >= 5)
+#define NEW_GTK_CONSTRUCT_CODE
+#endif
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
@@ -17,7 +27,9 @@ extern "C" {
 static void gtk_myfixed_class_init    (GtkMyFixedClass    *klass);
 static void gtk_myfixed_init          (GtkMyFixed         *myfixed);
 static void gtk_myfixed_map           (GtkWidget        *widget);
 static void gtk_myfixed_class_init    (GtkMyFixedClass    *klass);
 static void gtk_myfixed_init          (GtkMyFixed         *myfixed);
 static void gtk_myfixed_map           (GtkWidget        *widget);
+#ifndef NEW_GTK_CONSTRUCT_CODE
 static void gtk_myfixed_unmap         (GtkWidget        *widget);
 static void gtk_myfixed_unmap         (GtkWidget        *widget);
+#endif
 static void gtk_myfixed_realize       (GtkWidget        *widget);
 static void gtk_myfixed_size_request  (GtkWidget        *widget,
                                     GtkRequisition   *requisition);
 static void gtk_myfixed_realize       (GtkWidget        *widget);
 static void gtk_myfixed_size_request  (GtkWidget        *widget,
                                     GtkRequisition   *requisition);
@@ -39,6 +51,9 @@ static void gtk_myfixed_foreach       (GtkContainer     *container,
 #endif
                                     GtkCallback      callback,
                                     gpointer         callback_data);
 #endif
                                     GtkCallback      callback,
                                     gpointer         callback_data);
+#ifdef NEW_GTK_CONSTRUCT_CODE
+static GtkType gtk_myfixed_child_type (GtkContainer     *container);
+#endif
 
 
 static GtkContainerClass *parent_class = NULL;
 
 
 static GtkContainerClass *parent_class = NULL;
@@ -58,8 +73,14 @@ gtk_myfixed_get_type ()
        sizeof (GtkMyFixedClass),
        (GtkClassInitFunc) gtk_myfixed_class_init,
        (GtkObjectInitFunc) gtk_myfixed_init,
        sizeof (GtkMyFixedClass),
        (GtkClassInitFunc) gtk_myfixed_class_init,
        (GtkObjectInitFunc) gtk_myfixed_init,
-       (GtkArgSetFunc) NULL,
+#ifndef NEW_GTK_CONSTRUCT_CODE 
+        (GtkArgSetFunc) NULL,
         (GtkArgGetFunc) NULL,
         (GtkArgGetFunc) NULL,
+#else
+       /* reserved_1 */ NULL,
+        /* reserved_2 */ NULL,
+        (GtkClassInitFunc) NULL,
+#endif
       };
 
       myfixed_type = gtk_type_unique (gtk_container_get_type (), &myfixed_info);
       };
 
       myfixed_type = gtk_type_unique (gtk_container_get_type (), &myfixed_info);
@@ -78,11 +99,17 @@ gtk_myfixed_class_init (GtkMyFixedClass *klass)
   object_class = (GtkObjectClass*) klass;
   widget_class = (GtkWidgetClass*) klass;
   container_class = (GtkContainerClass*) klass;
   object_class = (GtkObjectClass*) klass;
   widget_class = (GtkWidgetClass*) klass;
   container_class = (GtkContainerClass*) klass;
-
+  
+#ifndef NEW_GTK_CONSTRUCT_CODE
   parent_class = gtk_type_class (gtk_container_get_type ());
   parent_class = gtk_type_class (gtk_container_get_type ());
+#else
+  parent_class = gtk_type_class (GTK_TYPE_CONTAINER);
+#endif
 
   widget_class->map = gtk_myfixed_map;
 
   widget_class->map = gtk_myfixed_map;
+#ifndef NEW_GTK_CONSTRUCT_CODE
   widget_class->unmap = gtk_myfixed_unmap;
   widget_class->unmap = gtk_myfixed_unmap;
+#endif
   widget_class->realize = gtk_myfixed_realize;
   widget_class->size_request = gtk_myfixed_size_request;
   widget_class->size_allocate = gtk_myfixed_size_allocate;
   widget_class->realize = gtk_myfixed_realize;
   widget_class->size_request = gtk_myfixed_size_request;
   widget_class->size_allocate = gtk_myfixed_size_allocate;
@@ -96,14 +123,29 @@ gtk_myfixed_class_init (GtkMyFixedClass *klass)
 #else
   container_class->foreach = gtk_myfixed_foreach;
 #endif
 #else
   container_class->foreach = gtk_myfixed_foreach;
 #endif
+
+#ifdef NEW_GTK_CONSTRUCT_CODE
+  container_class->child_type = gtk_myfixed_child_type;
+#endif
+}
+
+#ifdef NEW_GTK_CONSTRUCT_CODE
+static GtkType
+gtk_myfixed_child_type (GtkContainer     *container)
+{
+  return GTK_TYPE_WIDGET;
 }
 }
+#endif
 
 static void
 gtk_myfixed_init (GtkMyFixed *myfixed)
 {
   GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW);
 
 static void
 gtk_myfixed_init (GtkMyFixed *myfixed)
 {
   GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW);
-  GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC);
   
   
+#ifndef NEW_GTK_CONSTRUCT_CODE
+  GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC);
+#endif
+
   myfixed->children = NULL;
 }
 
   myfixed->children = NULL;
 }
 
@@ -169,6 +211,8 @@ gtk_myfixed_move (GtkMyFixed       *myfixed,
 
       if (child->widget == widget)
         {
 
       if (child->widget == widget)
         {
+         if ((child->x == x) && (child->y == y)) return;
+         
           child->x = x;
           child->y = y;
 
           child->x = x;
           child->y = y;
 
@@ -207,6 +251,7 @@ gtk_myfixed_map (GtkWidget *widget)
     }
 }
 
     }
 }
 
+#ifndef NEW_GTK_CONSTRUCT_CODE
 static void
 gtk_myfixed_unmap (GtkWidget *widget)
 {
 static void
 gtk_myfixed_unmap (GtkWidget *widget)
 {
@@ -215,6 +260,7 @@ gtk_myfixed_unmap (GtkWidget *widget)
 
   GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
 }
 
   GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
 }
+#endif
 
 static void
 gtk_myfixed_realize (GtkWidget *widget)
 
 static void
 gtk_myfixed_realize (GtkWidget *widget)
@@ -242,6 +288,7 @@ gtk_myfixed_realize (GtkWidget *widget)
   attributes.event_mask |= 
   GDK_EXPOSURE_MASK    |
   GDK_POINTER_MOTION_MASK      |
   attributes.event_mask |= 
   GDK_EXPOSURE_MASK    |
   GDK_POINTER_MOTION_MASK      |
+  GDK_POINTER_MOTION_HINT_MASK  |
   GDK_BUTTON_MOTION_MASK       |
   GDK_BUTTON1_MOTION_MASK      |
   GDK_BUTTON2_MOTION_MASK      |
   GDK_BUTTON_MOTION_MASK       |
   GDK_BUTTON1_MOTION_MASK      |
   GDK_BUTTON2_MOTION_MASK      |