static int fm_desktop_icon_container_icons_compare (NemoIconContainer *container, NemoIconData *data_a, NemoIconData *data_b) { NemoFile *file_a; NemoFile *file_b; NemoView *directory_view; SortCategory category_a, category_b; file_a = (NemoFile *) data_a; file_b = (NemoFile *) data_b; directory_view = NEMO_VIEW (NEMO_ICON_VIEW_CONTAINER (container)->view); g_return_val_if_fail (directory_view != NULL, 0); category_a = get_sort_category (file_a); category_b = get_sort_category (file_b); if (category_a == category_b) { return nemo_file_compare_for_sort (file_a, file_b, NEMO_FILE_SORT_BY_DISPLAY_NAME, nemo_view_should_sort_directories_first (directory_view), FALSE); } if (category_a < category_b) { return -1; } else { return +1; } }
static void nemo_icon_view_container_unfreeze_updates (NemoIconContainer *container) { NemoIconView *icon_view; icon_view = get_icon_view (container); g_return_if_fail (icon_view != NULL); nemo_view_unfreeze_updates (NEMO_VIEW (icon_view)); }
static void restore_focus_widget (NemoWindowPane *pane) { if (pane->last_focus_widget != NULL) { if (NEMO_IS_VIEW (pane->last_focus_widget)) { nemo_view_grab_focus (NEMO_VIEW (pane->last_focus_widget)); } else { gtk_widget_grab_focus (pane->last_focus_widget); } unset_focus_widget (pane); } }
void nemo_status_bar_sync_zoom_widgets (NemoStatusBar *bar) { NemoWindowSlot *slot = nemo_window_get_active_slot (bar->window); if (!NEMO_IS_WINDOW_SLOT (slot)) return; NemoView *view = slot->content_view; if (!NEMO_IS_VIEW (view)) return; NemoZoomLevel zoom_level = nemo_view_get_zoom_level (NEMO_VIEW (view)); gtk_range_set_value (GTK_RANGE (bar->zoom_slider), (double) zoom_level); }
static NemoIconInfo * nemo_icon_view_container_get_icon_images (NemoIconContainer *container, NemoIconData *data, int size, char **embedded_text, gboolean for_drag_accept, gboolean need_large_embeddded_text, gboolean *embedded_text_needs_loading, gboolean *has_window_open) { NemoIconView *icon_view; char **emblems_to_ignore; NemoFile *file; NemoFileIconFlags flags; NemoIconInfo *icon_info; GdkPixbuf *pixbuf; GIcon *emblemed_icon; GEmblem *emblem; GList *emblem_icons, *l; gint scale; file = (NemoFile *) data; g_assert (NEMO_IS_FILE (file)); icon_view = get_icon_view (container); g_return_val_if_fail (icon_view != NULL, NULL); *has_window_open = nemo_file_has_open_window (file); flags = NEMO_FILE_ICON_FLAGS_USE_MOUNT_ICON_AS_EMBLEM | NEMO_FILE_ICON_FLAGS_USE_THUMBNAILS; if (for_drag_accept) { flags |= NEMO_FILE_ICON_FLAGS_FOR_DRAG_ACCEPT; } emblems_to_ignore = nemo_view_get_emblem_names_to_exclude (NEMO_VIEW (icon_view)); emblem_icons = nemo_file_get_emblem_icons (file, emblems_to_ignore); g_strfreev (emblems_to_ignore); scale = gtk_widget_get_scale_factor (GTK_WIDGET (icon_view)); icon_info = nemo_file_get_icon (file, size, scale, flags); /* apply emblems */ if (emblem_icons != NULL) { l = emblem_icons; pixbuf = nemo_icon_info_get_pixbuf (icon_info); gint w, h, s; gboolean bad_ratio; w = gdk_pixbuf_get_width (pixbuf); h = gdk_pixbuf_get_height (pixbuf); s = MAX (w, h); if (s < size) size = s; bad_ratio = nemo_icon_get_emblem_size_for_icon_size (size) * scale > w || nemo_icon_get_emblem_size_for_icon_size (size) * scale > h; if (bad_ratio) goto skip_emblem; /* Would prefer to not use goto, but * I don't want to do these checks on * non-emblemed icons (the majority) * as it would be too costly */ emblem = g_emblem_new (l->data); emblemed_icon = g_emblemed_icon_new (G_ICON (pixbuf), emblem); g_object_unref (emblem); for (l = l->next; l != NULL; l = l->next) { emblem = g_emblem_new (l->data); g_emblemed_icon_add_emblem (G_EMBLEMED_ICON (emblemed_icon), emblem); g_object_unref (emblem); } g_clear_object (&icon_info); icon_info = nemo_icon_info_lookup (emblemed_icon, size, scale); g_object_unref (emblemed_icon); skip_emblem: g_object_unref (pixbuf); } if (emblem_icons != NULL) { g_list_free_full (emblem_icons, g_object_unref); } return icon_info; }