Author: kelnos
Date: 2007-10-20 23:58:38 +0000 (Sat, 20 Oct 2007)
New Revision: 26167
Modified:
xfdesktop/trunk/src/xfdesktop-file-icon-manager.c
xfdesktop/trunk/src/xfdesktop-window-icon-manager.c
Log:
fix crash when switching icon styles
Modified: xfdesktop/trunk/src/xfdesktop-file-icon-manager.c
===================================================================
--- xfdesktop/trunk/src/xfdesktop-file-icon-manager.c 2007-10-20 21:40:35 UTC
(rev 26166)
+++ xfdesktop/trunk/src/xfdesktop-file-icon-manager.c 2007-10-20 23:58:38 UTC
(rev 26167)
@@ -88,6 +88,7 @@
{
gboolean inited;
+ GtkWidget *desktop;
XfdesktopIconView *icon_view;
GdkScreen *gscreen;
@@ -2732,7 +2733,6 @@
XfdesktopFileIconManager *fmanager = XFDESKTOP_FILE_ICON_MANAGER(manager);
ThunarVfsInfo *desktop_info;
gint i;
- GtkWidget *toplevel;
#ifdef HAVE_THUNARX
ThunarxProviderFactory *thunarx_pfac;
#endif
@@ -2741,8 +2741,8 @@
fmanager->priv->icon_view = icon_view;
- toplevel = gtk_widget_get_toplevel(GTK_WIDGET(icon_view));
- g_signal_connect(G_OBJECT(toplevel), "populate-root-menu",
+ fmanager->priv->desktop = gtk_widget_get_toplevel(GTK_WIDGET(icon_view));
+ g_signal_connect(G_OBJECT(fmanager->priv->desktop), "populate-root-menu",
G_CALLBACK(xfdesktop_file_icon_manager_populate_context_menu),
fmanager);
@@ -2838,7 +2838,6 @@
{
XfdesktopFileIconManager *fmanager = XFDESKTOP_FILE_ICON_MANAGER(manager);
gint i;
- GtkWidget *toplevel;
g_return_if_fail(fmanager->priv->inited);
@@ -2876,8 +2875,7 @@
fmanager->priv->active_trash_calls = NULL;
}
- toplevel = gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
- g_signal_handlers_disconnect_by_func(G_OBJECT(toplevel),
+ g_signal_handlers_disconnect_by_func(G_OBJECT(fmanager->priv->desktop),
G_CALLBACK(xfdesktop_file_icon_manager_populate_context_menu),
fmanager);
Modified: xfdesktop/trunk/src/xfdesktop-window-icon-manager.c
===================================================================
--- xfdesktop/trunk/src/xfdesktop-window-icon-manager.c 2007-10-20 21:40:35 UTC
(rev 26166)
+++ xfdesktop/trunk/src/xfdesktop-window-icon-manager.c 2007-10-20 23:58:38 UTC
(rev 26167)
@@ -65,6 +65,9 @@
struct _XfdesktopWindowIconManagerPrivate
{
+ gboolean inited;
+
+ GtkWidget *desktop;
XfdesktopIconView *icon_view;
GdkScreen *gscreen;
@@ -150,17 +153,12 @@
xfdesktop_window_icon_manager_finalize(GObject *obj)
{
XfdesktopWindowIconManager *wmanager = XFDESKTOP_WINDOW_ICON_MANAGER(obj);
- gint i;
- if(wmanager->priv->icon_workspaces) {
- for(i = 0; i < wmanager->priv->nworkspaces; ++i) {
- if(wmanager->priv->icon_workspaces[i]->icons)
-
g_hash_table_destroy(wmanager->priv->icon_workspaces[i]->icons);
- g_free(wmanager->priv->icon_workspaces[i]);
- }
- g_free(wmanager->priv->icon_workspaces);
- }
+ TRACE("entering");
+ if(wmanager->priv->inited)
+
xfdesktop_window_icon_manager_fini(XFDESKTOP_ICON_VIEW_MANAGER(wmanager));
+
G_OBJECT_CLASS(xfdesktop_window_icon_manager_parent_class)->finalize(obj);
}
@@ -528,7 +526,6 @@
XfdesktopWindowIconManager *wmanager =
XFDESKTOP_WINDOW_ICON_MANAGER(manager);
GList *windows, *l;
gint i;
- GtkWidget *toplevel;
wmanager->priv->icon_view = icon_view;
xfdesktop_icon_view_set_selection_mode(icon_view, GTK_SELECTION_SINGLE);
@@ -536,8 +533,8 @@
G_CALLBACK(xfdesktop_window_icon_manager_icon_selected_cb),
wmanager);
- toplevel = gtk_widget_get_toplevel(GTK_WIDGET(icon_view));
- g_signal_connect(G_OBJECT(toplevel), "populate-root-menu",
+ wmanager->priv->desktop = gtk_widget_get_toplevel(GTK_WIDGET(icon_view));
+ g_signal_connect(G_OBJECT(wmanager->priv->desktop), "populate-root-menu",
G_CALLBACK(xfdesktop_window_icon_manager_populate_context_menu),
wmanager);
@@ -575,6 +572,8 @@
workspace_changed_cb(wmanager->priv->netk_screen, wmanager);
+ wmanager->priv->inited = TRUE;
+
return TRUE;
}
@@ -584,8 +583,11 @@
XfdesktopWindowIconManager *wmanager =
XFDESKTOP_WINDOW_ICON_MANAGER(manager);
gint i;
GList *windows, *l;
- GtkWidget *toplevel;
+ TRACE("entering");
+
+ wmanager->priv->inited = FALSE;
+
g_signal_handlers_disconnect_by_func(G_OBJECT(wmanager->priv->netk_screen),
G_CALLBACK(workspace_changed_cb),
wmanager);
@@ -599,8 +601,7 @@
G_CALLBACK(workspace_destroyed_cb),
wmanager);
- toplevel = gtk_widget_get_toplevel(GTK_WIDGET(wmanager->priv->icon_view));
- g_signal_handlers_disconnect_by_func(G_OBJECT(toplevel),
+ g_signal_handlers_disconnect_by_func(G_OBJECT(wmanager->priv->desktop),
G_CALLBACK(xfdesktop_window_icon_manager_populate_context_menu),
wmanager);
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits