Convert over to using an GtkInvisible - selections don't work properly

Sun Feb 24 23:23:28 2002  Owen Taylor  <otaylor@redhat.com>

	* tests/testselection.c (main): Convert over to using
	an GtkInvisible - selections don't work properly
	with now NO_WINDOW GtkToggleButton. (Example really
	should be using GtkClipboard.)

	* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
	Fix  problems if sizeof(GdkAtom) != sizeof(Atom). (Unlikely)

	* gdk/x11/gdkproperty-x11.c (gdk_property_get): Set
	actual_length when converting atoms as well.
	(Gregory Merchan, #72074)
This commit is contained in:
Owen Taylor 2002-02-25 05:12:14 +00:00 committed by Owen Taylor
parent f9debe2f69
commit 3ce820584f
10 changed files with 117 additions and 10 deletions

View File

@ -1,3 +1,17 @@
Sun Feb 24 23:23:28 2002 Owen Taylor <otaylor@redhat.com>
* tests/testselection.c (main): Convert over to using
an GtkInvisible - selections don't work properly
with now NO_WINDOW GtkToggleButton. (Example really
should be using GtkClipboard.)
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
Fix problems if sizeof(GdkAtom) != sizeof(Atom). (Unlikely)
* gdk/x11/gdkproperty-x11.c (gdk_property_get): Set
actual_length when converting atoms as well.
(Gregory Merchan, #72074)
2002-02-24 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c (gtk_text_view_value_changed): add dx/dy to

View File

@ -1,3 +1,17 @@
Sun Feb 24 23:23:28 2002 Owen Taylor <otaylor@redhat.com>
* tests/testselection.c (main): Convert over to using
an GtkInvisible - selections don't work properly
with now NO_WINDOW GtkToggleButton. (Example really
should be using GtkClipboard.)
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
Fix problems if sizeof(GdkAtom) != sizeof(Atom). (Unlikely)
* gdk/x11/gdkproperty-x11.c (gdk_property_get): Set
actual_length when converting atoms as well.
(Gregory Merchan, #72074)
2002-02-24 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c (gtk_text_view_value_changed): add dx/dy to

View File

@ -1,3 +1,17 @@
Sun Feb 24 23:23:28 2002 Owen Taylor <otaylor@redhat.com>
* tests/testselection.c (main): Convert over to using
an GtkInvisible - selections don't work properly
with now NO_WINDOW GtkToggleButton. (Example really
should be using GtkClipboard.)
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
Fix problems if sizeof(GdkAtom) != sizeof(Atom). (Unlikely)
* gdk/x11/gdkproperty-x11.c (gdk_property_get): Set
actual_length when converting atoms as well.
(Gregory Merchan, #72074)
2002-02-24 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c (gtk_text_view_value_changed): add dx/dy to

View File

@ -1,3 +1,17 @@
Sun Feb 24 23:23:28 2002 Owen Taylor <otaylor@redhat.com>
* tests/testselection.c (main): Convert over to using
an GtkInvisible - selections don't work properly
with now NO_WINDOW GtkToggleButton. (Example really
should be using GtkClipboard.)
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
Fix problems if sizeof(GdkAtom) != sizeof(Atom). (Unlikely)
* gdk/x11/gdkproperty-x11.c (gdk_property_get): Set
actual_length when converting atoms as well.
(Gregory Merchan, #72074)
2002-02-24 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c (gtk_text_view_value_changed): add dx/dy to

View File

@ -1,3 +1,17 @@
Sun Feb 24 23:23:28 2002 Owen Taylor <otaylor@redhat.com>
* tests/testselection.c (main): Convert over to using
an GtkInvisible - selections don't work properly
with now NO_WINDOW GtkToggleButton. (Example really
should be using GtkClipboard.)
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
Fix problems if sizeof(GdkAtom) != sizeof(Atom). (Unlikely)
* gdk/x11/gdkproperty-x11.c (gdk_property_get): Set
actual_length when converting atoms as well.
(Gregory Merchan, #72074)
2002-02-24 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c (gtk_text_view_value_changed): add dx/dy to

View File

@ -1,3 +1,17 @@
Sun Feb 24 23:23:28 2002 Owen Taylor <otaylor@redhat.com>
* tests/testselection.c (main): Convert over to using
an GtkInvisible - selections don't work properly
with now NO_WINDOW GtkToggleButton. (Example really
should be using GtkClipboard.)
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
Fix problems if sizeof(GdkAtom) != sizeof(Atom). (Unlikely)
* gdk/x11/gdkproperty-x11.c (gdk_property_get): Set
actual_length when converting atoms as well.
(Gregory Merchan, #72074)
2002-02-24 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c (gtk_text_view_value_changed): add dx/dy to

View File

@ -1,3 +1,17 @@
Sun Feb 24 23:23:28 2002 Owen Taylor <otaylor@redhat.com>
* tests/testselection.c (main): Convert over to using
an GtkInvisible - selections don't work properly
with now NO_WINDOW GtkToggleButton. (Example really
should be using GtkClipboard.)
* gdk/x11/gdkselection-x11.c (gdk_selection_property_get):
Fix problems if sizeof(GdkAtom) != sizeof(Atom). (Unlikely)
* gdk/x11/gdkproperty-x11.c (gdk_property_get): Set
actual_length when converting atoms as well.
(Gregory Merchan, #72074)
2002-02-24 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c (gtk_text_view_value_changed): add dx/dy to

View File

@ -397,6 +397,9 @@ gdk_property_get (GdkWindow *window,
for (i = 0; i < ret_nitems; i++)
ret_atoms[i] = gdk_x11_xatom_to_atom (xatoms[i]);
if (actual_length)
*actual_length = ret_nitems * sizeof (GdkAtom);
}
else
{

View File

@ -244,21 +244,24 @@ gdk_selection_property_get (GdkWindow *requestor,
if (prop_type != None)
{
*data = g_new (guchar, length);
if (prop_type == XA_ATOM || prop_type == gdk_x11_get_xatom_by_name ("ATOM_PAIR"))
{
Atom* atoms = (Atom*) t;
GdkAtom* atoms_dest = (GdkAtom*) *data;
GdkAtom* atoms_dest;
gint num_atom, i;
num_atom = (length - 1) / sizeof (Atom);
length = sizeof (GdkAtom) * num_atom + 1;
*data = g_malloc (length);
(*data)[length - 1] = '\0';
atoms_dest = (GdkAtom *)(*data);
num_atom = (length - 1) / sizeof (GdkAtom);
for (i=0; i < num_atom; i++)
atoms_dest[i] = gdk_x11_xatom_to_atom (atoms[i]);
}
else
{
memcpy (*data, t, length);
*data = g_memdup (t, length);
}
if (t)

View File

@ -105,6 +105,7 @@ static int num_targets = sizeof(targets)/sizeof(Target);
static int have_selection = FALSE;
GtkWidget *selection_widget;
GtkWidget *selection_text;
GtkWidget *selection_button;
GString *selection_string = NULL;
@ -367,7 +368,7 @@ paste (GtkWidget *widget, GtkWidget *entry)
return;
}
gtk_selection_convert (selection_button, GDK_SELECTION_PRIMARY, atom,
gtk_selection_convert (selection_widget, GDK_SELECTION_PRIMARY, atom,
GDK_CURRENT_TIME);
}
@ -400,6 +401,8 @@ main (int argc, char *argv[])
init_atoms();
selection_widget = gtk_invisible_new ();
dialog = gtk_dialog_new ();
gtk_widget_set_name (dialog, "Test Input");
gtk_container_set_border_width (GTK_CONTAINER(dialog), 0);
@ -425,15 +428,15 @@ main (int argc, char *argv[])
gtk_signal_connect (GTK_OBJECT(selection_button), "toggled",
GTK_SIGNAL_FUNC (selection_toggled), NULL);
gtk_signal_connect (GTK_OBJECT(selection_button), "selection_clear_event",
gtk_signal_connect (GTK_OBJECT(selection_widget), "selection_clear_event",
GTK_SIGNAL_FUNC (selection_clear), NULL);
gtk_signal_connect (GTK_OBJECT(selection_button), "selection_received",
gtk_signal_connect (GTK_OBJECT(selection_widget), "selection_received",
GTK_SIGNAL_FUNC (selection_received), NULL);
gtk_selection_add_targets (selection_button, GDK_SELECTION_PRIMARY,
gtk_selection_add_targets (selection_widget, GDK_SELECTION_PRIMARY,
targetlist, ntargets);
gtk_signal_connect (GTK_OBJECT(selection_button), "selection_get",
gtk_signal_connect (GTK_OBJECT(selection_widget), "selection_get",
GTK_SIGNAL_FUNC (selection_get), NULL);
selection_text = gtk_text_new (NULL, NULL);