|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
#include <stdlib.h>
|
|
Packit Service |
fb6fa5 |
#include <gtk/gtk.h>
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
static void selection_received( GtkWidget *widget,
|
|
Packit Service |
fb6fa5 |
GtkSelectionData *selection_data,
|
|
Packit Service |
fb6fa5 |
gpointer data );
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Signal handler invoked when user clicks on the "Get Targets" button */
|
|
Packit Service |
fb6fa5 |
static void get_targets( GtkWidget *widget,
|
|
Packit Service |
fb6fa5 |
gpointer data )
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
static GdkAtom targets_atom = GDK_NONE;
|
|
Packit Service |
fb6fa5 |
GtkWidget *window = (GtkWidget *)data;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Get the atom corresponding to the string "TARGETS" */
|
|
Packit Service |
fb6fa5 |
if (targets_atom == GDK_NONE)
|
|
Packit Service |
fb6fa5 |
targets_atom = gdk_atom_intern ("TARGETS", FALSE);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* And request the "TARGETS" target for the primary selection */
|
|
Packit Service |
fb6fa5 |
gtk_selection_convert (window, GDK_SELECTION_PRIMARY, targets_atom,
|
|
Packit Service |
fb6fa5 |
GDK_CURRENT_TIME);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Signal handler called when the selections owner returns the data */
|
|
Packit Service |
fb6fa5 |
static void selection_received( GtkWidget *widget,
|
|
Packit Service |
fb6fa5 |
GtkSelectionData *selection_data,
|
|
Packit Service |
fb6fa5 |
gpointer data )
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
GdkAtom *atoms;
|
|
Packit Service |
fb6fa5 |
GList *item_list;
|
|
Packit Service |
fb6fa5 |
int i;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* **** IMPORTANT **** Check to see if retrieval succeeded */
|
|
Packit Service |
fb6fa5 |
if (selection_data->length < 0)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
g_print ("Selection retrieval failed\n");
|
|
Packit Service |
fb6fa5 |
return;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
/* Make sure we got the data in the expected form */
|
|
Packit Service |
fb6fa5 |
if (selection_data->type != GDK_SELECTION_TYPE_ATOM)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
g_print ("Selection \"TARGETS\" was not returned as atoms!\n");
|
|
Packit Service |
fb6fa5 |
return;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Print out the atoms we received */
|
|
Packit Service |
fb6fa5 |
atoms = (GdkAtom *)selection_data->data;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
item_list = NULL;
|
|
Packit Service |
fb6fa5 |
for (i = 0; i < selection_data->length / sizeof(GdkAtom); i++)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
char *name;
|
|
Packit Service |
fb6fa5 |
name = gdk_atom_name (atoms[i]);
|
|
Packit Service |
fb6fa5 |
if (name != NULL)
|
|
Packit Service |
fb6fa5 |
g_print ("%s\n",name);
|
|
Packit Service |
fb6fa5 |
else
|
|
Packit Service |
fb6fa5 |
g_print ("(bad atom)\n");
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
return;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
int main( int argc,
|
|
Packit Service |
fb6fa5 |
char *argv[] )
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
GtkWidget *window;
|
|
Packit Service |
fb6fa5 |
GtkWidget *button;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_init (&argc, &argv);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Create the toplevel window */
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
Packit Service |
fb6fa5 |
gtk_window_set_title (GTK_WINDOW (window), "Event Box");
|
|
Packit Service |
fb6fa5 |
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
g_signal_connect (window, "destroy",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (exit), NULL);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* Create a button the user can click to get targets */
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
button = gtk_button_new_with_label ("Get Targets");
|
|
Packit Service |
fb6fa5 |
gtk_container_add (GTK_CONTAINER (window), button);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
g_signal_connect (button, "clicked",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (get_targets), (gpointer) window);
|
|
Packit Service |
fb6fa5 |
g_signal_connect (window, "selection-received",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (selection_received), NULL);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (button);
|
|
Packit Service |
fb6fa5 |
gtk_widget_show (window);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_main ();
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
return 0;
|
|
Packit Service |
fb6fa5 |
}
|