- 论坛徽章:
- 0
|
g_signal_connect(GTK_OBJECT(button), "button-press-event", G_CALLBACK (test_button_press), NULL);
g_signal_connect(GTK_OBJECT(button), "button_release_event", G_CALLBACK(test_on_release_event), (gpointer)(_WINDOW));
g_signal_connect(GTK_OBJECT(button), "motion-notify-event", G_CALLBACK(test_motion_notify), NULL);
gboolean test_on_release_event(GtkWidget *widget, GdkEventButton *event, gpointer type)
{
g_print("release button\n");
return TRUE;
}
gboolean test_button_press(GtkWidget *widget, GdkEvent *event, gpointer data)
{
g_object_set_data(G_OBJECT(widget), "pressed", (gpointer)(1));
return TRUE;
}
gboolean test_motion_notify(GtkWidget *widget, GdkEvent *event, gpointer data)
{
GtkAllocation allocation;
gint pressed;
pressed = (gint)g_object_get_data (G_OBJECT(widget), "pressed");
#if GTK_MINOR_VERSION >= 18
gtk_widget_get_allocation (widget, &allocation);
#else
allocation = widget->allocation;
#endif
button_hposition = allocation.x;
button_vposition = allocation.y;
if(pressed)
{
gtk_fixed_move(GTK_FIXED(fixed), widget, button_hposition, button_vposition);
}
return TRUE;
} |
|