extern "C" {
#endif /* __cplusplus */
-#include <gdk/gdk.h>
-#include <gdk/gdkx.h>
#include <gtk/gtkcontainer.h>
-#include <gtk/gtkadjustment.h>
#include "wx/dlimpexp.h"
#define GTK_PIZZA(obj) GTK_CHECK_CAST (obj, gtk_pizza_get_type (), GtkPizza)
-#define GTK_PIZZA_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_pizza_get_type (), GtkPizzaClass)
#define GTK_IS_PIZZA(obj) GTK_CHECK_TYPE (obj, gtk_pizza_get_type ())
/* Shadow types */
GdkWindow *bin_window;
- GdkVisibilityState visibility;
- gulong configure_serial;
gint scroll_x;
gint scroll_y;
- gboolean clear_on_draw;
- gboolean use_filter;
gboolean external_expose;
};
void gtk_pizza_set_shadow_type (GtkPizza *pizza,
GtkMyShadowType type);
-WXDLLIMPEXP_CORE
-void gtk_pizza_set_clear (GtkPizza *pizza,
- gboolean clear);
-
-WXDLLIMPEXP_CORE
-void gtk_pizza_set_filter (GtkPizza *pizza,
- gboolean use);
-
WXDLLIMPEXP_CORE
void gtk_pizza_set_external (GtkPizza *pizza,
gboolean expose);
gint dx,
gint dy);
-WXDLLIMPEXP_CORE
-gint gtk_pizza_child_resized (GtkPizza *pizza,
- GtkWidget *widget);
-
WXDLLIMPEXP_CORE
void gtk_pizza_put (GtkPizza *pizza,
GtkWidget *widget,
gint width,
gint height);
-WXDLLIMPEXP_CORE
-void gtk_pizza_move (GtkPizza *pizza,
- GtkWidget *widget,
- gint x,
- gint y );
-
-WXDLLIMPEXP_CORE
-void gtk_pizza_resize (GtkPizza *pizza,
- GtkWidget *widget,
- gint width,
- gint height );
-
WXDLLIMPEXP_CORE
void gtk_pizza_set_size (GtkPizza *pizza,
GtkWidget *widget,
pizza->xoffset = 0;
pizza->yoffset = 0;
- pizza->configure_serial = 0;
pizza->scroll_x = 0;
pizza->scroll_y = 0;
- pizza->visibility = GDK_VISIBILITY_PARTIAL;
- pizza->clear_on_draw = TRUE;
- pizza->use_filter = TRUE;
pizza->external_expose = FALSE;
}
}
}
-void
-gtk_pizza_set_clear (GtkPizza *pizza,
- gboolean clear)
-{
- g_return_if_fail (pizza != NULL);
- g_return_if_fail (GTK_IS_PIZZA (pizza));
-
- pizza->clear_on_draw = clear;
-}
-
-void
-gtk_pizza_set_filter (GtkPizza *pizza,
- gboolean use)
-{
- g_return_if_fail (pizza != NULL);
- g_return_if_fail (GTK_IS_PIZZA (pizza));
-
- pizza->use_filter = use;
-}
-
void
gtk_pizza_set_external (GtkPizza *pizza,
gboolean expose)
gtk_widget_set_size_request (widget, width, height);
}
-void
-gtk_pizza_move (GtkPizza *pizza,
- GtkWidget *widget,
- gint x,
- gint y)
-{
- GtkPizzaChild *child;
- GList *children;
-
- g_return_if_fail (pizza != NULL);
- g_return_if_fail (GTK_IS_PIZZA (pizza));
- g_return_if_fail (widget != NULL);
-
- children = pizza->children;
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (child->widget == widget)
- {
- if ((child->x == x) && (child->y == y))
- break;
-
- child->x = x;
- child->y = y;
-
- if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (pizza))
- gtk_widget_queue_resize (widget);
- break;
- }
- }
-}
-
-void
-gtk_pizza_resize (GtkPizza *pizza,
- GtkWidget *widget,
- gint width,
- gint height)
-{
- GtkPizzaChild *child;
- GList *children;
-
- g_return_if_fail (pizza != NULL);
- g_return_if_fail (GTK_IS_PIZZA (pizza));
- g_return_if_fail (widget != NULL);
-
- children = pizza->children;
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (child->widget == widget)
- {
- if ((child->width == width) && (child->height == height))
- break;
-
- child->width = width;
- child->height = height;
-
- gtk_widget_set_size_request (widget, width, height);
-
- if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (pizza))
- gtk_widget_queue_resize (widget);
- break;
- }
- }
-}
-
void
gtk_pizza_set_size (GtkPizza *pizza,
GtkWidget *widget,
}
}
-gint
-gtk_pizza_child_resized (GtkPizza *pizza,
- GtkWidget *widget)
-{
- GtkPizzaChild *child;
- GList *children;
-
- g_return_val_if_fail (pizza != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_PIZZA (pizza), FALSE);
- g_return_val_if_fail (widget != NULL, FALSE);
-
- children = pizza->children;
- while (children)
- {
- child = children->data;
- children = children->next;
-
- if (child->widget == widget)
- {
- return ((child->width == widget->allocation.width) &&
- (child->height == widget->allocation.height));
- }
- }
-
- return FALSE;
-}
-
static void
gtk_pizza_map (GtkWidget *widget)
{
}
}
-
-/* This is the main routine to do the scrolling. Scrolling is
- * done by "Guffaw" scrolling, as in the Mozilla XFE, with
- * a few modifications.
- *
- * The main improvement is that we keep track of whether we
- * are obscured or not. If not, we ignore the generated expose
- * events and instead do the exposes ourself, without having
- * to wait for a roundtrip to the server. This also provides
- * a limited form of expose-event compression, since we do
- * the affected area as one big chunk.
- */
-
void
gtk_pizza_scroll (GtkPizza *pizza, gint dx, gint dy)
{