diff src/gtkblist.c @ 13434:ffd724befbf8

[gaim-migrate @ 15809] Cleanup the busy cursor handling code to eliminate a bunch of these loops: while (gtk_events_pending()) gtk_main_iteration(); They seem like a race condition waiting to happen. This code is also simpler, and more generic. This leaves only one such loop, in src/gtkblist.c's gaim_gtk_blist_expand_contact_cb(). committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Tue, 07 Mar 2006 05:48:54 +0000
parents a6b846c71358
children 5251e354d213
line wrap: on
line diff
--- a/src/gtkblist.c	Tue Mar 07 05:09:51 2006 +0000
+++ b/src/gtkblist.c	Tue Mar 07 05:48:54 2006 +0000
@@ -387,10 +387,7 @@
 	GaimAccount *account;
 	char *name = NULL;
 
-	gdk_window_set_cursor(gtkblist->window->window, cursor);
-	gdk_cursor_unref(cursor);
-	while (gtk_events_pending())
-		gtk_main_iteration();
+	gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
 
 	if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
 		GaimBuddy *b = (GaimBuddy*) node;
@@ -408,10 +405,10 @@
 		}
 	} else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
 		gaim_gtk_log_show_contact((GaimContact *)node);
-		gdk_window_set_cursor(gtkblist->window->window, NULL);
+		gaim_gtk_clear_cursor(gtkblist->window);
 		return;
 	} else {
-		gdk_window_set_cursor(gtkblist->window->window, NULL);
+		gaim_gtk_clear_cursor(gtkblist->window);
 
 		/* This callback should not have been registered for a node
 		 * that doesn't match the type of one of the blocks above. */
@@ -422,7 +419,7 @@
 		gaim_gtk_log_show(type, name, account);
 		g_free(name);
 
-		gdk_window_set_cursor(gtkblist->window->window, NULL);
+		gaim_gtk_clear_cursor(gtkblist->window);
 	}
 }
 
@@ -1330,75 +1327,43 @@
 
 static void gaim_gtk_blist_buddy_details_cb(gpointer data, guint action, GtkWidget *item)
 {
-	if (gtkblist->window->window)
-	{
-		GdkCursor *cursor = gdk_cursor_new(GDK_WATCH);
-		gdk_window_set_cursor(gtkblist->window->window, cursor);
-		while (gtk_events_pending())
-			gtk_main_iteration();
-		gdk_cursor_unref(cursor);
-	}
+	gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
 
 	gaim_prefs_set_bool("/gaim/gtk/blist/show_buddy_icons",
 			    gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
 
-	if (gtkblist->window->window)
-		gdk_window_set_cursor(gtkblist->window->window, NULL);
+	gaim_gtk_clear_cursor(gtkblist->window);
 }
 
 static void gaim_gtk_blist_show_idle_time_cb(gpointer data, guint action, GtkWidget *item)
 {
-	if (gtkblist->window->window)
-	{
-		GdkCursor *cursor = gdk_cursor_new(GDK_WATCH);
-		gdk_window_set_cursor(gtkblist->window->window, cursor);
-		while (gtk_events_pending())
-			gtk_main_iteration();
-		gdk_cursor_unref(cursor);
-	}
+	gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
 
 	gaim_prefs_set_bool("/gaim/gtk/blist/show_idle_time",
 			    gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
 
-	if (gtkblist->window->window)
-		gdk_window_set_cursor(gtkblist->window->window, NULL);
+	gaim_gtk_clear_cursor(gtkblist->window);
 }
 
 static void gaim_gtk_blist_show_empty_groups_cb(gpointer data, guint action, GtkWidget *item)
 {
-	if (gtkblist->window->window)
-	{
-		GdkCursor *cursor = gdk_cursor_new(GDK_WATCH);
-		gdk_window_set_cursor(gtkblist->window->window, cursor);
-		while (gtk_events_pending())
-			gtk_main_iteration();
-		gdk_cursor_unref(cursor);
-	}
+	gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
 
 	gaim_prefs_set_bool("/gaim/gtk/blist/show_empty_groups",
 			gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
 
-	if (gtkblist->window->window)
-		gdk_window_set_cursor(gtkblist->window->window, NULL);
+	gaim_gtk_clear_cursor(gtkblist->window);
 }
 
 static void gaim_gtk_blist_edit_mode_cb(gpointer callback_data, guint callback_action,
 		GtkWidget *checkitem)
 {
-	if (gtkblist->window->window)
-	{
-		GdkCursor *cursor = gdk_cursor_new(GDK_WATCH);
-		gdk_window_set_cursor(gtkblist->window->window, cursor);
-		while (gtk_events_pending())
-			gtk_main_iteration();
-		gdk_cursor_unref(cursor);
-	}
+	gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
 
 	gaim_prefs_set_bool("/gaim/gtk/blist/show_offline_buddies",
 			gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(checkitem)));
 
-	if (gtkblist->window->window)
-		gdk_window_set_cursor(gtkblist->window->window, NULL);
+	gaim_gtk_clear_cursor(gtkblist->window);
 }
 
 static void gaim_gtk_blist_mute_sounds_cb(gpointer data, guint action, GtkWidget *item)
@@ -5766,21 +5731,12 @@
 {
 	if (gtk_check_menu_item_get_active(checkmenuitem))
 	{
-		if (gtkblist->window->window != NULL)
-		{
-			GdkCursor *cursor = gdk_cursor_new(GDK_WATCH);
-			gdk_window_set_cursor(gtkblist->window->window, cursor);
-			gdk_cursor_unref(cursor);
-		}
-
-		while (gtk_events_pending())
-			gtk_main_iteration();
+		gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH);
 
 		gaim_gtk_blist_sort_method_set(id);
 		gaim_prefs_set_string("/gaim/gtk/blist/sort_type", id);
 
-		if (gtkblist->window->window != NULL)
-			gdk_window_set_cursor(gtkblist->window->window, NULL);
+		gaim_gtk_clear_cursor(gtkblist->window);
 	}
 }