All pastes #42046 Raw Edit

dc

public c v1 · immutable
#42046 ·published 2006-02-18 13:56 UTC
rendered paste body
#include <gtk/gtk.h>#include <stdlib.h>static gbooleanon_window2_configure	(GtkWidget	      *window,			 GdkEventConfigure    *event,			 gpointer	       useless_data){      GtkWidget *window1;      gint  x,  y;      gint dx, dy;      gint x2, y2;      x = GPOINTER_TO_INT (g_object_get_data (G_OBJECT(window), "pos_x"));      y = GPOINTER_TO_INT (g_object_get_data (G_OBJECT(window), "pos_y"));        dx = event->x - x;      dy = event->y - y;      window1 = GTK_WIDGET(useless_data);       g_message ("dx:%d, dy:%d", dx, dy);      g_object_set_data (G_OBJECT(window), "pos_x", GINT_TO_POINTER(event->x));      g_object_set_data (G_OBJECT(window), "pos_y", GINT_TO_POINTER(event->y));      gtk_window_get_position (GTK_WINDOW(window1), &x2, &y2);      x2 += dx;      y2 += dy;      gtk_window_move (GTK_WINDOW(window1), x2, y2);      return FALSE;}static voidon_window1_button_press	    (GtkWidget	    *widget,			     GdkEventButton *event,			     gpointer	     null){    if (event->button == 1)      {	gtk_window_begin_move_drag (GTK_WINDOW(widget), event->button, event->x_root, event->y_root, event->time);      }}static voidon_window2_button_press	    (GtkWidget	    *widget,			     GdkEventButton *event,			     gpointer	     null){    if (event->button == 1)      {	gtk_window_begin_move_drag (GTK_WINDOW(widget), event->button, event->x_root, event->y_root, event->time);      }}gintmain (gint argc, gchar **argv){      GtkWidget	    *window1,		    *window2;      gtk_init (&argc, &argv);      window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);      gtk_widget_add_events (window1, GDK_BUTTON_PRESS_MASK);      gtk_widget_realize (window1);      gtk_widget_set_size_request (window1, 100, 100);          gtk_window_set_decorated (GTK_WINDOW(window1), FALSE);      gtk_widget_show_all (window1);      gtk_window_move (GTK_WINDOW(window1), 100, 100);      window2 = gtk_window_new (GTK_WINDOW_TOPLEVEL);      gtk_widget_add_events (window2, GDK_BUTTON_PRESS_MASK);      gtk_widget_realize (window2);      gtk_widget_set_size_request (window2, 100, 100);      gtk_window_set_decorated (GTK_WINDOW(window2), FALSE);      gtk_widget_show_all (window2);      gtk_window_move (GTK_WINDOW(window2), 200, 300);      g_object_set_data (G_OBJECT(window2), "pos_x", GINT_TO_POINTER(200));      g_object_set_data (G_OBJECT(window2), "pos_y", GINT_TO_POINTER(300));      g_signal_connect (G_OBJECT(window2),			"configure-event",			G_CALLBACK(on_window2_configure),			window1);      g_signal_connect (G_OBJECT(window1),			"button-press-event",			G_CALLBACK(on_window1_button_press),			NULL);      g_signal_connect (G_OBJECT(window2),			"button-press-event",			G_CALLBACK(on_window2_button_press),			NULL);      gtk_main ();      return EXIT_SUCCESS;}