summaryrefslogtreecommitdiff
path: root/examples/scribble-xinput/scribble-xinput.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scribble-xinput/scribble-xinput.c')
-rw-r--r--examples/scribble-xinput/scribble-xinput.c77
1 files changed, 33 insertions, 44 deletions
diff --git a/examples/scribble-xinput/scribble-xinput.c b/examples/scribble-xinput/scribble-xinput.c
index 81d4e6423..3519b6249 100644
--- a/examples/scribble-xinput/scribble-xinput.c
+++ b/examples/scribble-xinput/scribble-xinput.c
@@ -1,4 +1,3 @@
-/* example-start scribble-xinput scribble-xinput.c */
/* GTK - The GIMP Toolkit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
@@ -29,7 +28,7 @@ static gint
configure_event (GtkWidget *widget, GdkEventConfigure *event)
{
if (pixmap)
- gdk_pixmap_unref(pixmap);
+ g_object_unref(pixmap);
pixmap = gdk_pixmap_new(widget->window,
widget->allocation.width,
@@ -49,7 +48,7 @@ configure_event (GtkWidget *widget, GdkEventConfigure *event)
static gint
expose_event (GtkWidget *widget, GdkEventExpose *event)
{
- gdk_draw_pixmap(widget->window,
+ gdk_draw_drawable(widget->window,
widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
pixmap,
event->area.x, event->area.y,
@@ -90,39 +89,27 @@ draw_brush (GtkWidget *widget, GdkInputSource source,
gdk_draw_rectangle (pixmap, gc, TRUE,
update_rect.x, update_rect.y,
update_rect.width, update_rect.height);
- gtk_widget_draw (widget, &update_rect);
+ gtk_widget_queue_draw_area (widget,
+ update_rect.x, update_rect.y,
+ update_rect.width, update_rect.height);
}
static void
-print_button_press (guint32 deviceid)
+print_button_press (GdkDevice *device)
{
- GList *tmp_list;
-
- /* gdk_input_list_devices returns an internal list, so we shouldn't
- free it afterwards */
- tmp_list = gdk_input_list_devices();
-
- while (tmp_list)
- {
- GdkDeviceInfo *info = (GdkDeviceInfo *)tmp_list->data;
-
- if (info->deviceid == deviceid)
- {
- g_print("Button press on device '%s'\n", info->name);
- return;
- }
-
- tmp_list = tmp_list->next;
- }
+ g_print("Button press on device '%s'\n", device->name);
}
static gint
button_press_event (GtkWidget *widget, GdkEventButton *event)
{
- print_button_press (event->deviceid);
+ print_button_press (event->device);
- if (event->button == 1 && pixmap != NULL)
- draw_brush (widget, event->source, event->x, event->y, event->pressure);
+ if (event->button == 1 && pixmap != NULL) {
+ gdouble pressure;
+ gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure);
+ draw_brush (widget, event->device->source, event->x, event->y, pressure);
+ }
return TRUE;
}
@@ -134,20 +121,23 @@ motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
gdouble pressure;
GdkModifierType state;
- if (event->is_hint)
- gdk_input_window_get_pointer (event->window, event->deviceid,
- &x, &y, &pressure,
- NULL, NULL, &state);
+ if (event->is_hint)
+ {
+ gdk_device_get_state (event->device, event->window, NULL, &state);
+ gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_X, &x);
+ gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_Y, &y);
+ gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure);
+ }
else
{
x = event->x;
y = event->y;
- pressure = event->pressure;
+ gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure);
state = event->state;
}
if (state & GDK_BUTTON1_MASK && pixmap != NULL)
- draw_brush (widget, event->source, x, y, pressure);
+ draw_brush (widget, event->device->source, x, y, pressure);
return TRUE;
}
@@ -167,9 +157,9 @@ create_input_dialog ()
{
inputd = gtk_input_dialog_new();
- gtk_signal_connect (GTK_OBJECT(inputd), "destroy",
+ g_signal_connect (GTK_OBJECT(inputd), "destroy",
(GtkSignalFunc)input_dialog_destroy, &inputd);
- gtk_signal_connect_object (GTK_OBJECT(GTK_INPUT_DIALOG(inputd)->close_button),
+ g_signal_connect_swapped (GTK_OBJECT(GTK_INPUT_DIALOG(inputd)->close_button),
"clicked",
(GtkSignalFunc)gtk_widget_hide,
GTK_OBJECT(inputd));
@@ -189,7 +179,7 @@ create_input_dialog ()
void
quit ()
{
- gtk_exit (0);
+ exit (0);
}
int
@@ -210,29 +200,29 @@ main (int argc, char *argv[])
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_widget_show (vbox);
- gtk_signal_connect (GTK_OBJECT (window), "destroy",
+ g_signal_connect (GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC (quit), NULL);
/* Create the drawing area */
drawing_area = gtk_drawing_area_new ();
- gtk_drawing_area_size (GTK_DRAWING_AREA (drawing_area), 200, 200);
+ gtk_widget_set_size_request (GTK_WIDGET (drawing_area), 200, 200);
gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
gtk_widget_show (drawing_area);
/* Signals used to handle backing pixmap */
- gtk_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
+ g_signal_connect (GTK_OBJECT (drawing_area), "expose_event",
(GtkSignalFunc) expose_event, NULL);
- gtk_signal_connect (GTK_OBJECT(drawing_area),"configure_event",
+ g_signal_connect (GTK_OBJECT(drawing_area),"configure_event",
(GtkSignalFunc) configure_event, NULL);
/* Event signals */
- gtk_signal_connect (GTK_OBJECT (drawing_area), "motion_notify_event",
+ g_signal_connect (GTK_OBJECT (drawing_area), "motion_notify_event",
(GtkSignalFunc) motion_notify_event, NULL);
- gtk_signal_connect (GTK_OBJECT (drawing_area), "button_press_event",
+ g_signal_connect (GTK_OBJECT (drawing_area), "button_press_event",
(GtkSignalFunc) button_press_event, NULL);
gtk_widget_set_events (drawing_area, GDK_EXPOSURE_MASK
@@ -249,14 +239,14 @@ main (int argc, char *argv[])
button = gtk_button_new_with_label ("Input Dialog");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
+ g_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (create_input_dialog), NULL);
gtk_widget_show (button);
button = gtk_button_new_with_label ("Quit");
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
- gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
+ g_signal_connect_swapped (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (window));
gtk_widget_show (button);
@@ -267,4 +257,3 @@ main (int argc, char *argv[])
return 0;
}
-/* example-end */