Additional fixes for the desktop handlers
This commit is contained in:
parent
178516c424
commit
0a8ca3619d
|
@ -78,6 +78,7 @@ struct _Desktop
|
|||
GdkRectangle workarea;
|
||||
|
||||
/* icons */
|
||||
GtkIconTheme * theme;
|
||||
unsigned int icons_size;
|
||||
DesktopIconWindow ** icons;
|
||||
size_t icons_cnt;
|
||||
|
@ -114,7 +115,6 @@ struct _Desktop
|
|||
GdkWindow * root;
|
||||
GtkWidget * desktop;
|
||||
GdkWindow * back;
|
||||
GtkIconTheme * theme;
|
||||
#if GTK_CHECK_VERSION(3, 0, 0)
|
||||
cairo_t * cairo;
|
||||
#else
|
||||
|
@ -277,7 +277,6 @@ Desktop * desktop_new(DesktopPrefs * prefs)
|
|||
return NULL;
|
||||
}
|
||||
/* internal */
|
||||
desktop->theme = gtk_icon_theme_get_default();
|
||||
desktop_message_register(NULL, DESKTOP_CLIENT_MESSAGE, _on_message,
|
||||
desktop);
|
||||
/* query the root window */
|
||||
|
@ -327,6 +326,7 @@ static void _new_icons(Desktop * desktop)
|
|||
char const ** p;
|
||||
GdkPixbuf * icon;
|
||||
|
||||
desktop->theme = gtk_icon_theme_get_default();
|
||||
for(p = file, icon = NULL; *p != NULL && icon == NULL; p++)
|
||||
icon = gtk_icon_theme_load_icon(desktop->theme, *p,
|
||||
desktop->icons_size, 0, NULL);
|
||||
|
@ -592,14 +592,14 @@ void desktop_delete(Desktop * desktop)
|
|||
{
|
||||
size_t i;
|
||||
|
||||
if(desktop->handler != NULL)
|
||||
desktophandler_delete(desktop->handler);
|
||||
if(desktop->folder != NULL)
|
||||
g_object_unref(desktop->folder);
|
||||
if(desktop->file != NULL)
|
||||
g_object_unref(desktop->file);
|
||||
if(desktop->mime != NULL)
|
||||
mime_delete(desktop->mime);
|
||||
if(desktop->handler != NULL)
|
||||
desktop_set_icons(desktop, DESKTOP_ICONS_NONE);
|
||||
if(desktop->desktop != NULL)
|
||||
gtk_widget_destroy(desktop->desktop);
|
||||
if(desktop->refresh_source != 0)
|
||||
|
@ -900,6 +900,8 @@ int desktop_serror(Desktop * desktop, char const * message, int ret)
|
|||
|
||||
/* desktop_refresh */
|
||||
static void _refresh_reset(Desktop * desktop);
|
||||
/* callbacks */
|
||||
static gboolean _refresh_on_idle(gpointer data);
|
||||
|
||||
void desktop_refresh(Desktop * desktop)
|
||||
{
|
||||
|
@ -907,12 +909,8 @@ void desktop_refresh(Desktop * desktop)
|
|||
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
||||
#endif
|
||||
if(desktop->refresh_source != 0)
|
||||
{
|
||||
g_source_remove(desktop->refresh_source);
|
||||
desktop->refresh_source = 0;
|
||||
}
|
||||
_refresh_reset(desktop);
|
||||
desktophandler_refresh(desktop->handler);
|
||||
desktop->refresh_source = g_idle_add(_refresh_on_idle, desktop);
|
||||
}
|
||||
|
||||
static void _refresh_reset(Desktop * desktop)
|
||||
|
@ -928,6 +926,17 @@ static void _refresh_reset(Desktop * desktop)
|
|||
}
|
||||
}
|
||||
|
||||
/* callbacks */
|
||||
static gboolean _refresh_on_idle(gpointer data)
|
||||
{
|
||||
Desktop * desktop = data;
|
||||
|
||||
desktop->refresh_source = 0;
|
||||
_refresh_reset(desktop);
|
||||
desktophandler_refresh(desktop->handler);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/* desktop_reset */
|
||||
static void _reset_background(Desktop * desktop, Config * config);
|
||||
|
|
|
@ -181,6 +181,7 @@ void desktophandler_set_icons(DesktopHandler * handler, DesktopIcons icons)
|
|||
{
|
||||
if(handler->icons != icons)
|
||||
{
|
||||
desktop_cleanup(handler->desktop);
|
||||
_set_icons_destroy(handler);
|
||||
handler->icons = icons;
|
||||
_set_icons_init(handler);
|
||||
|
@ -389,6 +390,7 @@ static gboolean _desktophandler_applications_on_refresh(gpointer data)
|
|||
|
||||
static gboolean _applications_on_refresh_done(DesktopHandler * handler)
|
||||
{
|
||||
handler->u.applications.refresh_source = 0;
|
||||
_applications_on_refresh_done_applications(handler);
|
||||
desktop_cleanup(handler->desktop);
|
||||
desktop_icons_align(handler->desktop);
|
||||
|
@ -710,6 +712,7 @@ static gboolean _desktophandler_categories_on_refresh(gpointer data)
|
|||
|
||||
static gboolean _categories_on_refresh_done(DesktopHandler * handler)
|
||||
{
|
||||
handler->u.categories.refresh_source = 0;
|
||||
_categories_on_refresh_done_categories(handler);
|
||||
desktop_cleanup(handler->desktop);
|
||||
desktop_icons_align(handler->desktop);
|
||||
|
@ -964,15 +967,18 @@ static void _desktophandler_files_init(DesktopHandler * handler)
|
|||
handler->u.files.path = string_new_append(
|
||||
desktop_get_home(handler->desktop), "/",
|
||||
DESKTOP, NULL);
|
||||
handler->u.files.refresh_dir = NULL;
|
||||
handler->u.files.refresh_mtime = 0;
|
||||
handler->u.files.refresh_source = 0;
|
||||
handler->u.files.menu = NULL;
|
||||
/* FIXME let it be configured again */
|
||||
handler->u.files.show_hidden = FALSE;
|
||||
/* check for errors */
|
||||
if(handler->u.files.path == NULL)
|
||||
{
|
||||
desktop_error(handler->desktop, NULL, error_get(NULL), 1);
|
||||
return;
|
||||
}
|
||||
handler->u.files.refresh_dir = NULL;
|
||||
handler->u.files.refresh_mtime = 0;
|
||||
handler->u.files.refresh_source = 0;
|
||||
handler->u.files.menu = NULL;
|
||||
_files_init_add_home(handler);
|
||||
if(browser_vfs_stat(handler->u.files.path, &st) == 0)
|
||||
{
|
||||
|
@ -985,8 +991,6 @@ static void _desktophandler_files_init(DesktopHandler * handler)
|
|||
}
|
||||
else if(errno != ENOENT)
|
||||
desktop_perror(NULL, handler->u.files.path, 1);
|
||||
/* FIXME let it be configured again */
|
||||
handler->u.files.show_hidden = FALSE;
|
||||
}
|
||||
|
||||
static int _files_init_add_home(DesktopHandler * handler)
|
||||
|
|
Loading…
Reference in New Issue
Block a user