Also manage references to GdkPixbuf objects
This commit is contained in:
parent
b44772f0c4
commit
3f43c99b2d
|
@ -642,6 +642,7 @@ int desktop_get_drag_data(Desktop * desktop, GtkSelectionData * seldata)
|
||||||
/* desktop_get_file */
|
/* desktop_get_file */
|
||||||
GdkPixbuf * desktop_get_file(Desktop * desktop)
|
GdkPixbuf * desktop_get_file(Desktop * desktop)
|
||||||
{
|
{
|
||||||
|
g_object_ref(desktop->file);
|
||||||
return desktop->file;
|
return desktop->file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,6 +650,7 @@ GdkPixbuf * desktop_get_file(Desktop * desktop)
|
||||||
/* desktop_get_folder */
|
/* desktop_get_folder */
|
||||||
GdkPixbuf * desktop_get_folder(Desktop * desktop)
|
GdkPixbuf * desktop_get_folder(Desktop * desktop)
|
||||||
{
|
{
|
||||||
|
g_object_ref(desktop->folder);
|
||||||
return desktop->folder;
|
return desktop->folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -157,6 +157,8 @@ DesktopIcon * desktopicon_new(Desktop * desktop, char const * name,
|
||||||
}
|
}
|
||||||
if((desktopicon = _desktopicon_new_do(desktop, image, name)) == NULL)
|
if((desktopicon = _desktopicon_new_do(desktop, image, name)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
if(image != NULL)
|
||||||
|
g_object_unref(image);
|
||||||
gtk_drag_source_set(desktopicon->event, GDK_BUTTON1_MASK, targets,
|
gtk_drag_source_set(desktopicon->event, GDK_BUTTON1_MASK, targets,
|
||||||
targets_cnt, GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
targets_cnt, GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||||
gtk_drag_dest_set(desktopicon->event, GTK_DEST_DEFAULT_ALL, targets,
|
gtk_drag_dest_set(desktopicon->event, GTK_DEST_DEFAULT_ALL, targets,
|
||||||
|
@ -231,6 +233,8 @@ DesktopIcon * desktopicon_new_application(Desktop * desktop, char const * path)
|
||||||
if(image == NULL)
|
if(image == NULL)
|
||||||
image = desktop_get_file(desktop);
|
image = desktop_get_file(desktop);
|
||||||
desktopicon = _desktopicon_new_do(desktop, image, p);
|
desktopicon = _desktopicon_new_do(desktop, image, p);
|
||||||
|
if(image != NULL)
|
||||||
|
g_object_unref(image);
|
||||||
config_delete(config); /* XXX also remove reference to the pixbuf */
|
config_delete(config); /* XXX also remove reference to the pixbuf */
|
||||||
if(desktopicon == NULL)
|
if(desktopicon == NULL)
|
||||||
{
|
{
|
||||||
|
@ -511,8 +515,13 @@ static DesktopIcon * _desktopicon_new_do(Desktop * desktop, GdkPixbuf * image,
|
||||||
gtk_container_add(GTK_CONTAINER(desktopicon->window),
|
gtk_container_add(GTK_CONTAINER(desktopicon->window),
|
||||||
desktopicon->event);
|
desktopicon->event);
|
||||||
if(image == NULL)
|
if(image == NULL)
|
||||||
|
{
|
||||||
image = desktop_get_file(desktop);
|
image = desktop_get_file(desktop);
|
||||||
_desktopicon_set_icon(desktopicon, image);
|
_desktopicon_set_icon(desktopicon, image);
|
||||||
|
g_object_unref(image);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_desktopicon_set_icon(desktopicon, image);
|
||||||
_desktopicon_set_name(desktopicon, name);
|
_desktopicon_set_name(desktopicon, name);
|
||||||
_desktopicon_update_transparency(desktopicon);
|
_desktopicon_update_transparency(desktopicon);
|
||||||
return desktopicon;
|
return desktopicon;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user