[gtk+] Drop the shape window example in testgtk
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Drop the shape window example in testgtk
- Date: Fri, 11 Aug 2017 19:46:56 +0000 (UTC)
commit 535e604b91205fc7dc13b82727492ff182da0860
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Aug 8 21:05:19 2017 -0400
Drop the shape window example in testgtk
Not sure this can be rescued without root window coordinates.
It is also somewhat inherently X11-specific.
tests/testgtk.c | 225 -------------------------------------------------------
1 files changed, 0 insertions(+), 225 deletions(-)
---
diff --git a/tests/testgtk.c b/tests/testgtk.c
index 2843d84..37513bd 100644
--- a/tests/testgtk.c
+++ b/tests/testgtk.c
@@ -5702,230 +5702,6 @@ create_paned_keyboard_navigation (GtkWidget *widget)
gtk_widget_show (GTK_WIDGET (window4));
}
-
-/*
- * Shaped Windows
- */
-
-typedef struct _cursoroffset {gint x,y;} CursorOffset;
-
-static void
-shape_pressed (GtkWidget *widget, GdkEventButton *event)
-{
- CursorOffset *p;
-
- /* ignore double and triple click */
- if (event->type != GDK_BUTTON_PRESS)
- return;
-
- p = g_object_get_data (G_OBJECT (widget), "cursor_offset");
- p->x = (int) event->x;
- p->y = (int) event->y;
-
- gtk_grab_add (widget);
- gdk_seat_grab (gdk_event_get_seat ((GdkEvent *) event),
- gtk_widget_get_window (widget),
- GDK_SEAT_CAPABILITY_ALL_POINTING,
- TRUE, NULL, (GdkEvent *) event, NULL, NULL);
-}
-
-static void
-shape_released (GtkWidget *widget,
- GdkEventButton *event)
-{
- gtk_grab_remove (widget);
- gdk_seat_ungrab (gdk_event_get_seat ((GdkEvent *) event));
-}
-
-static void
-shape_motion (GtkWidget *widget,
- GdkEventMotion *event)
-{
- gint xp, yp;
- CursorOffset * p;
-
- p = g_object_get_data (G_OBJECT (widget), "cursor_offset");
-
- /*
- * Can't use event->x / event->y here
- * because I need absolute coordinates.
- */
- gdk_window_get_device_position (gdk_screen_get_root_window (gtk_widget_get_screen (widget)),
- gdk_event_get_device ((GdkEvent *) event),
- &xp, &yp, NULL);
- gtk_window_move (GTK_WINDOW (widget), xp - p->x, yp - p->y);
-}
-
-GtkWidget *
-shape_create_icon (GdkScreen *screen,
- char *xpm_file,
- gint x,
- gint y,
- gint px,
- gint py,
- gint window_type)
-{
- GtkWidget *window;
- GtkWidget *image;
- GtkWidget *fixed;
- CursorOffset* icon_pos;
- cairo_surface_t *mask;
- cairo_region_t *mask_region;
- GdkPixbuf *pixbuf;
- cairo_t *cr;
-
- /*
- * GDK_WINDOW_TOPLEVEL works also, giving you a title border
- */
- window = gtk_window_new (window_type);
- gtk_window_set_screen (GTK_WINDOW (window), screen);
-
- fixed = gtk_fixed_new ();
- gtk_widget_set_size_request (fixed, 100, 100);
- gtk_container_add (GTK_CONTAINER (window), fixed);
- gtk_widget_show (fixed);
-
- gtk_widget_realize (window);
-
- pixbuf = gdk_pixbuf_new_from_file (xpm_file, NULL);
- g_assert (pixbuf); /* FIXME: error handling */
-
- mask = cairo_image_surface_create (CAIRO_FORMAT_A1,
- gdk_pixbuf_get_width (pixbuf),
- gdk_pixbuf_get_height (pixbuf));
- cr = cairo_create (mask);
- gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
- cairo_paint (cr);
- cairo_destroy (cr);
-
- mask_region = gdk_cairo_region_create_from_surface (mask);
-
- cairo_region_translate (mask_region, px, py);
-
- image = gtk_image_new_from_pixbuf (pixbuf);
- gtk_fixed_put (GTK_FIXED (fixed), image, px,py);
- gtk_widget_show (image);
-
- gtk_widget_shape_combine_region (window, mask_region);
-
- cairo_region_destroy (mask_region);
- cairo_surface_destroy (mask);
- g_object_unref (pixbuf);
-
- g_signal_connect (window, "button_press_event",
- G_CALLBACK (shape_pressed), NULL);
- g_signal_connect (window, "button_release_event",
- G_CALLBACK (shape_released), NULL);
- g_signal_connect (window, "motion_notify_event",
- G_CALLBACK (shape_motion), NULL);
-
- icon_pos = g_new (CursorOffset, 1);
- g_object_set_data (G_OBJECT (window), "cursor_offset", icon_pos);
-
- gtk_window_move (GTK_WINDOW (window), x, y);
- gtk_widget_show (window);
-
- return window;
-}
-
-void
-create_shapes (GtkWidget *widget)
-{
- /* Variables used by the Drag/Drop and Shape Window demos */
- static GtkWidget *modeller = NULL;
- static GtkWidget *sheets = NULL;
- static GtkWidget *rings = NULL;
- static GtkWidget *with_region = NULL;
- GdkScreen *screen = gtk_widget_get_screen (widget);
-
- if (!(file_exists ("Modeller.xpm") &&
- file_exists ("FilesQueue.xpm") &&
- file_exists ("3DRings.xpm")))
- return;
-
-
- if (!modeller)
- {
- modeller = shape_create_icon (screen, "Modeller.xpm",
- 440, 140, 0,0, GTK_WINDOW_POPUP);
-
- g_signal_connect (modeller, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &modeller);
- }
- else
- gtk_widget_destroy (modeller);
-
- if (!sheets)
- {
- sheets = shape_create_icon (screen, "FilesQueue.xpm",
- 580, 170, 0,0, GTK_WINDOW_POPUP);
-
- g_signal_connect (sheets, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &sheets);
-
- }
- else
- gtk_widget_destroy (sheets);
-
- if (!rings)
- {
- rings = shape_create_icon (screen, "3DRings.xpm",
- 460, 270, 25,25, GTK_WINDOW_TOPLEVEL);
-
- g_signal_connect (rings, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &rings);
- }
- else
- gtk_widget_destroy (rings);
-
- if (!with_region)
- {
- cairo_region_t *region;
- gint x, y;
-
- with_region = shape_create_icon (screen, "3DRings.xpm",
- 460, 270, 25,25, GTK_WINDOW_TOPLEVEL);
-
- gtk_window_set_decorated (GTK_WINDOW (with_region), FALSE);
-
- g_signal_connect (with_region, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &with_region);
-
- /* reset shape from mask to a region */
- x = 0;
- y = 0;
- region = cairo_region_create ();
-
- while (x < 460)
- {
- while (y < 270)
- {
- GdkRectangle rect;
- rect.x = x;
- rect.y = y;
- rect.width = 10;
- rect.height = 10;
-
- cairo_region_union_rectangle (region, &rect);
-
- y += 20;
- }
- y = 0;
- x += 20;
- }
-
- gdk_window_shape_combine_region (gtk_widget_get_window (with_region),
- region,
- 0, 0);
- }
- else
- gtk_widget_destroy (with_region);
-}
-
/*
* WM Hints demo
*/
@@ -8300,7 +8076,6 @@ struct {
{ "rotated text", create_rotated_text },
{ "saved position", create_saved_position },
{ "scrolled windows", create_scrolled_windows },
- { "shapes", create_shapes },
{ "size groups", create_size_groups },
{ "snapshot", create_snapshot },
{ "spinbutton", create_spins },
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]