// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////// */
-#ifdef __VMS
-#define gtk_widget_get_child_requisition gtk_widget_get_child_requisitio
-#define gtk_marshal_NONE__POINTER_POINTER gtk_marshal_NONE__POINTER_POINT
+#ifdef VMS
+#define XCheckIfEvent XCHECKIFEVENT
#endif
+#include "wx/setup.h"
#include "wx/gtk/win_gtk.h"
#include "gtk/gtksignal.h"
#include "gtk/gtkprivate.h"
gint dy);
+/* unused */
+#if 0
static void gtk_pizza_expose_area (GtkPizza *pizza,
gint x,
gint y,
gint width,
gint height);
-/* unused */
-#if 0
static void gtk_pizza_adjustment_changed (GtkAdjustment *adjustment,
GtkPizza *pizza);
#endif
widget_class->set_scroll_adjustments_signal =
gtk_signal_new ("set_scroll_adjustments",
GTK_RUN_LAST,
+
+#ifdef __WXGTK20__
+ GTK_CLASS_TYPE(object_class),
+#else
object_class->type,
+#endif
GTK_SIGNAL_OFFSET (GtkPizzaClass, set_scroll_adjustments),
gtk_marshal_NONE__POINTER_POINTER,
GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
pizza->height = 20;
pizza->bin_window = NULL;
-
+
pizza->xoffset = 0;
pizza->yoffset = 0;
pizza->clear_on_draw = clear;
}
-void
+void
gtk_pizza_set_filter (GtkPizza *pizza,
gboolean use)
{
g_return_if_fail (GTK_IS_PIZZA (pizza));
pizza->use_filter = use;
-}
-
-void
+}
+
+void
gtk_pizza_set_external (GtkPizza *pizza,
gboolean expose)
{
if (GTK_WIDGET_REALIZED (pizza))
gtk_widget_set_parent_window (widget, pizza->bin_window);
+#ifndef __WXGTK20__ /* FIXME? */
if (!IS_ONSCREEN (x, y))
GTK_PRIVATE_SET_FLAG (widget, GTK_IS_OFFSCREEN);
+#endif
/*
if (GTK_WIDGET_REALIZED (pizza))
}
}
-gint
+gint
gtk_pizza_child_resized (GtkPizza *pizza,
GtkWidget *widget)
{
(child->height == widget->allocation.height));
}
}
-
+
return FALSE;
}
-
+
static void
gtk_pizza_map (GtkWidget *widget)
{
if ( GTK_WIDGET_VISIBLE (child->widget) &&
!GTK_WIDGET_MAPPED (child->widget) &&
+#ifdef __WXGTK20__
+ TRUE)
+#else
!GTK_WIDGET_IS_OFFSCREEN (child->widget))
+#endif
{
gtk_widget_map (child->widget);
}
attributes.wclass = GDK_INPUT_OUTPUT;
attributes.visual = gtk_widget_get_visual (widget);
attributes.colormap = gtk_widget_get_colormap (widget);
- attributes.event_mask =
- GDK_VISIBILITY_NOTIFY_MASK;
+ attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK;
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
widget->window = gdk_window_new(gtk_widget_get_parent_window (widget),
attributes.y = 0;
attributes.event_mask = gtk_widget_get_events (widget);
- 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_BUTTON3_MOTION_MASK |
- GDK_BUTTON_PRESS_MASK |
- GDK_BUTTON_RELEASE_MASK |
- GDK_KEY_PRESS_MASK |
- GDK_KEY_RELEASE_MASK |
- GDK_ENTER_NOTIFY_MASK |
- GDK_LEAVE_NOTIFY_MASK |
- GDK_FOCUS_CHANGE_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_BUTTON3_MOTION_MASK |
+ GDK_BUTTON_PRESS_MASK |
+ GDK_BUTTON_RELEASE_MASK |
+ GDK_KEY_PRESS_MASK |
+ GDK_KEY_RELEASE_MASK |
+ GDK_ENTER_NOTIFY_MASK |
+ GDK_LEAVE_NOTIFY_MASK |
+ GDK_FOCUS_CHANGE_MASK;
pizza->bin_window = gdk_window_new(widget->window,
&attributes, attributes_mask);
widget->style = gtk_style_attach (widget->style, widget->window);
gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
gtk_style_set_background (widget->style, pizza->bin_window, GTK_STATE_NORMAL );
+
+/*
+ gdk_window_set_back_pixmap( widget->window, NULL, FALSE );
+ gdk_window_set_back_pixmap( pizza->bin_window, NULL, FALSE );
+*/
/* add filters for intercepting visibility and expose events */
gdk_window_add_filter (widget->window, gtk_pizza_main_filter, pizza);
gtk_widget_event (child->widget, (GdkEvent*) &child_event);
}
}
-
+
return TRUE;
}
/* security checks */
g_return_if_fail (GTK_IS_WIDGET (widget));
+#ifndef __WXGTK20__
GTK_PRIVATE_UNSET_FLAG (widget, GTK_IS_OFFSCREEN);
+#endif
break;
}
gtk_widget_map (child->widget);
}
+#ifndef __WXGTK20__
if (GTK_WIDGET_IS_OFFSCREEN (child->widget))
GTK_PRIVATE_UNSET_FLAG (child->widget, GTK_IS_OFFSCREEN);
+#endif
}
else
{
+#ifndef __WXGTK20__
if (!GTK_WIDGET_IS_OFFSCREEN (child->widget))
GTK_PRIVATE_SET_FLAG (child->widget, GTK_IS_OFFSCREEN);
+#endif
if (GTK_WIDGET_MAPPED (child->widget))
gtk_widget_unmap (child->widget);
/* Callbacks */
+/* unused */
+#if 0
/* Send a synthetic expose event to the widget
*/
static void
gdk_window_unref (event.window);
}
}
+#endif /* unused */
/* This function is used to find events to process while scrolling
*/
GtkPizza *pizza;
xevent = (XEvent *)gdk_xevent;
-
+
pizza = GTK_PIZZA (data);
-
+
if (!pizza->use_filter)
return GDK_FILTER_CONTINUE;
switch (xevent->type)
{
- case Expose:
- if (xevent->xexpose.serial == pizza->configure_serial)
- {
- xevent->xexpose.x += pizza->scroll_x;
- xevent->xexpose.y += pizza->scroll_y;
- }
- break;
+ case Expose:
+ if (xevent->xexpose.serial == pizza->configure_serial)
+ {
+ xevent->xexpose.x += pizza->scroll_x;
+ xevent->xexpose.y += pizza->scroll_y;
+ }
+ break;
- case ConfigureNotify:
- {
- pizza->configure_serial = xevent->xconfigure.serial;
- pizza->scroll_x = xevent->xconfigure.x;
- pizza->scroll_y = xevent->xconfigure.y;
- }
- break;
+ case ConfigureNotify:
+ {
+ pizza->configure_serial = xevent->xconfigure.serial;
+ pizza->scroll_x = xevent->xconfigure.x;
+ pizza->scroll_y = xevent->xconfigure.y;
+ }
+ break;
}
return GDK_FILTER_CONTINUE;
xevent = (XEvent *)gdk_xevent;
pizza = GTK_PIZZA (data);
-
+
if (!pizza->use_filter)
return GDK_FILTER_CONTINUE;
pizza->visibility = GDK_VISIBILITY_UNOBSCURED;
break;
}
-
+
return GDK_FILTER_REMOVE;
}