+/* testdnd.c
+ * Copyright (C) 1998 Red Hat, Inc.
+ * Author: Owen Taylor
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
#include "gtk/gtk.h"
/* Target side drag signals */
static GtkTargetEntry target_table[] = {
{ "STRING", 0, TARGET_STRING },
{ "text/plain", 0, TARGET_STRING },
- { "application/x-rootwin-drop", 0, TARGET_ROOTWIN }
+ { "application/x-rootwindow-drop", 0, TARGET_ROOTWIN }
};
static guint n_targets = sizeof(target_table) / sizeof(target_table[0]);
{
g_print("leave\n");
have_drag = FALSE;
- gtk_pixmap_set (GTK_PIXMAP (widget), trashcan_closed, trashcan_closed_mask);
+ gtk_image_set_from_pixmap (GTK_IMAGE (widget),
+ trashcan_closed, trashcan_closed_mask);
}
gboolean
guint time)
{
GtkWidget *source_widget;
+ GList *tmp_list;
if (!have_drag)
{
have_drag = TRUE;
- gtk_pixmap_set (GTK_PIXMAP (widget), trashcan_open, trashcan_open_mask);
+ gtk_image_set_from_pixmap (GTK_IMAGE (widget),
+ trashcan_open, trashcan_open_mask);
}
source_widget = gtk_drag_get_source_widget (context);
g_print ("motion, source %s\n", source_widget ?
- GTK_OBJECT_TYPE_NAME (source_widget) :
+ G_OBJECT_TYPE_NAME (source_widget) :
"NULL");
+ tmp_list = context->targets;
+ while (tmp_list)
+ {
+ char *name = gdk_atom_name (GDK_POINTER_TO_ATOM (tmp_list->data));
+ g_print ("%s\n", name);
+ g_free (name);
+
+ tmp_list = tmp_list->next;
+ }
+
gdk_drag_status (context, context->suggested_action, time);
return TRUE;
}
g_print("drop\n");
have_drag = FALSE;
- gtk_pixmap_set (GTK_PIXMAP (widget), trashcan_closed, trashcan_closed_mask);
+ gtk_image_set_from_pixmap (GTK_IMAGE (widget),
+ trashcan_closed, trashcan_closed_mask);
if (context->targets)
{
gtk_drag_get_data (widget, context,
- GPOINTER_TO_INT (context->targets->data),
+ GDK_POINTER_TO_ATOM (context->targets->data),
time);
return TRUE;
}
else
gtk_selection_data_set (selection_data,
selection_data->target,
- 8, "I'm Data!", 9);
+ 8, (guchar *) "I'm Data!", 9);
}
/* The following is a rather elaborate example demonstrating/testing
- * changing of the window heirarchy during a drag - in this case,
+ * changing of the window hierarchy during a drag - in this case,
* via a "spring-loaded" popup window.
*/
static GtkWidget *popup_window = NULL;
if (popdown_timer)
{
g_print ("removed popdown\n");
- gtk_timeout_remove (popdown_timer);
+ g_source_remove (popdown_timer);
popdown_timer = 0;
}
}
if (!popdown_timer)
{
g_print ("added popdown\n");
- popdown_timer = gtk_timeout_add (500, popdown_cb, NULL);
+ popdown_timer = gdk_threads_add_timeout (500, popdown_cb, NULL);
}
}
}
-gint
+gboolean
popup_cb (gpointer data)
{
if (!popped_up)
GTK_DEST_DEFAULT_ALL,
target_table, n_targets - 1, /* no rootwin */
GDK_ACTION_COPY | GDK_ACTION_MOVE);
- gtk_signal_connect (GTK_OBJECT (button), "drag_motion",
- GTK_SIGNAL_FUNC (popup_motion), NULL);
- gtk_signal_connect (GTK_OBJECT (button), "drag_leave",
- GTK_SIGNAL_FUNC (popup_leave), NULL);
+ g_signal_connect (button, "drag_motion",
+ G_CALLBACK (popup_motion), NULL);
+ g_signal_connect (button, "drag_leave",
+ G_CALLBACK (popup_leave), NULL);
}
gtk_widget_show_all (table);
popped_up = TRUE;
}
- popdown_timer = gtk_timeout_add (500, popdown_cb, NULL);
+ popdown_timer = gdk_threads_add_timeout (500, popdown_cb, NULL);
g_print ("added popdown\n");
popup_timer = FALSE;
guint time)
{
if (!popup_timer)
- popup_timer = gtk_timeout_add (500, popup_cb, NULL);
+ popup_timer = gdk_threads_add_timeout (500, popup_cb, NULL);
return TRUE;
}
{
if (popup_timer)
{
- gtk_timeout_remove (popup_timer);
+ g_source_remove (popup_timer);
popup_timer = 0;
}
}
g_print ("Delete the data!\n");
}
+void
+test_init (void)
+{
+ if (g_file_test ("../gdk-pixbuf/libpixbufloader-pnm.la",
+ G_FILE_TEST_EXISTS))
+ {
+ g_setenv ("GDK_PIXBUF_MODULE_FILE", "../gdk-pixbuf/loaders.cache", TRUE);
+ g_setenv ("GTK_IM_MODULE_FILE", "../modules/input/immodules.cache", TRUE);
+ }
+}
+
int
main (int argc, char **argv)
{
GdkPixmap *drag_icon;
GdkPixmap *drag_mask;
+ test_init ();
+
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_signal_connect (GTK_OBJECT(window), "destroy",
- GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (gtk_main_quit), NULL);
table = gtk_table_new (2, 2, FALSE);
target_table, n_targets - 1, /* no rootwin */
GDK_ACTION_COPY | GDK_ACTION_MOVE);
- gtk_signal_connect( GTK_OBJECT(label), "drag_data_received",
- GTK_SIGNAL_FUNC( label_drag_data_received), NULL);
+ g_signal_connect (label, "drag_data_received",
+ G_CALLBACK( label_drag_data_received), NULL);
gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
0, 0);
- gtk_signal_connect (GTK_OBJECT (label), "drag_motion",
- GTK_SIGNAL_FUNC (popsite_motion), NULL);
- gtk_signal_connect (GTK_OBJECT (label), "drag_leave",
- GTK_SIGNAL_FUNC (popsite_leave), NULL);
+ g_signal_connect (label, "drag_motion",
+ G_CALLBACK (popsite_motion), NULL);
+ g_signal_connect (label, "drag_leave",
+ G_CALLBACK (popsite_leave), NULL);
- pixmap = gtk_pixmap_new (trashcan_closed, trashcan_closed_mask);
+ pixmap = gtk_image_new_from_pixmap (trashcan_closed, trashcan_closed_mask);
gtk_drag_dest_set (pixmap, 0, NULL, 0, 0);
gtk_table_attach (GTK_TABLE (table), pixmap, 1, 2, 0, 1,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
0, 0);
- gtk_signal_connect (GTK_OBJECT (pixmap), "drag_leave",
- GTK_SIGNAL_FUNC (target_drag_leave), NULL);
+ g_signal_connect (pixmap, "drag_leave",
+ G_CALLBACK (target_drag_leave), NULL);
- gtk_signal_connect (GTK_OBJECT (pixmap), "drag_motion",
- GTK_SIGNAL_FUNC (target_drag_motion), NULL);
+ g_signal_connect (pixmap, "drag_motion",
+ G_CALLBACK (target_drag_motion), NULL);
- gtk_signal_connect (GTK_OBJECT (pixmap), "drag_drop",
- GTK_SIGNAL_FUNC (target_drag_drop), NULL);
+ g_signal_connect (pixmap, "drag_drop",
+ G_CALLBACK (target_drag_drop), NULL);
- gtk_signal_connect (GTK_OBJECT (pixmap), "drag_data_received",
- GTK_SIGNAL_FUNC (target_drag_data_received), NULL);
+ g_signal_connect (pixmap, "drag_data_received",
+ G_CALLBACK (target_drag_data_received), NULL);
/* Drag site */
gtk_widget_get_colormap (window),
drag_icon, drag_mask);
- gdk_pixmap_unref (drag_icon);
- gdk_pixmap_unref (drag_mask);
+ g_object_unref (drag_icon);
+ g_object_unref (drag_mask);
gtk_table_attach (GTK_TABLE (table), button, 0, 1, 1, 2,
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
0, 0);
- gtk_signal_connect (GTK_OBJECT (button), "drag_data_get",
- GTK_SIGNAL_FUNC (source_drag_data_get), NULL);
- gtk_signal_connect (GTK_OBJECT (button), "drag_data_delete",
- GTK_SIGNAL_FUNC (source_drag_data_delete), NULL);
+ g_signal_connect (button, "drag_data_get",
+ G_CALLBACK (source_drag_data_get), NULL);
+ g_signal_connect (button, "drag_data_delete",
+ G_CALLBACK (source_drag_data_delete), NULL);
gtk_widget_show_all (window);