diff options
Diffstat (limited to 'examples/scribble-xinput/scribble-xinput.c')
-rw-r--r-- | examples/scribble-xinput/scribble-xinput.c | 77 |
1 files changed, 33 insertions, 44 deletions
diff --git a/examples/scribble-xinput/scribble-xinput.c b/examples/scribble-xinput/scribble-xinput.c index 81d4e6423b..3519b62494 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 */ |