Use a FIFO list for storing GdkSelProp of a single window so that
2005-02-02 Ivan, Wong Yat Cheung <email@ivanwong.info> * gdk/win32/gdkselection.c: Use a FIFO list for storing GdkSelProp of a single window so that gtk_clipboard_request_contents() can be called inside a GtkClipboardReceivedFunc(). (#163844)
This commit is contained in:
committed by
Tor Lillqvist
parent
762daeb3cf
commit
c922869cdf
@@ -1,3 +1,9 @@
|
|||||||
|
2005-02-02 Ivan, Wong Yat Cheung <email@ivanwong.info>
|
||||||
|
|
||||||
|
* gdk/win32/gdkselection.c: Use a FIFO list for storing GdkSelProp
|
||||||
|
of a single window so that gtk_clipboard_request_contents() can be
|
||||||
|
called inside a GtkClipboardReceivedFunc(). (#163844)
|
||||||
|
|
||||||
2005-02-01 Matthias Clasen <mclasen@redhat.com>
|
2005-02-01 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
|
* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
2005-02-02 Ivan, Wong Yat Cheung <email@ivanwong.info>
|
||||||
|
|
||||||
|
* gdk/win32/gdkselection.c: Use a FIFO list for storing GdkSelProp
|
||||||
|
of a single window so that gtk_clipboard_request_contents() can be
|
||||||
|
called inside a GtkClipboardReceivedFunc(). (#163844)
|
||||||
|
|
||||||
2005-02-01 Matthias Clasen <mclasen@redhat.com>
|
2005-02-01 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
|
* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
2005-02-02 Ivan, Wong Yat Cheung <email@ivanwong.info>
|
||||||
|
|
||||||
|
* gdk/win32/gdkselection.c: Use a FIFO list for storing GdkSelProp
|
||||||
|
of a single window so that gtk_clipboard_request_contents() can be
|
||||||
|
called inside a GtkClipboardReceivedFunc(). (#163844)
|
||||||
|
|
||||||
2005-02-01 Matthias Clasen <mclasen@redhat.com>
|
2005-02-01 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
|
* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
|
||||||
|
|||||||
@@ -136,13 +136,8 @@ _gdk_selection_property_store (GdkWindow *owner,
|
|||||||
gint length)
|
gint length)
|
||||||
{
|
{
|
||||||
GdkSelProp *prop;
|
GdkSelProp *prop;
|
||||||
|
GSList *prop_list;
|
||||||
|
|
||||||
prop = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (owner));
|
|
||||||
if (prop != NULL)
|
|
||||||
{
|
|
||||||
g_free (prop->data);
|
|
||||||
g_hash_table_remove (sel_prop_table, GDK_WINDOW_HWND (owner));
|
|
||||||
}
|
|
||||||
prop = g_new (GdkSelProp, 1);
|
prop = g_new (GdkSelProp, 1);
|
||||||
|
|
||||||
if (type == GDK_TARGET_STRING)
|
if (type == GDK_TARGET_STRING)
|
||||||
@@ -167,7 +162,9 @@ _gdk_selection_property_store (GdkWindow *owner,
|
|||||||
}
|
}
|
||||||
prop->format = format;
|
prop->format = format;
|
||||||
prop->type = type;
|
prop->type = type;
|
||||||
g_hash_table_insert (sel_prop_table, GDK_WINDOW_HWND (owner), prop);
|
prop_list = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (owner));
|
||||||
|
prop_list = g_slist_append (prop_list, prop);
|
||||||
|
g_hash_table_insert (sel_prop_table, GDK_WINDOW_HWND (owner), prop_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -656,6 +653,7 @@ gdk_selection_property_get (GdkWindow *requestor,
|
|||||||
gint *ret_format)
|
gint *ret_format)
|
||||||
{
|
{
|
||||||
GdkSelProp *prop;
|
GdkSelProp *prop;
|
||||||
|
GSList *prop_list;
|
||||||
|
|
||||||
g_return_val_if_fail (requestor != NULL, 0);
|
g_return_val_if_fail (requestor != NULL, 0);
|
||||||
g_return_val_if_fail (GDK_IS_WINDOW (requestor), 0);
|
g_return_val_if_fail (GDK_IS_WINDOW (requestor), 0);
|
||||||
@@ -666,7 +664,8 @@ gdk_selection_property_get (GdkWindow *requestor,
|
|||||||
GDK_NOTE (DND, g_print ("gdk_selection_property_get: %p\n",
|
GDK_NOTE (DND, g_print ("gdk_selection_property_get: %p\n",
|
||||||
GDK_WINDOW_HWND (requestor)));
|
GDK_WINDOW_HWND (requestor)));
|
||||||
|
|
||||||
prop = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (requestor));
|
prop_list = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (requestor));
|
||||||
|
prop = prop_list ? (GdkSelProp *) prop_list->data : NULL;
|
||||||
|
|
||||||
if (prop == NULL)
|
if (prop == NULL)
|
||||||
{
|
{
|
||||||
@@ -691,15 +690,18 @@ void
|
|||||||
_gdk_selection_property_delete (GdkWindow *window)
|
_gdk_selection_property_delete (GdkWindow *window)
|
||||||
{
|
{
|
||||||
GdkSelProp *prop;
|
GdkSelProp *prop;
|
||||||
|
GSList *prop_list;
|
||||||
|
|
||||||
GDK_NOTE (DND, g_print ("_gdk_selection_property_delete: %p\n",
|
GDK_NOTE (DND, g_print ("_gdk_selection_property_delete: %p\n",
|
||||||
GDK_WINDOW_HWND (window)));
|
GDK_WINDOW_HWND (window)));
|
||||||
|
|
||||||
prop = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (window));
|
prop_list = g_hash_table_lookup (sel_prop_table, GDK_WINDOW_HWND (window));
|
||||||
if (prop != NULL)
|
if (prop_list && (prop = (GdkSelProp *) prop_list->data) != NULL)
|
||||||
{
|
{
|
||||||
g_free (prop->data);
|
g_free (prop->data);
|
||||||
g_hash_table_remove (sel_prop_table, GDK_WINDOW_HWND (window));
|
prop_list = g_slist_remove (prop_list, prop);
|
||||||
|
g_free (prop);
|
||||||
|
g_hash_table_insert (sel_prop_table, GDK_WINDOW_HWND (window), prop_list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user