2000-01-31 01:30:16 +00:00
|
|
|
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
|
|
|
2000-03-22 00:29:07 +00:00
|
|
|
/* Nautilus - Icon canvas item class for icon container.
|
2000-01-25 21:17:05 +00:00
|
|
|
*
|
|
|
|
* Copyright (C) 2000 Eazel, Inc
|
|
|
|
*
|
2000-03-09 03:09:37 +00:00
|
|
|
* Author: Andy Hertzfeld <andy@eazel.com>
|
2000-01-25 21:17:05 +00:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
|
|
|
* License along with this library; if not, write to the
|
|
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
* Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
2003-04-23 09:50:03 +00:00
|
|
|
#include <math.h>
|
2000-03-22 00:29:07 +00:00
|
|
|
#include "nautilus-icon-canvas-item.h"
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2006-03-18 07:13:55 +00:00
|
|
|
#include <glib/gi18n.h>
|
2003-12-03 09:51:56 +00:00
|
|
|
|
Deleted help component as it is not slated to be part of Gnome 2.
* components/Makefile.am:
* components/help/*:
* nautilus.spec.in:
Deleted help component as it is not slated to be part of Gnome 2.
* RENAMING: No need to rename hyperbola if it's gone.
* configure.in: Removed ScrollKeeper check. Took a cut at making
the medusa check use pkg-config, it's probably messed up but at
least we won't define HAVE_MEDUSA if we see the Gnome 1 medusa.
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg),
(draw_or_measure_label_text_aa), (draw_label_text_aa),
(nautilus_icon_canvas_item_class_init):
Quick cut at porting to Pango from Eel font code. It's all under
ifdef USE_EEL_TEXT because it's not working well yet. At the moment
the text looks bad, and it's very slow, and it's not centered.
* libnautilus-private/nautilus-icon-factory.c: (embed_text):
Baby steps at doing the port to Pango here too.
* src/file-manager/fm-directory-view.c: (real_update_menus):
Add a check for NULL that seems required. This change was
suggested by the backtrace in bug 66809, but it's not clear
if this really fixes anything. (Rolled from stable branch.)
* src/file-manager/fm-icon-view.c: (icon_view_handle_uri_list):
Fix code that passed a path instead of a URI when creating a
desktop file. (Rolled from stable branch.)
* TODO: Minor updates.
2001-12-13 23:37:55 +00:00
|
|
|
#include "nautilus-file-utilities.h"
|
|
|
|
#include "nautilus-global-preferences.h"
|
2000-03-22 00:29:07 +00:00
|
|
|
#include "nautilus-icon-private.h"
|
2001-04-04 00:07:15 +00:00
|
|
|
#include <eel/eel-art-extensions.h>
|
|
|
|
#include <eel/eel-gdk-extensions.h>
|
|
|
|
#include <eel/eel-gdk-pixbuf-extensions.h>
|
Deleted help component as it is not slated to be part of Gnome 2.
* components/Makefile.am:
* components/help/*:
* nautilus.spec.in:
Deleted help component as it is not slated to be part of Gnome 2.
* RENAMING: No need to rename hyperbola if it's gone.
* configure.in: Removed ScrollKeeper check. Took a cut at making
the medusa check use pkg-config, it's probably messed up but at
least we won't define HAVE_MEDUSA if we see the Gnome 1 medusa.
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg),
(draw_or_measure_label_text_aa), (draw_label_text_aa),
(nautilus_icon_canvas_item_class_init):
Quick cut at porting to Pango from Eel font code. It's all under
ifdef USE_EEL_TEXT because it's not working well yet. At the moment
the text looks bad, and it's very slow, and it's not centered.
* libnautilus-private/nautilus-icon-factory.c: (embed_text):
Baby steps at doing the port to Pango here too.
* src/file-manager/fm-directory-view.c: (real_update_menus):
Add a check for NULL that seems required. This change was
suggested by the backtrace in bug 66809, but it's not clear
if this really fixes anything. (Rolled from stable branch.)
* src/file-manager/fm-icon-view.c: (icon_view_handle_uri_list):
Fix code that passed a path instead of a URI when creating a
desktop file. (Rolled from stable branch.)
* TODO: Minor updates.
2001-12-13 23:37:55 +00:00
|
|
|
#include <eel/eel-glib-extensions.h>
|
2001-04-04 00:07:15 +00:00
|
|
|
#include <eel/eel-gnome-extensions.h>
|
|
|
|
#include <eel/eel-graphic-effects.h>
|
Deleted help component as it is not slated to be part of Gnome 2.
* components/Makefile.am:
* components/help/*:
* nautilus.spec.in:
Deleted help component as it is not slated to be part of Gnome 2.
* RENAMING: No need to rename hyperbola if it's gone.
* configure.in: Removed ScrollKeeper check. Took a cut at making
the medusa check use pkg-config, it's probably messed up but at
least we won't define HAVE_MEDUSA if we see the Gnome 1 medusa.
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg),
(draw_or_measure_label_text_aa), (draw_label_text_aa),
(nautilus_icon_canvas_item_class_init):
Quick cut at porting to Pango from Eel font code. It's all under
ifdef USE_EEL_TEXT because it's not working well yet. At the moment
the text looks bad, and it's very slow, and it's not centered.
* libnautilus-private/nautilus-icon-factory.c: (embed_text):
Baby steps at doing the port to Pango here too.
* src/file-manager/fm-directory-view.c: (real_update_menus):
Add a check for NULL that seems required. This change was
suggested by the backtrace in bug 66809, but it's not clear
if this really fixes anything. (Rolled from stable branch.)
* src/file-manager/fm-icon-view.c: (icon_view_handle_uri_list):
Fix code that passed a path instead of a URI when creating a
desktop file. (Rolled from stable branch.)
* TODO: Minor updates.
2001-12-13 23:37:55 +00:00
|
|
|
#include <eel/eel-gtk-macros.h>
|
2002-01-03 22:48:25 +00:00
|
|
|
#include <eel/eel-pango-extensions.h>
|
Deleted help component as it is not slated to be part of Gnome 2.
* components/Makefile.am:
* components/help/*:
* nautilus.spec.in:
Deleted help component as it is not slated to be part of Gnome 2.
* RENAMING: No need to rename hyperbola if it's gone.
* configure.in: Removed ScrollKeeper check. Took a cut at making
the medusa check use pkg-config, it's probably messed up but at
least we won't define HAVE_MEDUSA if we see the Gnome 1 medusa.
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg),
(draw_or_measure_label_text_aa), (draw_label_text_aa),
(nautilus_icon_canvas_item_class_init):
Quick cut at porting to Pango from Eel font code. It's all under
ifdef USE_EEL_TEXT because it's not working well yet. At the moment
the text looks bad, and it's very slow, and it's not centered.
* libnautilus-private/nautilus-icon-factory.c: (embed_text):
Baby steps at doing the port to Pango here too.
* src/file-manager/fm-directory-view.c: (real_update_menus):
Add a check for NULL that seems required. This change was
suggested by the backtrace in bug 66809, but it's not clear
if this really fixes anything. (Rolled from stable branch.)
* src/file-manager/fm-icon-view.c: (icon_view_handle_uri_list):
Fix code that passed a path instead of a URI when creating a
desktop file. (Rolled from stable branch.)
* TODO: Minor updates.
2001-12-13 23:37:55 +00:00
|
|
|
#include <eel/eel-string.h>
|
2002-03-26 19:24:11 +00:00
|
|
|
#include <eel/eel-accessibility.h>
|
Deleted help component as it is not slated to be part of Gnome 2.
* components/Makefile.am:
* components/help/*:
* nautilus.spec.in:
Deleted help component as it is not slated to be part of Gnome 2.
* RENAMING: No need to rename hyperbola if it's gone.
* configure.in: Removed ScrollKeeper check. Took a cut at making
the medusa check use pkg-config, it's probably messed up but at
least we won't define HAVE_MEDUSA if we see the Gnome 1 medusa.
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg),
(draw_or_measure_label_text_aa), (draw_label_text_aa),
(nautilus_icon_canvas_item_class_init):
Quick cut at porting to Pango from Eel font code. It's all under
ifdef USE_EEL_TEXT because it's not working well yet. At the moment
the text looks bad, and it's very slow, and it's not centered.
* libnautilus-private/nautilus-icon-factory.c: (embed_text):
Baby steps at doing the port to Pango here too.
* src/file-manager/fm-directory-view.c: (real_update_menus):
Add a check for NULL that seems required. This change was
suggested by the backtrace in bug 66809, but it's not clear
if this really fixes anything. (Rolled from stable branch.)
* src/file-manager/fm-icon-view.c: (icon_view_handle_uri_list):
Fix code that passed a path instead of a URI when creating a
desktop file. (Rolled from stable branch.)
* TODO: Minor updates.
2001-12-13 23:37:55 +00:00
|
|
|
#include <gdk-pixbuf/gdk-pixbuf.h>
|
2008-05-21 18:19:36 +00:00
|
|
|
#include <gtk/gtk.h>
|
2005-10-28 12:41:20 +00:00
|
|
|
#include <gdk/gdk.h>
|
2006-03-18 07:13:55 +00:00
|
|
|
#include <glib/gi18n.h>
|
2002-09-26 10:07:47 +00:00
|
|
|
#include <eel/eel-canvas-util.h>
|
2002-03-27 15:23:57 +00:00
|
|
|
#include <atk/atkimage.h>
|
|
|
|
#include <atk/atkcomponent.h>
|
2002-04-11 17:13:07 +00:00
|
|
|
#include <atk/atknoopobject.h>
|
Deleted help component as it is not slated to be part of Gnome 2.
* components/Makefile.am:
* components/help/*:
* nautilus.spec.in:
Deleted help component as it is not slated to be part of Gnome 2.
* RENAMING: No need to rename hyperbola if it's gone.
* configure.in: Removed ScrollKeeper check. Took a cut at making
the medusa check use pkg-config, it's probably messed up but at
least we won't define HAVE_MEDUSA if we see the Gnome 1 medusa.
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg),
(draw_or_measure_label_text_aa), (draw_label_text_aa),
(nautilus_icon_canvas_item_class_init):
Quick cut at porting to Pango from Eel font code. It's all under
ifdef USE_EEL_TEXT because it's not working well yet. At the moment
the text looks bad, and it's very slow, and it's not centered.
* libnautilus-private/nautilus-icon-factory.c: (embed_text):
Baby steps at doing the port to Pango here too.
* src/file-manager/fm-directory-view.c: (real_update_menus):
Add a check for NULL that seems required. This change was
suggested by the backtrace in bug 66809, but it's not clear
if this really fixes anything. (Rolled from stable branch.)
* src/file-manager/fm-icon-view.c: (icon_view_handle_uri_list):
Fix code that passed a path instead of a URI when creating a
desktop file. (Rolled from stable branch.)
* TODO: Minor updates.
2001-12-13 23:37:55 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
2000-03-09 21:09:20 +00:00
|
|
|
#define EMBLEM_SPACING 2
|
2000-09-08 07:23:42 +00:00
|
|
|
|
2000-10-11 08:13:07 +00:00
|
|
|
/* gap between bottom of icon and start of text box */
|
2000-12-15 08:22:23 +00:00
|
|
|
#define LABEL_OFFSET 1
|
reviewed by Ramiro Estrugo <ramiro@eazel.com>
2001-02-28 John Harper <jsh@eazel.com>
reviewed by Ramiro Estrugo <ramiro@eazel.com>
Fixed bug 7111 (Icons appear in formation, then shift, when
page first loads). This also fixed bugs 4174 (NautilusLabel
needs to handle text with descenders better.) and 2865 (Text
underlining should honor the rendered string's baseline):
* librsvg/rsvg-ft.c (rsvg_ft_measure_or_render_string): don't
use the union of the bounding boxes of the glyphs to find the
overall bounding box, for the vertical component use the actual
font metrics. Also set the underline_position and
underline_thickness fields of the returned glyph structure
* librsvg/rsvg-ft.h (struct _RsvgFTGlyph): added two new
fields: underline_position and underline_thickness
* libnautilus-extensions/nautilus-smooth-text-layout.c
(smooth_text_layout_line_list_draw_to_pixbuf): don't just draw
the underline under the glyph's rectangle, draw it where the
glyph object wants it to be (using
nautilus_glyph_get_underline_rectangle (), which for text uses
the actual underline information from the font)
* libnautilus-extensions/nautilus-glyph.h,
libnautilus-extensions/nautilus-glyph.c
(nautilus_glyph_get_underline_rectangle): new function, fills
in an ArtIRect corresponding to the underline of the given
glyph object
* components/services/nautilus-dependent-shared/eazel-services-header.c:
* libnautilus-extensions/nautilus-tabs.c,
libnautilus-extensions/nautilus-smooth-text-layout.c,
libnautilus-extensions/nautilus-icon-canvas-item.c
* src/nautilus-sidebar-title.c, src/nautilus-sidebar-tabs.c
Tweaked a few hardcoded constants to fix minor changes in font
layout (this part was checked by Arlo)
2001-02-28 09:26:21 +00:00
|
|
|
#define LABEL_LINE_SPACING 0
|
2000-10-11 08:13:07 +00:00
|
|
|
|
2000-09-08 07:23:42 +00:00
|
|
|
#define MAX_TEXT_WIDTH_STANDARD 135
|
|
|
|
#define MAX_TEXT_WIDTH_TIGHTER 80
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
#define MAX_TEXT_WIDTH_BESIDE 90
|
2008-05-07 20:06:46 +00:00
|
|
|
#define MAX_TEXT_WIDTH_BESIDE_TOP_TO_BOTTOM 150
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
/* special text height handling
|
|
|
|
* each item has three text height variables:
|
|
|
|
* + text_height: actual height of the displayed (i.e. on-screen) PangoLayout.
|
|
|
|
* + text_height_for_layout: height used in icon grid layout algorithms.
|
|
|
|
* “sane amount” of text.
|
|
|
|
* “sane amount“ as of
|
|
|
|
* + hard-coded to three lines in text-below-icon mode.
|
|
|
|
* + unlimited in text-besides-icon mode (see VOODOO-TODO)
|
|
|
|
*
|
|
|
|
* This layout height is used by grid layout algorithms, even
|
|
|
|
* though the actually displayed and/or requested text size may be larger
|
|
|
|
* and overlap adjacent icons, if an icon is selected.
|
|
|
|
*
|
|
|
|
* + text_height_for_entire_text: height needed to display the entire PangoLayout,
|
|
|
|
* if it wasn't ellipsized.
|
|
|
|
*/
|
|
|
|
|
2000-03-22 00:29:07 +00:00
|
|
|
/* Private part of the NautilusIconCanvasItem structure. */
|
|
|
|
struct NautilusIconCanvasItemDetails {
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
/* The image, text, font. */
|
2002-09-26 10:07:47 +00:00
|
|
|
double x, y;
|
2000-01-25 21:17:05 +00:00
|
|
|
GdkPixbuf *pixbuf;
|
2001-04-19 22:42:48 +00:00
|
|
|
GdkPixbuf *rendered_pixbuf;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
GList *emblem_pixbufs;
|
2000-04-17 21:07:33 +00:00
|
|
|
char *editable_text; /* Text that can be modified by a renaming function */
|
Support for icon selection by typing the item's name. Initialize and flush
2000-05-08 Pavel <pavel@eazel.com>
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-private.h:
(match_best_name), (select_matching_name), (destroy),
(button_press_event), (nautilus_icon_container_almost_drag),
(nautilus_icon_container_flush_typeselect_state),
(nautilus_icon_container_handle_typeahead), (key_press_event),
(nautilus_icon_container_initialize):
Support for icon selection by typing the item's name. Initialize
and flush the new typeselect state properly. Rework key_press_event
a little bit to make it easier to call the inherited key_press call
when we did not handle the keyboard event ourselves.
* libnautilus-extensions/nautilus-icon-container.c:
(select_previous_or_next_name), (compare_icons_by_name),
(build_sorted_icon_list):
Support for selecting next/previous icon alphabetically using
Tab and Shift-Tab.
* libnautilus-extensions/nautilus-icon-container.c:
(find_best_icon), (find_best_selected_icon), (leftmost_in_top_row),
(rightmost_in_bottom_row), (same_row_right_side_leftmost),
(same_row_left_side_rightmost), (same_column_above_lowest),
(same_column_below_highest), (keyboard_home), (keyboard_end),
(keyboard_arrow_key):
Add data parameter to find_best_icon and find_best_selected_icon
to allow using more complicated match predicates.
* libnautilus-extensions/nautilus-glib-extensions.c:
* libnautilus-extensions/nautilus-glib-extensions.h:
(nautilus_g_list_copy):
Add a list shallow copy utility call.
* libnautilus-extensions/nautilus-glib-extensions.c:
* libnautilus-extensions/nautilus-glib-extensions.h:
(nautilus_get_system_time), (nautilus_self_check_glib_extensions)
Add a utility call to get the system time in microseconds.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
Fix a typo.
* libnautilus-extensions/nautilus-icon-container.c:
(nautilus_icon_container_start_renaming_selected_item):
Fix white space.
2000-05-08 08:44:22 +00:00
|
|
|
char *additional_text; /* Text that cannot be modifed, such as file size, etc. */
|
2007-11-30 14:51:10 +00:00
|
|
|
GdkPoint *attach_points;
|
|
|
|
int n_attach_points;
|
2000-01-25 21:17:05 +00:00
|
|
|
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
/* Size of the text at current font. */
|
2006-04-26 14:53:06 +00:00
|
|
|
int text_dx;
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
int text_width;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
|
|
|
|
/* actual size required for rendering the text to display */
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
int text_height;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
/* actual size that would be required for rendering the entire text if it wasn't ellipsized */
|
|
|
|
int text_height_for_entire_text;
|
|
|
|
/* actual size needed for rendering a “sane amount” of text */
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
int text_height_for_layout;
|
2008-08-18 23:06:36 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
int editable_text_height;
|
|
|
|
|
2008-08-18 23:06:36 +00:00
|
|
|
/* whether the entire text must always be visible. In that case,
|
|
|
|
* text_height_for_layout will always be equal to text_height.
|
|
|
|
* Used for the last line of a line-wise icon layout. */
|
|
|
|
guint entire_text : 1;
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2000-05-31 05:28:31 +00:00
|
|
|
/* preview state */
|
2000-06-23 17:51:53 +00:00
|
|
|
guint is_active : 1;
|
2000-05-31 05:28:31 +00:00
|
|
|
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
/* Highlight state. */
|
|
|
|
guint is_highlighted_for_selection : 1;
|
2000-03-21 23:18:01 +00:00
|
|
|
guint is_highlighted_as_keyboard_focus: 1;
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
guint is_highlighted_for_drop : 1;
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
guint show_stretch_handles : 1;
|
2000-03-09 03:09:37 +00:00
|
|
|
guint is_prelit : 1;
|
2001-04-19 22:42:48 +00:00
|
|
|
|
|
|
|
guint rendered_is_active : 1;
|
|
|
|
guint rendered_is_highlighted_for_selection : 1;
|
|
|
|
guint rendered_is_highlighted_for_drop : 1;
|
|
|
|
guint rendered_is_prelit : 1;
|
2003-06-29 18:03:21 +00:00
|
|
|
guint rendered_is_focused : 1;
|
2000-05-30 06:51:37 +00:00
|
|
|
|
2002-07-10 19:37:49 +00:00
|
|
|
guint is_renaming : 1;
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
|
|
|
|
guint bounds_cached : 1;
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
guint is_visible : 1;
|
|
|
|
|
|
|
|
GdkRectangle embedded_text_rect;
|
|
|
|
char *embedded_text;
|
|
|
|
|
|
|
|
/* Cached PangoLayouts. Only used if the icon is visible */
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
PangoLayout *editable_text_layout;
|
|
|
|
PangoLayout *additional_text_layout;
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
PangoLayout *embedded_text_layout;
|
|
|
|
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
/* Cached rectangle in canvas coordinates */
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect canvas_rect;
|
|
|
|
EelIRect text_rect;
|
|
|
|
EelIRect emblem_rect;
|
2002-04-04 11:35:41 +00:00
|
|
|
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect bounds_cache;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
EelIRect bounds_cache_for_layout;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
EelIRect bounds_cache_for_entire_item;
|
|
|
|
|
2002-04-04 11:35:41 +00:00
|
|
|
/* Accessibility bits */
|
|
|
|
GailTextUtil *text_util;
|
2000-01-31 01:30:16 +00:00
|
|
|
};
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
/* Object argument IDs. */
|
2000-01-25 21:17:05 +00:00
|
|
|
enum {
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
PROP_0,
|
|
|
|
PROP_EDITABLE_TEXT,
|
|
|
|
PROP_ADDITIONAL_TEXT,
|
|
|
|
PROP_HIGHLIGHTED_FOR_SELECTION,
|
|
|
|
PROP_HIGHLIGHTED_AS_KEYBOARD_FOCUS,
|
2003-04-23 09:50:03 +00:00
|
|
|
PROP_HIGHLIGHTED_FOR_DROP
|
2000-01-25 21:17:05 +00:00
|
|
|
};
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
typedef enum {
|
|
|
|
RIGHT_SIDE,
|
|
|
|
BOTTOM_SIDE,
|
|
|
|
LEFT_SIDE,
|
|
|
|
TOP_SIDE
|
|
|
|
} RectangleSide;
|
|
|
|
|
2003-11-19 11:07:46 +00:00
|
|
|
enum {
|
|
|
|
ACTION_OPEN,
|
|
|
|
ACTION_MENU,
|
|
|
|
LAST_ACTION
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
char *action_descriptions[LAST_ACTION];
|
2003-12-03 09:51:56 +00:00
|
|
|
char *image_description;
|
|
|
|
char *description;
|
2003-11-19 11:07:46 +00:00
|
|
|
} NautilusIconCanvasItemAccessiblePrivate;
|
|
|
|
|
2004-01-27 13:31:49 +00:00
|
|
|
typedef struct {
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
gint action_number;
|
|
|
|
} NautilusIconCanvasItemAccessibleActionContext;
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
typedef struct {
|
2000-03-22 00:29:07 +00:00
|
|
|
NautilusIconCanvasItem *icon_item;
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect icon_rect;
|
2000-03-07 01:10:04 +00:00
|
|
|
RectangleSide side;
|
|
|
|
int position;
|
2000-08-02 08:11:46 +00:00
|
|
|
int index;
|
2000-03-07 01:10:04 +00:00
|
|
|
GList *emblem;
|
|
|
|
} EmblemLayout;
|
|
|
|
|
reviewed by: Darin Adler <darin@eazel.com>
Fixed bug 7913 (fm_get_text_attribute_names_preference
should cache preference value for speed)
Fixed bug 7914 (nautilus_icon_canvas_item_initialize
should cache smooth_font for speed)
Added a new way to stay up-to-date with the value of a
preference: you register a (typically global) variable
with a particular preference, and the preferences machinery
updates its value automatically whenever the preference
changes. This is a replacement for using
nautilus_preferences_get (and _get_integer and _get_boolean)
repeatedly, and is much more efficient. We might eventually
replace all the callers of _get_xxx with calls to this, and
remove those calls entirely.
I deployed this in the two specific cases Pavel found with
profiling (bugs 7913 & 7914) and some more places. I'll
deploy it in more places still later.
* libnautilus-extensions/nautilus-preferences.h:
* libnautilus-extensions/nautilus-preferences.c:
(update_auto_string), (update_auto_integer_or_boolean):
New helper functions to update an individual auto-storage variable.
(preferences_entry_update_auto_storage): New function, updates
all auto-storage variables for a particular preference.
(preferences_something_changed_notice): update auto-storage variables
before calling callbacks.
(preferences_entry_ensure_gconf_connection): New function, extracted
from preferences_entry_add_callback.
(preferences_entry_add_callback): Now calls extracted function.
(preferences_entry_add_auto_storage): New function, adds a single
auto-storage variable for a given preference.
(preferences_entry_check_remove_connection): New function, extracted
from preferences_entry_remove_callback.
(preferences_entry_remove_callback): Now calls extracted function.
(preferences_entry_remove_auto_storage): New function, removes a single
auto-storage variable for a given preference.
(preferences_entry_free): Free the auto-storage list.
(nautilus_preferences_add_auto_string),
(nautilus_preferences_add_auto_integer),
(nautilus_preferences_add_auto_boolean),
(nautilus_preferences_remove_auto_string),
(nautilus_preferences_remove_auto_integer),
(nautilus_preferences_remove_auto_boolean): Public cover functions
for the three basic types of auto-storage variables.
(nautilus_preferences_remove_callback): Fixed small bug where this
function would unnecessarily add an entry before removing it.
* libnautilus-extensions/nautilus-font-factory.c:
(nautilus_font_factory_get_font_from_preferences):
Reworked to use auto-storage variable.
* libnautilus-extensions/nautilus-global-preferences.c:
(nautilus_global_preferences_initialize): Set up auto-storage
variables for icon view & default smooth font preferences.
(global_preferences_get_smooth_font),
(global_preferences_get_smooth_bold_font): Changed to take
font file name instead of preferences name.
(nautilus_global_preferences_get_icon_view_smooth_font),
(nautilus_global_preferences_get_default_smooth_font),
(nautilus_global_preferences_get_default_smooth_bold_font):
Use auto-storage variables.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_initialize_class): Set up
auto-storage variable for click policy preference.
(in_single_click_mode): Use auto-storage variable.
* libnautilus-extensions/nautilus-icon-factory.c:
(should_display_image_file_as_itself): Use auto-storage
variable for thumbnail policy.
* src/file-manager/fm-icon-text-window.c:
(fm_get_text_attribute_names_preference): Use auto-storage
variable for icon captions.
* src/file-manager/fm-icon-view.c:
(should_preview_sound): Use auto-storage variable for
sound-preview preference.
(fm_icon_view_initialize_class): Set up auto-storage variable
for sound-preview preference.
2001-03-30 20:52:36 +00:00
|
|
|
static int click_policy_auto_value;
|
|
|
|
|
Use G_DEFINE_TYPE_* instead of hand-written nautilus_foo_get_type()
2009-02-02 Cosimo Cecchi <cosimoc@pluto>
* libnautilus-extension/nautilus-column.c:
(nautilus_column_finalize), (nautilus_column_init),
(nautilus_column_class_init):
* libnautilus-extension/nautilus-menu.c: (nautilus_menu_finalize):
* libnautilus-private/nautilus-cell-renderer-pixbuf-emblem.c:
(nautilus_cell_renderer_pixbuf_emblem_class_init),
(nautilus_cell_renderer_pixbuf_emblem_finalize):
* libnautilus-private/nautilus-cell-renderer-text-ellipsized.c:
(nautilus_cell_renderer_text_ellipsized_init),
(nautilus_cell_renderer_text_ellipsized_class_init),
(nautilus_cell_renderer_text_ellipsized_get_size):
* libnautilus-private/nautilus-entry.c: (nautilus_entry_finalize),
(nautilus_entry_key_press), (nautilus_entry_motion_notify),
(nautilus_entry_button_press), (nautilus_entry_button_release),
(nautilus_entry_selection_clear), (nautilus_entry_class_init):
* libnautilus-private/nautilus-file.c: (nautilus_file_init),
(nautilus_file_constructor), (finalize),
(nautilus_file_class_init):
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_update),
(nautilus_icon_canvas_item_class_init):
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_new):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-mime-application-chooser.c:
(nautilus_mime_application_chooser_finalize),
(nautilus_mime_application_chooser_destroy),
(nautilus_mime_application_chooser_class_init),
(nautilus_mime_application_chooser_init):
* libnautilus-private/nautilus-open-with-dialog.c:
(nautilus_open_with_dialog_finalize),
(nautilus_open_with_dialog_destroy),
(nautilus_open_with_dialog_class_init),
(nautilus_open_with_dialog_init):
* src/file-manager/fm-icon-container.c:
* src/file-manager/fm-list-model.c: (fm_list_model_dispose),
(fm_list_model_finalize), (fm_list_model_class_init):
* src/file-manager/fm-tree-model.c: (fm_tree_model_finalize),
(fm_tree_model_class_init):
Use G_DEFINE_TYPE_* instead of hand-written nautilus_foo_get_type()
functions where possible.
svn path=/trunk/; revision=14911
2009-02-02 16:47:17 +00:00
|
|
|
static void nautilus_icon_canvas_item_text_interface_init (EelAccessibleTextIface *iface);
|
|
|
|
|
|
|
|
G_DEFINE_TYPE_WITH_CODE (NautilusIconCanvasItem, nautilus_icon_canvas_item, EEL_TYPE_CANVAS_ITEM,
|
|
|
|
G_IMPLEMENT_INTERFACE (EEL_TYPE_ACCESSIBLE_TEXT,
|
|
|
|
nautilus_icon_canvas_item_text_interface_init));
|
2000-09-06 05:19:59 +00:00
|
|
|
|
2000-01-31 22:25:21 +00:00
|
|
|
/* private */
|
2001-11-06 20:43:44 +00:00
|
|
|
static void draw_label_text (NautilusIconCanvasItem *item,
|
|
|
|
GdkDrawable *drawable,
|
2004-10-22 15:44:16 +00:00
|
|
|
gboolean create_mask,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect icon_rect);
|
2001-11-06 20:43:44 +00:00
|
|
|
static void measure_label_text (NautilusIconCanvasItem *item);
|
|
|
|
static void get_icon_canvas_rectangle (NautilusIconCanvasItem *item,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect *rect);
|
2001-11-06 20:43:44 +00:00
|
|
|
static void emblem_layout_reset (EmblemLayout *layout,
|
|
|
|
NautilusIconCanvasItem *icon_item,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect icon_rect,
|
2007-11-12 10:15:05 +00:00
|
|
|
gboolean is_rtl);
|
2001-11-06 20:43:44 +00:00
|
|
|
static gboolean emblem_layout_next (EmblemLayout *layout,
|
|
|
|
GdkPixbuf **emblem_pixbuf,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect *emblem_rect,
|
2007-11-12 10:15:05 +00:00
|
|
|
gboolean is_rtl);
|
2001-11-06 20:43:44 +00:00
|
|
|
static void draw_pixbuf (GdkPixbuf *pixbuf,
|
|
|
|
GdkDrawable *drawable,
|
|
|
|
int x,
|
|
|
|
int y);
|
2002-01-17 22:26:06 +00:00
|
|
|
static PangoLayout *get_label_layout (PangoLayout **layout,
|
|
|
|
NautilusIconCanvasItem *item,
|
|
|
|
const char *text);
|
|
|
|
static void draw_label_layout (NautilusIconCanvasItem *item,
|
|
|
|
GdkDrawable *drawable,
|
|
|
|
PangoLayout *layout,
|
|
|
|
gboolean highlight,
|
2002-06-01 00:05:49 +00:00
|
|
|
GdkColor *label_color,
|
2002-01-17 22:26:06 +00:00
|
|
|
int x,
|
|
|
|
int y,
|
|
|
|
GdkGC *gc);
|
2001-11-06 20:43:44 +00:00
|
|
|
static gboolean hit_test_stretch_handle (NautilusIconCanvasItem *item,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect canvas_rect,
|
2005-10-28 12:41:20 +00:00
|
|
|
GtkCornerType *corner);
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
static void draw_embedded_text (NautilusIconCanvasItem *icon_item,
|
|
|
|
GdkDrawable *drawable,
|
|
|
|
int x,
|
|
|
|
int y);
|
2002-01-17 22:26:06 +00:00
|
|
|
|
2006-11-30 11:10:31 +00:00
|
|
|
static GdkPixbuf *nautilus_icon_canvas_lighten_pixbuf (GdkPixbuf* src, guint lighten_value);
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
static void nautilus_icon_canvas_item_ensure_bounds_up_to_date (NautilusIconCanvasItem *icon_item);
|
2006-11-30 11:10:31 +00:00
|
|
|
|
2002-04-04 11:35:41 +00:00
|
|
|
|
2003-03-19 09:09:06 +00:00
|
|
|
static gpointer accessible_parent_class = NULL;
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2003-11-19 11:07:46 +00:00
|
|
|
static GQuark accessible_private_data_quark = 0;
|
|
|
|
|
|
|
|
static const char *nautilus_icon_canvas_item_accessible_action_names[] = {
|
|
|
|
"open",
|
|
|
|
"menu",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
static const char *nautilus_icon_canvas_item_accessible_action_descriptions[] = {
|
|
|
|
"Open item",
|
|
|
|
"Popup context menu",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
/* Object initialization function for the icon item. */
|
2000-01-25 21:17:05 +00:00
|
|
|
static void
|
2001-10-28 20:21:52 +00:00
|
|
|
nautilus_icon_canvas_item_init (NautilusIconCanvasItem *icon_item)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
2002-03-26 19:24:11 +00:00
|
|
|
static gboolean setup_auto_enums = FALSE;
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2002-03-26 19:24:11 +00:00
|
|
|
if (!setup_auto_enums) {
|
|
|
|
eel_preferences_add_auto_enum
|
|
|
|
(NAUTILUS_PREFERENCES_CLICK_POLICY,
|
|
|
|
&click_policy_auto_value);
|
|
|
|
setup_auto_enums = TRUE;
|
|
|
|
}
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
icon_item->details = G_TYPE_INSTANCE_GET_PRIVATE ((icon_item), NAUTILUS_TYPE_ICON_CANVAS_ITEM, NautilusIconCanvasItemDetails);
|
2001-01-11 21:53:58 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_label_size (icon_item);
|
2000-01-25 21:17:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-11-06 20:43:44 +00:00
|
|
|
nautilus_icon_canvas_item_finalize (GObject *object)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
2000-03-22 00:29:07 +00:00
|
|
|
NautilusIconCanvasItemDetails *details;
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (NAUTILUS_IS_ICON_CANVAS_ITEM (object));
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2001-11-06 20:43:44 +00:00
|
|
|
details = NAUTILUS_ICON_CANVAS_ITEM (object)->details;
|
2000-01-25 21:17:05 +00:00
|
|
|
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
if (details->pixbuf != NULL) {
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_unref (details->pixbuf);
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
2002-04-04 11:35:41 +00:00
|
|
|
|
|
|
|
if (details->text_util != NULL) {
|
|
|
|
g_object_unref (details->text_util);
|
|
|
|
}
|
|
|
|
|
2001-04-04 00:07:15 +00:00
|
|
|
eel_gdk_pixbuf_list_free (details->emblem_pixbufs);
|
2000-04-17 21:07:33 +00:00
|
|
|
g_free (details->editable_text);
|
|
|
|
g_free (details->additional_text);
|
Fixed bug 640 (icon cache never frees images (awaiting GdkPixbuf
fix)). Also took care of bug 3145 (zillions of 'main_loops !=
NULL' assertion failures when quitting) and bug 3138 (Some code in
the icon factory is cut and pasted from elsewhere). And a few
unrelated things that came up while I was busy working on these.
* configure.in: Applied patch from Dan Winship to fix handling of
CFLAGS and LDFLAGS. Fixes some missing quoting and other mistakes.
* libnautilus-extensions/Makefile.am:
* libnautilus-extensions/nautilus-icon-factory-private.h:
* libnautilus-extensions/nautilus-thumbnails.c:
* libnautilus-extensions/nautilus-thumbnails.h:
Broke out the thumbnailing code into its own source file for
clarity.
* libnautilus-extensions/nautilus-directory.c:
* libnautilus-extensions/nautilus-file-utilities.h:
* libnautilus-extensions/nautilus-file-utilities.c:
(nautilus_make_directory_and_parents):
Moved nautilus_make_directory_and_parents into a place where the
thumbnail code can share it instead of requiring its own copy.
* libnautilus-extensions/nautilus-global-preferences.h:
* libnautilus-extensions/nautilus-global-preferences.c:
(destroy_global_prefs_dialog), (global_preferences_get_dialog),
(nautilus_global_preferences_dialog_update),
(nautilus_global_preferences_initialize):
* libnautilus-extensions/nautilus-preferences.h:
* libnautilus-extensions/nautilus-preferences.c:
(preferences_initialize_if_needed), (preferences_shutdown):
* src/nautilus-application.c: (nautilus_application_destroy):
Changed code so that it cleans up with g_atexit instead of with an
explicit shutdown call. This makes it sequence correctly with
other atexit code.
* libnautilus-extensions/nautilus-icon-canvas-item.h:
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_destroy),
(nautilus_icon_canvas_item_set_attach_points),
(emblem_layout_next):
* libnautilus-extensions/nautilus-icon-container.c:
(nautilus_icon_container_update_icon):
Added a Nautilus prefix to the EmblemAttachPoints typedef, since
it's public.
* libnautilus-extensions/nautilus-icon-factory.h:
* libnautilus-extensions/nautilus-icon-factory.c:
Changed the icon factory structure so that it will actually free
pixbufs when done with them. Made some other small fixes to the
icon factory in passing, including removing some redundant code
and fixing the logic for getting custom icons and deleting the
icon factory and g_atexit time.
* src/file-manager/fm-icon-view.c: (play_file), (preview_sound):
Restructured the logic for playing sound previews a little to get
rid of compiler warnings and close some loopholes in the old code.
* src/nautilus-main.c: (is_event_loop_needed),
(quit_if_in_main_loop), (nautilus_gtk_main_quit_all),
(event_loop_unregister), (nautilus_main_event_loop_register),
(nautilus_main_is_event_loop_mainstay),
(nautilus_main_event_loop_quit), (main): Fixed the main loop
quitting logic so that it is a bit simpler and works with the
gnome-vfs code that runs event handling after the last main loop
is gone.
2000-09-20 00:44:07 +00:00
|
|
|
g_free (details->attach_points);
|
2000-08-02 08:11:46 +00:00
|
|
|
|
2001-04-19 22:42:48 +00:00
|
|
|
if (details->rendered_pixbuf != NULL) {
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_unref (details->rendered_pixbuf);
|
2001-04-19 22:42:48 +00:00
|
|
|
}
|
2002-04-17 12:29:11 +00:00
|
|
|
|
|
|
|
if (details->editable_text_layout != NULL) {
|
|
|
|
g_object_unref (details->editable_text_layout);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (details->additional_text_layout != NULL) {
|
|
|
|
g_object_unref (details->additional_text_layout);
|
|
|
|
}
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
|
|
|
|
if (details->embedded_text_layout != NULL) {
|
|
|
|
g_object_unref (details->embedded_text_layout);
|
|
|
|
}
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
g_free (details->embedded_text);
|
Use G_DEFINE_TYPE_* instead of hand-written nautilus_foo_get_type()
2009-02-02 Cosimo Cecchi <cosimoc@pluto>
* libnautilus-extension/nautilus-column.c:
(nautilus_column_finalize), (nautilus_column_init),
(nautilus_column_class_init):
* libnautilus-extension/nautilus-menu.c: (nautilus_menu_finalize):
* libnautilus-private/nautilus-cell-renderer-pixbuf-emblem.c:
(nautilus_cell_renderer_pixbuf_emblem_class_init),
(nautilus_cell_renderer_pixbuf_emblem_finalize):
* libnautilus-private/nautilus-cell-renderer-text-ellipsized.c:
(nautilus_cell_renderer_text_ellipsized_init),
(nautilus_cell_renderer_text_ellipsized_class_init),
(nautilus_cell_renderer_text_ellipsized_get_size):
* libnautilus-private/nautilus-entry.c: (nautilus_entry_finalize),
(nautilus_entry_key_press), (nautilus_entry_motion_notify),
(nautilus_entry_button_press), (nautilus_entry_button_release),
(nautilus_entry_selection_clear), (nautilus_entry_class_init):
* libnautilus-private/nautilus-file.c: (nautilus_file_init),
(nautilus_file_constructor), (finalize),
(nautilus_file_class_init):
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_update),
(nautilus_icon_canvas_item_class_init):
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_new):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-mime-application-chooser.c:
(nautilus_mime_application_chooser_finalize),
(nautilus_mime_application_chooser_destroy),
(nautilus_mime_application_chooser_class_init),
(nautilus_mime_application_chooser_init):
* libnautilus-private/nautilus-open-with-dialog.c:
(nautilus_open_with_dialog_finalize),
(nautilus_open_with_dialog_destroy),
(nautilus_open_with_dialog_class_init),
(nautilus_open_with_dialog_init):
* src/file-manager/fm-icon-container.c:
* src/file-manager/fm-list-model.c: (fm_list_model_dispose),
(fm_list_model_finalize), (fm_list_model_class_init):
* src/file-manager/fm-tree-model.c: (fm_tree_model_finalize),
(fm_tree_model_class_init):
Use G_DEFINE_TYPE_* instead of hand-written nautilus_foo_get_type()
functions where possible.
svn path=/trunk/; revision=14911
2009-02-02 16:47:17 +00:00
|
|
|
|
|
|
|
G_OBJECT_CLASS (nautilus_icon_canvas_item_parent_class)->finalize (object);
|
2000-01-25 21:17:05 +00:00
|
|
|
}
|
|
|
|
|
2000-03-06 22:09:29 +00:00
|
|
|
/* Currently we require pixbufs in this format (for hit testing).
|
|
|
|
* Perhaps gdk-pixbuf will be changed so it can do the hit testing
|
|
|
|
* and we won't have this requirement any more.
|
|
|
|
*/
|
|
|
|
static gboolean
|
|
|
|
pixbuf_is_acceptable (GdkPixbuf *pixbuf)
|
|
|
|
{
|
2000-04-11 15:11:19 +00:00
|
|
|
return gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB
|
2000-03-29 02:02:45 +00:00
|
|
|
&& ((!gdk_pixbuf_get_has_alpha (pixbuf)
|
|
|
|
&& gdk_pixbuf_get_n_channels (pixbuf) == 3)
|
|
|
|
|| (gdk_pixbuf_get_has_alpha (pixbuf)
|
|
|
|
&& gdk_pixbuf_get_n_channels (pixbuf) == 4))
|
2000-03-07 01:10:04 +00:00
|
|
|
&& gdk_pixbuf_get_bits_per_sample (pixbuf) == 8;
|
2000-03-06 22:09:29 +00:00
|
|
|
}
|
|
|
|
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_invalidate_bounds_cache (NautilusIconCanvasItem *item)
|
|
|
|
{
|
|
|
|
item->details->bounds_cached = FALSE;
|
|
|
|
}
|
|
|
|
|
2001-01-11 21:53:58 +00:00
|
|
|
/* invalidate the text width and height cached in the item details. */
|
|
|
|
void
|
|
|
|
nautilus_icon_canvas_item_invalidate_label_size (NautilusIconCanvasItem *item)
|
2000-12-15 21:09:39 +00:00
|
|
|
{
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_bounds_cache (item);
|
2000-12-15 21:09:39 +00:00
|
|
|
item->details->text_width = -1;
|
|
|
|
item->details->text_height = -1;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
item->details->text_height_for_layout = -1;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
item->details->text_height_for_entire_text = -1;
|
|
|
|
item->details->editable_text_height = -1;
|
2000-12-15 21:09:39 +00:00
|
|
|
}
|
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
/* Set property handler for the icon item. */
|
2000-01-25 21:17:05 +00:00
|
|
|
static void
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
nautilus_icon_canvas_item_set_property (GObject *object,
|
|
|
|
guint property_id,
|
|
|
|
const GValue *value,
|
|
|
|
GParamSpec *pspec)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
2000-12-15 21:09:39 +00:00
|
|
|
NautilusIconCanvasItem *item;
|
2000-03-22 00:29:07 +00:00
|
|
|
NautilusIconCanvasItemDetails *details;
|
2000-01-25 21:17:05 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
item = NAUTILUS_ICON_CANVAS_ITEM (object);
|
2000-12-15 21:09:39 +00:00
|
|
|
details = item->details;
|
2000-01-25 21:17:05 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
switch (property_id) {
|
2000-01-25 21:17:05 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_EDITABLE_TEXT:
|
|
|
|
if (eel_strcmp (details->editable_text,
|
|
|
|
g_value_get_string (value)) == 0) {
|
2000-04-17 21:07:33 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
g_free (details->editable_text);
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
details->editable_text = g_strdup (g_value_get_string (value));
|
2002-04-04 11:35:41 +00:00
|
|
|
if (details->text_util) {
|
2006-11-23 14:08:43 +00:00
|
|
|
AtkObject *accessible;
|
|
|
|
|
2002-04-04 11:35:41 +00:00
|
|
|
gail_text_util_text_setup (details->text_util,
|
|
|
|
details->editable_text);
|
2006-11-23 14:08:43 +00:00
|
|
|
accessible = eel_accessibility_get_atk_object (item);
|
|
|
|
g_object_notify (G_OBJECT(accessible), "accessible-name");
|
2002-04-04 11:35:41 +00:00
|
|
|
}
|
2000-12-15 21:09:39 +00:00
|
|
|
|
2002-04-04 11:35:41 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_label_size (item);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
if (details->editable_text_layout) {
|
|
|
|
g_object_unref (details->editable_text_layout);
|
|
|
|
details->editable_text_layout = NULL;
|
|
|
|
}
|
2000-04-17 21:07:33 +00:00
|
|
|
break;
|
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_ADDITIONAL_TEXT:
|
|
|
|
if (eel_strcmp (details->additional_text,
|
|
|
|
g_value_get_string (value)) == 0) {
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
return;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2000-04-17 21:07:33 +00:00
|
|
|
g_free (details->additional_text);
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
details->additional_text = g_strdup (g_value_get_string (value));
|
2000-12-15 21:09:39 +00:00
|
|
|
|
2001-01-11 21:53:58 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_label_size (item);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
if (details->additional_text_layout) {
|
|
|
|
g_object_unref (details->additional_text_layout);
|
|
|
|
details->additional_text_layout = NULL;
|
|
|
|
}
|
2000-01-25 21:17:05 +00:00
|
|
|
break;
|
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_HIGHLIGHTED_FOR_SELECTION:
|
|
|
|
if (!details->is_highlighted_for_selection == !g_value_get_boolean (value)) {
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
return;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
details->is_highlighted_for_selection = g_value_get_boolean (value);
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_label_size (item);
|
2000-01-25 21:17:05 +00:00
|
|
|
break;
|
2000-01-26 00:29:08 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_HIGHLIGHTED_AS_KEYBOARD_FOCUS:
|
|
|
|
if (!details->is_highlighted_as_keyboard_focus == !g_value_get_boolean (value)) {
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
return;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
details->is_highlighted_as_keyboard_focus = g_value_get_boolean (value);
|
2002-04-04 11:35:41 +00:00
|
|
|
|
|
|
|
if (details->is_highlighted_as_keyboard_focus) {
|
|
|
|
AtkObject *atk_object = eel_accessibility_for_object (object);
|
|
|
|
atk_focus_tracker_notify (atk_object);
|
|
|
|
}
|
2000-01-26 00:29:08 +00:00
|
|
|
break;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_HIGHLIGHTED_FOR_DROP:
|
|
|
|
if (!details->is_highlighted_for_drop == !g_value_get_boolean (value)) {
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
return;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
details->is_highlighted_for_drop = g_value_get_boolean (value);
|
2000-01-25 21:17:05 +00:00
|
|
|
break;
|
Let "Loading" and "Empty" special nodes be italic.
2002-02-25 Anders Carlsson <andersca@gnu.org>
* components/tree/nautilus-tree-model.c:
(nautilus_tree_model_get_column_type),
(nautilus_tree_model_get_value):
* components/tree/nautilus-tree-model.h:
* components/tree/nautilus-tree-view.c: (create_tree):
Let "Loading" and "Empty" special nodes be italic.
* libnautilus-private/nautilus-global-preferences.c:
(default_font_callback):
Return "sans" here instead of "fixed"
* libnautilus-private/nautilus-icon-canvas-item.c:
(draw_or_measure_label_text), (create_label_layout),
Set font from icon container name, use gdk_gc_set_rgb_fg_color.
* libnautilus-private/nautilus-icon-container.c: (finalize):
(realize), (nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_zoom_level),
(nautilus_icon_container_request_update_all),
(nautilus_icon_container_get_label_color), (update_label_color),
(nautilus_icon_container_theme_changed),
(nautilus_icon_container_set_font_name),
(nautilus_icon_container_set_font_size_table):
Add support for setting fonts, and fix some bugs with the
label color handling.
* libnautilus-private/nautilus-icon-container.h:
Add nautilus_icon_container_set_font_name and
nautilus_icon_container_set_font_size_table.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Set the font of the embedded text to the default font.
* libnautilus-private/nautilus-icon-private.h:
Add font name and font size table variables to
NautilusIconContainerDetails.
* libnautilus-private/nautilus-program-chooser.c:
(nautilus_program_chooser_init):
Fix button ordering according to the HIG.
* src/file-manager/fm-icon-view.c:
(fm_icon_view_update_icon_container_fonts),
(fm_icon_view_update_icon_container_font_size_table):
Set font name and font size table in the icon container.
* src/nautilus-sidebar-tabs.c:
(nautilus_sidebar_tabs_load_theme_data),
(default_font_changed_callback), (nautilus_sidebar_tabs_init),
(nautilus_sidebar_tabs_destroy), (draw_one_tab_plain),
(draw_one_tab_themed):
Use the "default font" preference.
* src/nautilus-sidebar-title.c:
(nautilus_sidebar_title_class_init),
(default_font_changed_callback), (nautilus_sidebar_title_init),
(nautilus_sidebar_title_destroy), (update_title_font):
Use the "default font" preference.
* src/nautilus-window-menus.c: (help_menu_about_nautilus_callback):
Use the GnomeAbout widget.
2002-02-25 21:05:57 +00:00
|
|
|
|
2000-01-25 21:17:05 +00:00
|
|
|
default:
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
g_warning ("nautilus_icons_view_item_item_set_arg on unknown argument");
|
|
|
|
return;
|
2000-01-25 21:17:05 +00:00
|
|
|
}
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_item_request_update (EEL_CANVAS_ITEM (object));
|
2000-01-25 21:17:05 +00:00
|
|
|
}
|
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
/* Get property handler for the icon item */
|
2000-01-25 21:17:05 +00:00
|
|
|
static void
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
nautilus_icon_canvas_item_get_property (GObject *object,
|
|
|
|
guint property_id,
|
|
|
|
GValue *value,
|
|
|
|
GParamSpec *pspec)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
2000-03-22 00:29:07 +00:00
|
|
|
NautilusIconCanvasItemDetails *details;
|
2000-01-31 01:30:16 +00:00
|
|
|
|
2000-03-22 00:29:07 +00:00
|
|
|
details = NAUTILUS_ICON_CANVAS_ITEM (object)->details;
|
2000-01-25 21:17:05 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
switch (property_id) {
|
2000-01-31 01:30:16 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_EDITABLE_TEXT:
|
|
|
|
g_value_set_string (value, details->editable_text);
|
2000-04-17 21:07:33 +00:00
|
|
|
break;
|
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_ADDITIONAL_TEXT:
|
|
|
|
g_value_set_string (value, details->additional_text);
|
2000-01-25 21:17:05 +00:00
|
|
|
break;
|
2000-01-31 01:30:16 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_HIGHLIGHTED_FOR_SELECTION:
|
|
|
|
g_value_set_boolean (value, details->is_highlighted_for_selection);
|
2000-01-25 21:17:05 +00:00
|
|
|
break;
|
2000-01-31 01:30:16 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_HIGHLIGHTED_AS_KEYBOARD_FOCUS:
|
|
|
|
g_value_set_boolean (value, details->is_highlighted_as_keyboard_focus);
|
2000-01-26 00:29:08 +00:00
|
|
|
break;
|
2000-01-31 01:30:16 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
case PROP_HIGHLIGHTED_FOR_DROP:
|
|
|
|
g_value_set_boolean (value, details->is_highlighted_for_drop);
|
2000-01-25 21:17:05 +00:00
|
|
|
break;
|
2000-09-06 05:19:59 +00:00
|
|
|
|
2000-01-25 21:17:05 +00:00
|
|
|
default:
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
g_warning ("invalid property %d", property_id);
|
2000-01-25 21:17:05 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2004-10-22 15:44:16 +00:00
|
|
|
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
GdkPixmap *
|
|
|
|
nautilus_icon_canvas_item_get_image (NautilusIconCanvasItem *item,
|
2008-02-13 14:12:06 +00:00
|
|
|
GdkBitmap **mask,
|
|
|
|
GdkColormap *colormap)
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
{
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
GdkPixmap *pixmap;
|
|
|
|
EelCanvas *canvas;
|
2004-10-22 15:44:16 +00:00
|
|
|
GdkScreen *screen;
|
|
|
|
GdkGC *gc;
|
|
|
|
int width, height;
|
|
|
|
int item_offset_x, item_offset_y;
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect icon_rect;
|
|
|
|
EelIRect emblem_rect;
|
2004-10-22 15:44:16 +00:00
|
|
|
GdkPixbuf *pixbuf;
|
2005-09-26 15:18:33 +00:00
|
|
|
GdkPixbuf *emblem_pixbuf;
|
|
|
|
EmblemLayout emblem_layout;
|
2004-10-22 15:44:16 +00:00
|
|
|
double item_x, item_y;
|
2007-11-12 10:15:05 +00:00
|
|
|
gboolean is_rtl;
|
2008-02-13 14:35:11 +00:00
|
|
|
cairo_t *cr;
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
|
2000-03-22 00:29:07 +00:00
|
|
|
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), NULL);
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
canvas = EEL_CANVAS_ITEM (item)->canvas;
|
2004-10-22 15:44:16 +00:00
|
|
|
screen = gdk_colormap_get_screen (colormap);
|
|
|
|
|
|
|
|
/* Assume we're updated so canvas item data is right */
|
|
|
|
|
|
|
|
/* Calculate the offset from the top-left corner of the
|
|
|
|
new image to the item position (where the pixmap is placed) */
|
|
|
|
eel_canvas_world_to_window (canvas,
|
|
|
|
item->details->x, item->details->y,
|
|
|
|
&item_x, &item_y);
|
|
|
|
|
|
|
|
item_offset_x = item_x - EEL_CANVAS_ITEM (item)->x1;
|
|
|
|
item_offset_y = item_y - EEL_CANVAS_ITEM (item)->y1;
|
|
|
|
|
|
|
|
/* Calculate the width of the item */
|
|
|
|
width = EEL_CANVAS_ITEM (item)->x2 - EEL_CANVAS_ITEM (item)->x1;
|
|
|
|
height = EEL_CANVAS_ITEM (item)->y2 - EEL_CANVAS_ITEM (item)->y1;
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
|
2004-10-22 15:44:16 +00:00
|
|
|
pixmap = gdk_pixmap_new (gdk_screen_get_root_window (screen),
|
|
|
|
width, height,
|
|
|
|
gdk_colormap_get_visual (colormap)->depth);
|
|
|
|
gdk_drawable_set_colormap (GDK_DRAWABLE (pixmap), colormap);
|
|
|
|
|
2005-09-26 15:18:33 +00:00
|
|
|
pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
|
|
|
|
TRUE,
|
|
|
|
gdk_pixbuf_get_bits_per_sample (item->details->pixbuf),
|
|
|
|
width, height);
|
|
|
|
gdk_pixbuf_fill (pixbuf, 0x00000000);
|
|
|
|
|
|
|
|
gdk_pixbuf_composite (item->details->pixbuf, pixbuf,
|
|
|
|
item_offset_x, item_offset_y,
|
|
|
|
gdk_pixbuf_get_width (item->details->pixbuf),
|
|
|
|
gdk_pixbuf_get_height (item->details->pixbuf),
|
|
|
|
item_offset_x, item_offset_y, 1.0, 1.0,
|
|
|
|
GDK_INTERP_BILINEAR, 255);
|
|
|
|
|
|
|
|
icon_rect.x0 = item_offset_x;
|
|
|
|
icon_rect.y0 = item_offset_y;
|
|
|
|
icon_rect.x1 = item_offset_x + gdk_pixbuf_get_width (item->details->pixbuf);
|
|
|
|
icon_rect.y1 = item_offset_y + gdk_pixbuf_get_height (item->details->pixbuf);
|
|
|
|
|
2007-11-12 10:15:05 +00:00
|
|
|
|
|
|
|
is_rtl = nautilus_icon_container_is_layout_rtl (NAUTILUS_ICON_CONTAINER (canvas));
|
|
|
|
|
|
|
|
emblem_layout_reset (&emblem_layout, item, icon_rect, is_rtl);
|
|
|
|
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect, is_rtl)) {
|
2005-09-26 15:18:33 +00:00
|
|
|
gdk_pixbuf_composite (emblem_pixbuf, pixbuf,
|
|
|
|
emblem_rect.x0, emblem_rect.y0,
|
|
|
|
gdk_pixbuf_get_width (emblem_pixbuf),
|
|
|
|
gdk_pixbuf_get_height (emblem_pixbuf),
|
|
|
|
emblem_rect.x0, emblem_rect.y0,
|
|
|
|
1.0, 1.0,
|
|
|
|
GDK_INTERP_BILINEAR, 255);
|
|
|
|
}
|
|
|
|
|
2008-02-13 14:12:06 +00:00
|
|
|
/* clear the pixmap */
|
|
|
|
cr = gdk_cairo_create (pixmap);
|
|
|
|
cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
|
|
|
|
cairo_paint (cr);
|
|
|
|
cairo_destroy (cr);
|
|
|
|
|
2004-10-22 15:44:16 +00:00
|
|
|
gc = gdk_gc_new (pixmap);
|
|
|
|
gdk_draw_pixbuf (pixmap, gc, pixbuf,
|
2005-09-26 15:18:33 +00:00
|
|
|
0, 0, 0, 0,
|
2004-10-22 15:44:16 +00:00
|
|
|
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
|
|
|
GDK_RGB_DITHER_NORMAL,
|
|
|
|
0, 0);
|
|
|
|
g_object_unref (gc);
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
|
2004-10-22 15:44:16 +00:00
|
|
|
*mask = gdk_pixmap_new (gdk_screen_get_root_window (screen),
|
|
|
|
width, height,
|
|
|
|
1);
|
|
|
|
gc = gdk_gc_new (*mask);
|
|
|
|
gdk_draw_rectangle (*mask, gc,
|
|
|
|
TRUE,
|
|
|
|
0, 0,
|
|
|
|
width, height);
|
|
|
|
g_object_unref (gc);
|
|
|
|
|
|
|
|
gdk_pixbuf_render_threshold_alpha (pixbuf, *mask,
|
2005-09-26 15:18:33 +00:00
|
|
|
0, 0, 0, 0,
|
2004-10-22 15:44:16 +00:00
|
|
|
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
|
|
|
128);
|
|
|
|
|
|
|
|
draw_embedded_text (item, GDK_DRAWABLE (pixmap),
|
|
|
|
item_offset_x, item_offset_y);
|
|
|
|
|
|
|
|
draw_label_text (item, GDK_DRAWABLE (pixmap), FALSE, icon_rect);
|
|
|
|
draw_label_text (item, GDK_DRAWABLE (*mask), TRUE, icon_rect);
|
2005-09-26 15:18:33 +00:00
|
|
|
|
2009-02-09 14:15:40 +00:00
|
|
|
g_object_unref (pixbuf);
|
2005-09-26 15:18:33 +00:00
|
|
|
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
return pixmap;
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2000-03-22 00:29:07 +00:00
|
|
|
nautilus_icon_canvas_item_set_image (NautilusIconCanvasItem *item,
|
Moved the "embedded text" feature into the icon factory and
NautilusFile.
* libnautilus-extensions/nautilus-directory-private.h:
* libnautilus-extensions/nautilus-directory-async.c:
(metafile_read_close), (nautilus_metafile_read_cancel),
(metafile_read_failed), (metafile_read_complete),
(metafile_read_callback), (metafile_read_some),
(metafile_read_open_callback), (metafile_read_start),
(nautilus_directory_request_read_metafile), (metafile_write_done),
(metafile_write_failed), (metafile_write_callback),
(metafile_write_create_callback), (nautilus_metafile_write_start),
(metafile_write), (lacks_top_left), (wants_top_left),
(has_problem), (select_needy_file), (count_lines),
(top_left_read_done), (top_left_read_failed),
(top_left_read_complete), (top_left_read_close),
(top_left_read_callback), (top_left_read_some),
(top_left_open_callback), (start_getting_top_lefts),
(state_changed):
Added code to read top lefts of files in the background.
Restructured things to accomodate this new code nicely with
a minimum of copy and paste (there still was plenty of copy
and paste so there's room for improvement).
* libnautilus-extensions/nautilus-directory.c:
(nautilus_directory_destroy):
Name changes from above required revising some asserts.
* libnautilus-extensions/nautilus-file-private.h:
* libnautilus-extensions/nautilus-file.c:
(nautilus_file_get_top_left_text): Now it returns something
besides just NULL.
(nautilus_extract_top_left_text): Function that remembers only
the part of the top left text that we want to keep around.
* libnautilus-extensions/nautilus-gtk-extensions.h:
* libnautilus-extensions/nautilus-gtk-extensions.c:
(nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER),
(nautilus_gtk_marshal_POINTER__POINTER_INT_INT_POINTER_POINTER):
Needed some new marshal functions.
* libnautilus-extensions/nautilus-icon-canvas-item.h:
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_initialize_class),
(nautilus_icon_canvas_item_destroy),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg),
(nautilus_icon_canvas_item_get_image),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_draw):
Removed the old embedded text support. It came with a whole lot
of baggage, also removed.
* libnautilus-extensions/nautilus-icon-container.h:
* libnautilus-extensions/nautilus-icon-container.c:
(nautilus_icon_container_update_icon): Moved pixbuf computing code
into the FMIconView class. We might decide later to move it back
again, but for now the embedded text makes it easier to do it
this way.
(nautilus_icon_container_initialize_class): Merged
get_icon_editable_text and get_icon_additional_text back into
a single signal that gets both.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag): Updated for change in icon factory
API.
* src/file-manager/fm-directory-view.c: (finish_loading_uri):
Ask for top-left text attribute for all directories.
* src/file-manager/fm-icon-view.c: (get_icon_images_callback):
Moved pixbuf computing code into the FMIconView class. We might
decide later to move it back again, but for now the embedded text
makes it easier to do it this way.
(get_icon_text_callback): Merged get_icon_editable_text and
get_icon_additional_text back into a single signal that gets both.
2000-05-05 17:38:39 +00:00
|
|
|
GdkPixbuf *image)
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
{
|
2000-06-21 02:17:44 +00:00
|
|
|
NautilusIconCanvasItemDetails *details;
|
|
|
|
|
2000-03-22 00:29:07 +00:00
|
|
|
g_return_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item));
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
g_return_if_fail (image == NULL || pixbuf_is_acceptable (image));
|
|
|
|
|
2000-06-21 02:17:44 +00:00
|
|
|
details = item->details;
|
Moved the "embedded text" feature into the icon factory and
NautilusFile.
* libnautilus-extensions/nautilus-directory-private.h:
* libnautilus-extensions/nautilus-directory-async.c:
(metafile_read_close), (nautilus_metafile_read_cancel),
(metafile_read_failed), (metafile_read_complete),
(metafile_read_callback), (metafile_read_some),
(metafile_read_open_callback), (metafile_read_start),
(nautilus_directory_request_read_metafile), (metafile_write_done),
(metafile_write_failed), (metafile_write_callback),
(metafile_write_create_callback), (nautilus_metafile_write_start),
(metafile_write), (lacks_top_left), (wants_top_left),
(has_problem), (select_needy_file), (count_lines),
(top_left_read_done), (top_left_read_failed),
(top_left_read_complete), (top_left_read_close),
(top_left_read_callback), (top_left_read_some),
(top_left_open_callback), (start_getting_top_lefts),
(state_changed):
Added code to read top lefts of files in the background.
Restructured things to accomodate this new code nicely with
a minimum of copy and paste (there still was plenty of copy
and paste so there's room for improvement).
* libnautilus-extensions/nautilus-directory.c:
(nautilus_directory_destroy):
Name changes from above required revising some asserts.
* libnautilus-extensions/nautilus-file-private.h:
* libnautilus-extensions/nautilus-file.c:
(nautilus_file_get_top_left_text): Now it returns something
besides just NULL.
(nautilus_extract_top_left_text): Function that remembers only
the part of the top left text that we want to keep around.
* libnautilus-extensions/nautilus-gtk-extensions.h:
* libnautilus-extensions/nautilus-gtk-extensions.c:
(nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER),
(nautilus_gtk_marshal_POINTER__POINTER_INT_INT_POINTER_POINTER):
Needed some new marshal functions.
* libnautilus-extensions/nautilus-icon-canvas-item.h:
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_initialize_class),
(nautilus_icon_canvas_item_destroy),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg),
(nautilus_icon_canvas_item_get_image),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_draw):
Removed the old embedded text support. It came with a whole lot
of baggage, also removed.
* libnautilus-extensions/nautilus-icon-container.h:
* libnautilus-extensions/nautilus-icon-container.c:
(nautilus_icon_container_update_icon): Moved pixbuf computing code
into the FMIconView class. We might decide later to move it back
again, but for now the embedded text makes it easier to do it
this way.
(nautilus_icon_container_initialize_class): Merged
get_icon_editable_text and get_icon_additional_text back into
a single signal that gets both.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag): Updated for change in icon factory
API.
* src/file-manager/fm-directory-view.c: (finish_loading_uri):
Ask for top-left text attribute for all directories.
* src/file-manager/fm-icon-view.c: (get_icon_images_callback):
Moved pixbuf computing code into the FMIconView class. We might
decide later to move it back again, but for now the embedded text
makes it easier to do it this way.
(get_icon_text_callback): Merged get_icon_editable_text and
get_icon_additional_text back into a single signal that gets both.
2000-05-05 17:38:39 +00:00
|
|
|
if (details->pixbuf == image) {
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (image != NULL) {
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_ref (image);
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
}
|
|
|
|
if (details->pixbuf != NULL) {
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_unref (details->pixbuf);
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
}
|
2001-04-19 22:42:48 +00:00
|
|
|
if (details->rendered_pixbuf != NULL) {
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_unref (details->rendered_pixbuf);
|
2001-04-19 22:42:48 +00:00
|
|
|
details->rendered_pixbuf = NULL;
|
|
|
|
}
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
|
|
|
|
details->pixbuf = image;
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_bounds_cache (item);
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_item_request_update (EEL_CANVAS_ITEM (item));
|
Added additional data to icons so they can specify where the
embedded text fits in each icon.
* icons/eazel/Makefile.am, icons/eazel/i-regular.xml: Added the
file to specify attributes of icons. Specifically added the
attribute that says there is space for embedded text in the
Eazel-theme regular icon.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(get_child_node_by_property), (get_themed_icon_file_path),
(get_icon_file_path), (nautilus_icon_factory_get_thumbnail_uri),
(load_specific_image), (load_image_for_scaling),
(get_image_from_cache), (load_image_scale_if_necessary),
(nautilus_icon_factory_get_pixbuf_for_icon),
(nautilus_icon_factory_get_pixbuf_for_file):
Added code to read a rectangle for the embedded text along with
the icon, cache it with the icon, scale it with the icon, and
return it to the caller along with the icon.
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_initialize_class),
(nautilus_icons_view_icon_item_set_arg),
(nautilus_icons_view_icon_item_get_arg),
(nautilus_icons_view_icon_item_get_image),
(nautilus_icons_view_icon_item_set_image),
(nautilus_art_irect_to_gdk_rectangle),
(draw_mini_text), (draw_embedded_text),
(nautilus_icons_view_icon_item_draw):
Changed the code that draws the embedded text to respect the
text rectangle passed in. Changed the pixbuf setting to use a
function instead of the arg interface and take a text rectangle
along with the pixbuf.
* libnautilus/gnome-icon-container-dnd.c
(gnome_icon_container_dnd_begin_drag):
* libnautilus/gnome-icon-container.c:
(icon_get_actual_size): Got rid of callers who were using the arg
interface to get at the image of an icon
("NautilusIconsViewIconItem::pixbuf").
* src/file-manager/fm-directory-view-icons.c:
(get_icon_property_cb): Get rid of hard-coded rule that only
themes with eazel at the front of their names can display text
inside the icons.
* libnautilus/gnome-icon-container.c:
(icon_new): Fixed a bug where icons would be super-tiny if they
got too big, like if you entered a directory that was zoomed all
the way in.
(start_stretching), (ungrab_stretch_icon), (end_stretching),
(gnome_icon_container_show_stretch_handles): Added code to grab
the pointer while stretching an icon.
(item_event_cb): Added a return statement that John forgot when
he was editing. Without that, it was falling through to the next
case, which had the same effect anyway.
(update_icon): Pass the text rectangle through from the icon
factory to the icon canvas item, using the new call instead of the
old arg interface approach.
* components/help/.cvsignore: Added entries for
.la and .lo files.
* components/help/Makefile.am:
* components/help/hyperbola-nav-index.c:
* components/help/hyperbola-nav-search.c:
* libnautilus/nautilus-directory-private.h:
* libnautilus/nautilus-directory.c:
* src/nautilus-bookmarklist.c:
Fixed flags for gnome-xml
includes. Someone pointed out that you are supposed to include
these as "#include <tree.h>", not "#include <gnome-xml/tree.h>" so
I fixed our uses to work that way.
* libnautilus/nautilus-directory.c:
(nautilus_directory_get_file_metadata_node): Fixed code that was
destroying something allocated by gnome-xml with g_free instead
of xmlFree.
* libnautilus/nautilus-file.c:
(nautilus_file_get_keywords), (nautilus_file_set_keywords):
Fixed storage leak where we were getting a property and not freeing it.
* libnautilus/nautilus-default-file-icon.h:
* libnautilus/nautilus-default-file-icon.c:
* libnautilus/nautilus-icon-factory.c:
(load_image_for_scaling): Got rid of the global that tells whether
the default icon has an alpha channel -- it's not hardwired TRUE.
2000-03-15 00:31:49 +00:00
|
|
|
}
|
|
|
|
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
void
|
2000-03-22 00:29:07 +00:00
|
|
|
nautilus_icon_canvas_item_set_emblems (NautilusIconCanvasItem *item,
|
2001-04-30 11:39:30 +00:00
|
|
|
GList *emblem_pixbufs)
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
{
|
2000-03-06 22:09:29 +00:00
|
|
|
GList *p;
|
|
|
|
|
2000-03-22 00:29:07 +00:00
|
|
|
g_return_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item));
|
2000-03-06 22:09:29 +00:00
|
|
|
|
2000-02-24 07:09:32 +00:00
|
|
|
g_assert (item->details->emblem_pixbufs != emblem_pixbufs || emblem_pixbufs == NULL);
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
|
|
|
|
/* The case where the emblems are identical is fairly common,
|
|
|
|
* so lets take the time to check for it.
|
|
|
|
*/
|
2001-04-04 00:07:15 +00:00
|
|
|
if (eel_g_list_equal (item->details->emblem_pixbufs, emblem_pixbufs)) {
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2000-03-06 22:09:29 +00:00
|
|
|
/* Check if they are acceptable. */
|
|
|
|
for (p = emblem_pixbufs; p != NULL; p = p->next) {
|
|
|
|
g_return_if_fail (pixbuf_is_acceptable (p->data));
|
|
|
|
}
|
|
|
|
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
/* Take in the new list of emblems. */
|
2001-04-04 00:07:15 +00:00
|
|
|
eel_gdk_pixbuf_list_ref (emblem_pixbufs);
|
|
|
|
eel_gdk_pixbuf_list_free (item->details->emblem_pixbufs);
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
item->details->emblem_pixbufs = g_list_copy (emblem_pixbufs);
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
|
|
|
|
nautilus_icon_canvas_item_invalidate_bounds_cache (item);
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_item_request_update (EEL_CANVAS_ITEM (item));
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
|
|
|
|
2000-08-02 08:11:46 +00:00
|
|
|
void
|
|
|
|
nautilus_icon_canvas_item_set_attach_points (NautilusIconCanvasItem *item,
|
2007-11-30 14:51:10 +00:00
|
|
|
GdkPoint *attach_points,
|
|
|
|
int n_attach_points)
|
2000-08-02 08:11:46 +00:00
|
|
|
{
|
Fixed bug 640 (icon cache never frees images (awaiting GdkPixbuf
fix)). Also took care of bug 3145 (zillions of 'main_loops !=
NULL' assertion failures when quitting) and bug 3138 (Some code in
the icon factory is cut and pasted from elsewhere). And a few
unrelated things that came up while I was busy working on these.
* configure.in: Applied patch from Dan Winship to fix handling of
CFLAGS and LDFLAGS. Fixes some missing quoting and other mistakes.
* libnautilus-extensions/Makefile.am:
* libnautilus-extensions/nautilus-icon-factory-private.h:
* libnautilus-extensions/nautilus-thumbnails.c:
* libnautilus-extensions/nautilus-thumbnails.h:
Broke out the thumbnailing code into its own source file for
clarity.
* libnautilus-extensions/nautilus-directory.c:
* libnautilus-extensions/nautilus-file-utilities.h:
* libnautilus-extensions/nautilus-file-utilities.c:
(nautilus_make_directory_and_parents):
Moved nautilus_make_directory_and_parents into a place where the
thumbnail code can share it instead of requiring its own copy.
* libnautilus-extensions/nautilus-global-preferences.h:
* libnautilus-extensions/nautilus-global-preferences.c:
(destroy_global_prefs_dialog), (global_preferences_get_dialog),
(nautilus_global_preferences_dialog_update),
(nautilus_global_preferences_initialize):
* libnautilus-extensions/nautilus-preferences.h:
* libnautilus-extensions/nautilus-preferences.c:
(preferences_initialize_if_needed), (preferences_shutdown):
* src/nautilus-application.c: (nautilus_application_destroy):
Changed code so that it cleans up with g_atexit instead of with an
explicit shutdown call. This makes it sequence correctly with
other atexit code.
* libnautilus-extensions/nautilus-icon-canvas-item.h:
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_destroy),
(nautilus_icon_canvas_item_set_attach_points),
(emblem_layout_next):
* libnautilus-extensions/nautilus-icon-container.c:
(nautilus_icon_container_update_icon):
Added a Nautilus prefix to the EmblemAttachPoints typedef, since
it's public.
* libnautilus-extensions/nautilus-icon-factory.h:
* libnautilus-extensions/nautilus-icon-factory.c:
Changed the icon factory structure so that it will actually free
pixbufs when done with them. Made some other small fixes to the
icon factory in passing, including removing some redundant code
and fixing the logic for getting custom icons and deleting the
icon factory and g_atexit time.
* src/file-manager/fm-icon-view.c: (play_file), (preview_sound):
Restructured the logic for playing sound previews a little to get
rid of compiler warnings and close some loopholes in the old code.
* src/nautilus-main.c: (is_event_loop_needed),
(quit_if_in_main_loop), (nautilus_gtk_main_quit_all),
(event_loop_unregister), (nautilus_main_event_loop_register),
(nautilus_main_is_event_loop_mainstay),
(nautilus_main_event_loop_quit), (main): Fixed the main loop
quitting logic so that it is a bit simpler and works with the
gnome-vfs code that runs event handling after the last main loop
is gone.
2000-09-20 00:44:07 +00:00
|
|
|
g_free (item->details->attach_points);
|
|
|
|
item->details->attach_points = NULL;
|
2007-11-30 14:51:10 +00:00
|
|
|
item->details->n_attach_points = 0;
|
2000-08-02 08:11:46 +00:00
|
|
|
|
2007-11-30 14:51:10 +00:00
|
|
|
if (attach_points != NULL && n_attach_points != 0) {
|
|
|
|
item->details->attach_points = g_memdup (attach_points, n_attach_points * sizeof (GdkPoint));
|
|
|
|
item->details->n_attach_points = n_attach_points;
|
2000-08-02 08:11:46 +00:00
|
|
|
}
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
|
|
|
|
nautilus_icon_canvas_item_invalidate_bounds_cache (item);
|
2000-08-02 08:11:46 +00:00
|
|
|
}
|
|
|
|
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
void
|
|
|
|
nautilus_icon_canvas_item_set_embedded_text_rect (NautilusIconCanvasItem *item,
|
|
|
|
const GdkRectangle *text_rect)
|
|
|
|
{
|
|
|
|
item->details->embedded_text_rect = *text_rect;
|
|
|
|
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_bounds_cache (item);
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
eel_canvas_item_request_update (EEL_CANVAS_ITEM (item));
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
nautilus_icon_canvas_item_set_embedded_text (NautilusIconCanvasItem *item,
|
|
|
|
const char *text)
|
|
|
|
{
|
2006-04-18 16:54:31 +00:00
|
|
|
g_free (item->details->embedded_text);
|
|
|
|
item->details->embedded_text = g_strdup (text);
|
|
|
|
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
if (item->details->embedded_text_layout != NULL) {
|
|
|
|
if (text != NULL) {
|
|
|
|
pango_layout_set_text (item->details->embedded_text_layout, text, -1);
|
|
|
|
} else {
|
|
|
|
pango_layout_set_text (item->details->embedded_text_layout, "", -1);
|
|
|
|
}
|
|
|
|
}
|
2006-04-18 16:54:31 +00:00
|
|
|
|
|
|
|
eel_canvas_item_request_update (EEL_CANVAS_ITEM (item));
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2000-03-10 03:20:54 +00:00
|
|
|
/* Recomputes the bounding box of a icon canvas item.
|
|
|
|
* This is a generic implementation that could be used for any canvas item
|
|
|
|
* class, it has no assumptions about how the item is used.
|
|
|
|
*/
|
2000-01-25 21:17:05 +00:00
|
|
|
static void
|
2002-09-26 10:07:47 +00:00
|
|
|
recompute_bounding_box (NautilusIconCanvasItem *icon_item,
|
|
|
|
double i2w_dx, double i2w_dy)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
/* The bounds stored in the item is the same as what get_bounds
|
2000-03-10 03:20:54 +00:00
|
|
|
* returns, except it's in canvas coordinates instead of the item's
|
|
|
|
* parent's coordinates.
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
*/
|
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
EelCanvasItem *item;
|
2007-11-30 14:51:10 +00:00
|
|
|
EelDPoint top_left, bottom_right;
|
2000-03-10 03:20:54 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
item = EEL_CANVAS_ITEM (icon_item);
|
2000-03-10 03:20:54 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_item_get_bounds (item,
|
|
|
|
&top_left.x, &top_left.y,
|
|
|
|
&bottom_right.x, &bottom_right.y);
|
2000-03-10 03:20:54 +00:00
|
|
|
|
2002-12-12 15:17:42 +00:00
|
|
|
top_left.x += i2w_dx;
|
|
|
|
top_left.y += i2w_dy;
|
|
|
|
bottom_right.x += i2w_dx;
|
|
|
|
bottom_right.y += i2w_dy;
|
|
|
|
eel_canvas_w2c_d (item->canvas,
|
|
|
|
top_left.x, top_left.y,
|
|
|
|
&item->x1, &item->y1);
|
|
|
|
eel_canvas_w2c_d (item->canvas,
|
|
|
|
bottom_right.x, bottom_right.y,
|
|
|
|
&item->x2, &item->y2);
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
}
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2007-11-30 14:51:10 +00:00
|
|
|
static EelIRect
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
compute_text_rectangle (const NautilusIconCanvasItem *item,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect icon_rectangle,
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
gboolean canvas_coords,
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
NautilusIconCanvasItemBoundsUsage usage)
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
{
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect text_rectangle;
|
2002-09-30 09:16:12 +00:00
|
|
|
double pixels_per_unit;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
double text_width, text_height, text_height_for_layout, text_height_for_entire_text, real_text_height, text_dx;
|
2002-09-30 09:16:12 +00:00
|
|
|
|
|
|
|
pixels_per_unit = EEL_CANVAS_ITEM (item)->canvas->pixels_per_unit;
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
if (canvas_coords) {
|
|
|
|
text_width = item->details->text_width;
|
|
|
|
text_height = item->details->text_height;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
text_height_for_layout = item->details->text_height_for_layout;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
text_height_for_entire_text = item->details->text_height_for_entire_text;
|
2006-04-26 14:53:06 +00:00
|
|
|
text_dx = item->details->text_dx;
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
} else {
|
|
|
|
text_width = item->details->text_width / pixels_per_unit;
|
|
|
|
text_height = item->details->text_height / pixels_per_unit;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
text_height_for_layout = item->details->text_height_for_layout / pixels_per_unit;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
text_height_for_entire_text = item->details->text_height_for_entire_text / pixels_per_unit;
|
2006-04-26 14:53:06 +00:00
|
|
|
text_dx = item->details->text_dx / pixels_per_unit;
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas)->details->label_position == NAUTILUS_ICON_LABEL_POSITION_BESIDE) {
|
2007-11-12 10:15:05 +00:00
|
|
|
if (!nautilus_icon_container_is_layout_rtl (NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas))) {
|
|
|
|
text_rectangle.x0 = icon_rectangle.x1;
|
|
|
|
text_rectangle.x1 = text_rectangle.x0 + text_dx + text_width;
|
|
|
|
} else {
|
|
|
|
text_rectangle.x1 = icon_rectangle.x0;
|
|
|
|
text_rectangle.x0 = text_rectangle.x1 - text_dx - text_width;
|
|
|
|
}
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
|
|
|
|
/* VOODOO-TODO */
|
|
|
|
#if 0
|
|
|
|
if (for_layout) {
|
|
|
|
/* in this case, we should be more smart and calculate the size according to the maximum
|
|
|
|
* number of lines fitting next to the icon. However, this requires a more complex layout logic.
|
|
|
|
* It would mean that when measuring the label, the icon dimensions must be known already,
|
|
|
|
* and we
|
|
|
|
* 1. start with an unlimited layout
|
|
|
|
* 2. measure how many lines of this layout fit next to the icon
|
|
|
|
* 3. limit the number of lines to the given number of fitting lines
|
|
|
|
*/
|
|
|
|
real_text_height = VOODOO();
|
|
|
|
} else {
|
|
|
|
#endif
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
real_text_height = text_height_for_entire_text;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
#if 0
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
text_rectangle.y0 = (icon_rectangle.y0 + icon_rectangle.y1) / 2- (int) real_text_height / 2;
|
|
|
|
text_rectangle.y1 = text_rectangle.y0 + real_text_height;
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
} else {
|
2004-02-11 14:21:07 +00:00
|
|
|
text_rectangle.x0 = (icon_rectangle.x0 + icon_rectangle.x1) / 2 - (int) text_width / 2;
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
text_rectangle.y0 = icon_rectangle.y1;
|
|
|
|
text_rectangle.x1 = text_rectangle.x0 + text_width;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
|
|
|
|
if (usage == BOUNDS_USAGE_FOR_LAYOUT) {
|
|
|
|
real_text_height = text_height_for_layout;
|
|
|
|
} else if (usage == BOUNDS_USAGE_FOR_ENTIRE_ITEM) {
|
|
|
|
real_text_height = text_height_for_entire_text;
|
|
|
|
} else if (usage == BOUNDS_USAGE_FOR_DISPLAY) {
|
|
|
|
real_text_height = text_height;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
} else {
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
g_assert_not_reached ();
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
}
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
|
|
|
|
text_rectangle.y1 = text_rectangle.y0 + real_text_height + LABEL_OFFSET / pixels_per_unit;
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
}
|
2001-04-30 11:39:30 +00:00
|
|
|
|
|
|
|
return text_rectangle;
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
}
|
|
|
|
|
2007-11-30 14:51:10 +00:00
|
|
|
static EelIRect
|
2002-09-26 10:07:47 +00:00
|
|
|
get_current_canvas_bounds (EelCanvasItem *item)
|
|
|
|
{
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect bounds;
|
2002-09-26 10:07:47 +00:00
|
|
|
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (EEL_IS_CANVAS_ITEM (item));
|
2002-09-26 10:07:47 +00:00
|
|
|
|
|
|
|
bounds.x0 = item->x1;
|
|
|
|
bounds.y0 = item->y1;
|
|
|
|
bounds.x1 = item->x2;
|
|
|
|
bounds.y1 = item->y2;
|
|
|
|
|
|
|
|
return bounds;
|
|
|
|
}
|
|
|
|
|
2000-03-17 23:03:39 +00:00
|
|
|
void
|
2002-09-26 10:07:47 +00:00
|
|
|
nautilus_icon_canvas_item_update_bounds (NautilusIconCanvasItem *item,
|
|
|
|
double i2w_dx, double i2w_dy)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect before, after, emblem_rect;
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
EmblemLayout emblem_layout;
|
2002-09-26 10:07:47 +00:00
|
|
|
EelCanvasItem *canvas_item;
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
GdkPixbuf *emblem_pixbuf;
|
2007-11-12 10:15:05 +00:00
|
|
|
gboolean is_rtl;
|
2002-01-17 22:26:06 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
canvas_item = EEL_CANVAS_ITEM (item);
|
|
|
|
|
2000-03-17 23:03:39 +00:00
|
|
|
/* Compute new bounds. */
|
2002-09-26 10:07:47 +00:00
|
|
|
before = get_current_canvas_bounds (canvas_item);
|
|
|
|
recompute_bounding_box (item, i2w_dx, i2w_dy);
|
|
|
|
after = get_current_canvas_bounds (canvas_item);
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2000-03-17 23:03:39 +00:00
|
|
|
/* If the bounds didn't change, we are done. */
|
2007-11-30 14:51:10 +00:00
|
|
|
if (eel_irect_equal (before, after)) {
|
2000-03-17 23:03:39 +00:00
|
|
|
return;
|
|
|
|
}
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
|
2007-11-12 10:15:05 +00:00
|
|
|
is_rtl = nautilus_icon_container_is_layout_rtl (NAUTILUS_ICON_CONTAINER (canvas_item->canvas));
|
|
|
|
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
/* Update canvas and text rect cache */
|
|
|
|
get_icon_canvas_rectangle (item, &item->details->canvas_rect);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
item->details->text_rect = compute_text_rectangle (item, item->details->canvas_rect,
|
|
|
|
TRUE, BOUNDS_USAGE_FOR_DISPLAY);
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
|
|
|
|
/* Update emblem rect cache */
|
|
|
|
item->details->emblem_rect.x0 = 0;
|
|
|
|
item->details->emblem_rect.x1 = 0;
|
|
|
|
item->details->emblem_rect.y0 = 0;
|
|
|
|
item->details->emblem_rect.y1 = 0;
|
2007-11-12 10:15:05 +00:00
|
|
|
emblem_layout_reset (&emblem_layout, item, item->details->canvas_rect, is_rtl);
|
|
|
|
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect, is_rtl)) {
|
2007-11-30 14:51:10 +00:00
|
|
|
eel_irect_union (&item->details->emblem_rect, &item->details->emblem_rect, &emblem_rect);
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
}
|
2000-03-17 23:03:39 +00:00
|
|
|
|
2002-04-11 17:13:07 +00:00
|
|
|
/* queue a redraw. */
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_request_redraw (canvas_item->canvas,
|
|
|
|
before.x0, before.y0,
|
2003-05-14 15:24:31 +00:00
|
|
|
before.x1 + 1, before.y1 + 1);
|
2000-01-25 21:17:05 +00:00
|
|
|
}
|
|
|
|
|
2000-03-17 23:03:39 +00:00
|
|
|
/* Update handler for the icon canvas item. */
|
|
|
|
static void
|
2002-09-26 10:07:47 +00:00
|
|
|
nautilus_icon_canvas_item_update (EelCanvasItem *item,
|
|
|
|
double i2w_dx, double i2w_dy,
|
|
|
|
gint flags)
|
2000-03-17 23:03:39 +00:00
|
|
|
{
|
2002-09-26 10:07:47 +00:00
|
|
|
nautilus_icon_canvas_item_update_bounds (NAUTILUS_ICON_CANVAS_ITEM (item), i2w_dx, i2w_dy);
|
2002-07-10 19:37:49 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_item_request_redraw (EEL_CANVAS_ITEM (item));
|
2002-07-11 09:52:21 +00:00
|
|
|
|
Use G_DEFINE_TYPE_* instead of hand-written nautilus_foo_get_type()
2009-02-02 Cosimo Cecchi <cosimoc@pluto>
* libnautilus-extension/nautilus-column.c:
(nautilus_column_finalize), (nautilus_column_init),
(nautilus_column_class_init):
* libnautilus-extension/nautilus-menu.c: (nautilus_menu_finalize):
* libnautilus-private/nautilus-cell-renderer-pixbuf-emblem.c:
(nautilus_cell_renderer_pixbuf_emblem_class_init),
(nautilus_cell_renderer_pixbuf_emblem_finalize):
* libnautilus-private/nautilus-cell-renderer-text-ellipsized.c:
(nautilus_cell_renderer_text_ellipsized_init),
(nautilus_cell_renderer_text_ellipsized_class_init),
(nautilus_cell_renderer_text_ellipsized_get_size):
* libnautilus-private/nautilus-entry.c: (nautilus_entry_finalize),
(nautilus_entry_key_press), (nautilus_entry_motion_notify),
(nautilus_entry_button_press), (nautilus_entry_button_release),
(nautilus_entry_selection_clear), (nautilus_entry_class_init):
* libnautilus-private/nautilus-file.c: (nautilus_file_init),
(nautilus_file_constructor), (finalize),
(nautilus_file_class_init):
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_update),
(nautilus_icon_canvas_item_class_init):
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_new):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-mime-application-chooser.c:
(nautilus_mime_application_chooser_finalize),
(nautilus_mime_application_chooser_destroy),
(nautilus_mime_application_chooser_class_init),
(nautilus_mime_application_chooser_init):
* libnautilus-private/nautilus-open-with-dialog.c:
(nautilus_open_with_dialog_finalize),
(nautilus_open_with_dialog_destroy),
(nautilus_open_with_dialog_class_init),
(nautilus_open_with_dialog_init):
* src/file-manager/fm-icon-container.c:
* src/file-manager/fm-list-model.c: (fm_list_model_dispose),
(fm_list_model_finalize), (fm_list_model_class_init):
* src/file-manager/fm-tree-model.c: (fm_tree_model_finalize),
(fm_tree_model_class_init):
Use G_DEFINE_TYPE_* instead of hand-written nautilus_foo_get_type()
functions where possible.
svn path=/trunk/; revision=14911
2009-02-02 16:47:17 +00:00
|
|
|
EEL_CANVAS_ITEM_CLASS (nautilus_icon_canvas_item_parent_class)->update (item, i2w_dx, i2w_dy, flags);
|
2000-03-17 23:03:39 +00:00
|
|
|
}
|
2000-01-25 21:17:05 +00:00
|
|
|
|
|
|
|
/* Rendering */
|
2000-05-19 18:54:02 +00:00
|
|
|
static gboolean
|
Fixed a bug where the MIME type components short list query was
not sorted. This could result in the wrong default component being
selected, and may be the problem that caused some users to get the
text component instead of the Mozilla web page component.
* libnautilus-private/nautilus-mime-actions.c:
(nautilus_mime_get_default_component_for_file_internal): Update
since nautilus_do_component_query no longer takes an &ev.
(nautilus_mime_get_short_list_applications_for_file): Remove
unused ev variable. Fix problem where the user's added items would
be added in reverse order.
(build_joined_string): New helper function.
(nautilus_mime_get_short_list_components_for_file): Update since
nautilus_do_component_query no longer takes an &ev. Pass in a
sorting order to the query so we don't lose the order of the short
list.
(nautilus_mime_actions_file_needs_full_file_attributes): Update
since nautilus_do_component_query no longer takes an &ev.
(nautilus_mime_get_all_components_for_file): Update since
nautilus_do_component_query no longer takes an &ev.
(mime_get_all_components_for_uri_scheme): Update since
nautilus_do_component_query no longer takes an &ev.
(nautilus_do_component_query): Update to use its own &ev instead of
take one passed in. None of the callers were looking at the &ev.
* libnautilus-private/nautilus-directory-async.c: Bumped the
number of items per call back up. Now that we've done other bug
fixes, this makes things faster overall, not slower, although it
does make the time until the first icon shows up a bit longer.
* src/nautilus-sidebar-title.c: (nautilus_sidebar_title_set_file):
Don't monitor the directory item count. If the main view monitors
it we'll display it. If the main view doesn't, we'll show the old
"last known" value or nothing. It's better to do less I/O and
sometimes be wrong than do more I/O to always be right in this
case.
* src/nautilus-window.c: (add_sidebar_panel_callback),
(nautilus_window_initialize), (nautilus_window_constructed),
(nautilus_window_add_sidebar_panel),
(update_sidebar_panels_from_preferences),
(nautilus_window_hide_sidebar), (nautilus_window_show_sidebar),
(nautilus_window_sidebar_showing):
Simplify sidebar logic. Among other things, we no longer create an
invisible sidebar for the desktop.
* libnautilus-private/nautilus-icon-canvas-item.c:
(in_single_click_mode): Use "(void)", not "()".
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_did_not_drag): Coding style tweak.
2001-05-31 16:05:45 +00:00
|
|
|
in_single_click_mode (void)
|
2000-05-19 18:54:02 +00:00
|
|
|
{
|
reviewed by: Darin Adler <darin@eazel.com>
Fixed bug 7913 (fm_get_text_attribute_names_preference
should cache preference value for speed)
Fixed bug 7914 (nautilus_icon_canvas_item_initialize
should cache smooth_font for speed)
Added a new way to stay up-to-date with the value of a
preference: you register a (typically global) variable
with a particular preference, and the preferences machinery
updates its value automatically whenever the preference
changes. This is a replacement for using
nautilus_preferences_get (and _get_integer and _get_boolean)
repeatedly, and is much more efficient. We might eventually
replace all the callers of _get_xxx with calls to this, and
remove those calls entirely.
I deployed this in the two specific cases Pavel found with
profiling (bugs 7913 & 7914) and some more places. I'll
deploy it in more places still later.
* libnautilus-extensions/nautilus-preferences.h:
* libnautilus-extensions/nautilus-preferences.c:
(update_auto_string), (update_auto_integer_or_boolean):
New helper functions to update an individual auto-storage variable.
(preferences_entry_update_auto_storage): New function, updates
all auto-storage variables for a particular preference.
(preferences_something_changed_notice): update auto-storage variables
before calling callbacks.
(preferences_entry_ensure_gconf_connection): New function, extracted
from preferences_entry_add_callback.
(preferences_entry_add_callback): Now calls extracted function.
(preferences_entry_add_auto_storage): New function, adds a single
auto-storage variable for a given preference.
(preferences_entry_check_remove_connection): New function, extracted
from preferences_entry_remove_callback.
(preferences_entry_remove_callback): Now calls extracted function.
(preferences_entry_remove_auto_storage): New function, removes a single
auto-storage variable for a given preference.
(preferences_entry_free): Free the auto-storage list.
(nautilus_preferences_add_auto_string),
(nautilus_preferences_add_auto_integer),
(nautilus_preferences_add_auto_boolean),
(nautilus_preferences_remove_auto_string),
(nautilus_preferences_remove_auto_integer),
(nautilus_preferences_remove_auto_boolean): Public cover functions
for the three basic types of auto-storage variables.
(nautilus_preferences_remove_callback): Fixed small bug where this
function would unnecessarily add an entry before removing it.
* libnautilus-extensions/nautilus-font-factory.c:
(nautilus_font_factory_get_font_from_preferences):
Reworked to use auto-storage variable.
* libnautilus-extensions/nautilus-global-preferences.c:
(nautilus_global_preferences_initialize): Set up auto-storage
variables for icon view & default smooth font preferences.
(global_preferences_get_smooth_font),
(global_preferences_get_smooth_bold_font): Changed to take
font file name instead of preferences name.
(nautilus_global_preferences_get_icon_view_smooth_font),
(nautilus_global_preferences_get_default_smooth_font),
(nautilus_global_preferences_get_default_smooth_bold_font):
Use auto-storage variables.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_initialize_class): Set up
auto-storage variable for click policy preference.
(in_single_click_mode): Use auto-storage variable.
* libnautilus-extensions/nautilus-icon-factory.c:
(should_display_image_file_as_itself): Use auto-storage
variable for thumbnail policy.
* src/file-manager/fm-icon-text-window.c:
(fm_get_text_attribute_names_preference): Use auto-storage
variable for icon captions.
* src/file-manager/fm-icon-view.c:
(should_preview_sound): Use auto-storage variable for
sound-preview preference.
(fm_icon_view_initialize_class): Set up auto-storage variable
for sound-preview preference.
2001-03-30 20:52:36 +00:00
|
|
|
return click_policy_auto_value == NAUTILUS_CLICK_POLICY_SINGLE;
|
2000-05-19 18:54:02 +00:00
|
|
|
}
|
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
|
|
|
|
/* Utility routine to create a rectangle with rounded corners.
|
|
|
|
* This could possibly move to Eel as a general purpose routine.
|
|
|
|
*/
|
2002-08-06 18:33:59 +00:00
|
|
|
static void
|
2006-12-08 09:04:02 +00:00
|
|
|
make_round_rect (cairo_t *cr,
|
|
|
|
double x,
|
|
|
|
double y,
|
|
|
|
double width,
|
|
|
|
double height,
|
|
|
|
double radius)
|
2002-08-06 18:33:59 +00:00
|
|
|
{
|
2006-12-08 09:04:02 +00:00
|
|
|
double cx, cy;
|
|
|
|
|
|
|
|
width -= 2 * radius;
|
|
|
|
height -= 2 * radius;
|
|
|
|
|
|
|
|
cairo_move_to (cr, x + radius, y);
|
|
|
|
|
|
|
|
cairo_rel_line_to (cr, width, 0.0);
|
|
|
|
|
|
|
|
cairo_get_current_point (cr, &cx, &cy);
|
|
|
|
cairo_arc (cr, cx, cy + radius, radius, 3.0 * G_PI_2, 0);
|
2002-08-06 18:33:59 +00:00
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
cairo_rel_line_to (cr, 0.0, height);
|
2002-08-06 18:33:59 +00:00
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
cairo_get_current_point (cr, &cx, &cy);
|
|
|
|
cairo_arc (cr, cx - radius, cy, radius, 0, G_PI_2);
|
2002-08-06 18:33:59 +00:00
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
cairo_rel_line_to (cr, - width, 0.0);
|
|
|
|
|
|
|
|
cairo_get_current_point (cr, &cx, &cy);
|
|
|
|
cairo_arc (cr, cx, cy - radius, radius, G_PI_2, G_PI);
|
2002-08-06 18:33:59 +00:00
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
cairo_rel_line_to (cr, 0.0, -height);
|
2002-08-06 18:33:59 +00:00
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
cairo_get_current_point (cr, &cx, &cy);
|
|
|
|
cairo_arc (cr, cx + radius, cy, radius, G_PI, 3.0 * G_PI_2);
|
2002-08-06 18:33:59 +00:00
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
cairo_close_path (cr);
|
2002-08-06 18:33:59 +00:00
|
|
|
}
|
|
|
|
|
2002-08-14 21:55:01 +00:00
|
|
|
static void
|
|
|
|
draw_frame (NautilusIconCanvasItem *item,
|
|
|
|
GdkDrawable *drawable,
|
|
|
|
guint color,
|
2004-10-22 15:44:16 +00:00
|
|
|
gboolean create_mask,
|
2002-08-14 21:55:01 +00:00
|
|
|
int x,
|
|
|
|
int y,
|
|
|
|
int width,
|
|
|
|
int height)
|
|
|
|
{
|
|
|
|
NautilusIconContainer *container;
|
2006-12-08 09:04:02 +00:00
|
|
|
cairo_t *cr;
|
2002-08-14 21:55:01 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
container = NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);
|
2002-08-14 21:55:01 +00:00
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
/* Get a cairo context */
|
|
|
|
cr = gdk_cairo_create (drawable);
|
|
|
|
|
|
|
|
/* Set the rounded rect clip region. Magic rounding value taken
|
|
|
|
* from old code.
|
|
|
|
*/
|
|
|
|
make_round_rect (cr, x, y, width, height, 5);
|
|
|
|
|
|
|
|
if (create_mask) {
|
2006-12-08 09:18:01 +00:00
|
|
|
/* Dunno how to do this with cairo...
|
|
|
|
* It used to threshold the rendering so that the
|
|
|
|
* bitmask didn't show white where alpha < 0.5
|
2006-12-08 09:04:02 +00:00
|
|
|
*/
|
2002-08-14 21:55:01 +00:00
|
|
|
}
|
2007-05-22 16:09:14 +00:00
|
|
|
|
|
|
|
cairo_set_source_rgba (cr,
|
|
|
|
EEL_RGBA_COLOR_GET_R (color) / 255.0,
|
|
|
|
EEL_RGBA_COLOR_GET_G (color) / 255.0,
|
|
|
|
EEL_RGBA_COLOR_GET_B (color) / 255.0,
|
|
|
|
EEL_RGBA_COLOR_GET_A (color) / 255.0);
|
2006-12-08 09:18:01 +00:00
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
/* Paint into drawable now that we have set up the color and opacity */
|
|
|
|
cairo_fill (cr);
|
|
|
|
|
|
|
|
/* Clean up now that drawing is complete */
|
|
|
|
cairo_destroy (cr);
|
2002-08-14 21:55:01 +00:00
|
|
|
}
|
2000-12-15 07:05:13 +00:00
|
|
|
|
2002-08-14 21:55:01 +00:00
|
|
|
/* Keep these for a bit while we work on performance of draw_or_measure_label_text. */
|
2000-12-15 07:05:13 +00:00
|
|
|
/*
|
2001-04-30 11:39:30 +00:00
|
|
|
#define PERFORMANCE_TEST_DRAW_DISABLE
|
|
|
|
#define PERFORMANCE_TEST_MEASURE_DISABLE
|
2000-12-15 07:05:13 +00:00
|
|
|
*/
|
|
|
|
|
2006-03-06 10:17:59 +00:00
|
|
|
/* This gets the size of the layout from the position of the layout.
|
|
|
|
* This means that if the layout is right aligned we get the full width
|
|
|
|
* of the layout, not just the width of the text snippet on the right side
|
|
|
|
*/
|
|
|
|
static void
|
|
|
|
layout_get_full_size (PangoLayout *layout,
|
|
|
|
int *width,
|
2006-04-26 14:53:06 +00:00
|
|
|
int *height,
|
|
|
|
int *dx)
|
2006-03-06 10:17:59 +00:00
|
|
|
{
|
|
|
|
PangoRectangle logical_rect;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
int the_width, total_width;
|
2006-03-06 10:17:59 +00:00
|
|
|
|
|
|
|
pango_layout_get_extents (layout, NULL, &logical_rect);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
the_width = (logical_rect.width + PANGO_SCALE / 2) / PANGO_SCALE;
|
2006-04-26 14:53:06 +00:00
|
|
|
total_width = (logical_rect.x + logical_rect.width + PANGO_SCALE / 2) / PANGO_SCALE;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
if (width != NULL) {
|
|
|
|
*width = the_width;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (height != NULL) {
|
|
|
|
*height = (logical_rect.height + PANGO_SCALE / 2) / PANGO_SCALE;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (dx != NULL) {
|
|
|
|
*dx = total_width - the_width;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
layout_get_size_for_layout (PangoLayout *layout,
|
|
|
|
int max_layout_line_count,
|
|
|
|
int height_for_entire_text,
|
|
|
|
int *height_for_layout)
|
|
|
|
{
|
|
|
|
PangoLayoutIter *iter;
|
|
|
|
PangoRectangle logical_rect;
|
|
|
|
int i;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
/* only use the first max_layout_line_count lines for the gridded auto layout */
|
|
|
|
if (pango_layout_get_line_count (layout) <= max_layout_line_count) {
|
|
|
|
*height_for_layout = height_for_entire_text;
|
|
|
|
} else {
|
|
|
|
*height_for_layout = 0;
|
|
|
|
iter = pango_layout_get_iter (layout);
|
|
|
|
/* VOODOO-TODO, determine number of lines based on the icon size for text besides icon.
|
|
|
|
* cf. compute_text_rectangle() */
|
|
|
|
for (i = 0; i < max_layout_line_count; i++) {
|
|
|
|
pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
|
|
|
|
*height_for_layout += (logical_rect.height + PANGO_SCALE / 2) / PANGO_SCALE;
|
|
|
|
|
|
|
|
if (!pango_layout_iter_next_line (iter)) {
|
|
|
|
break;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
}
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
|
|
|
|
*height_for_layout += pango_layout_get_spacing (layout);
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
}
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
pango_layout_iter_free (iter);
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
}
|
2006-03-06 10:17:59 +00:00
|
|
|
}
|
|
|
|
|
2008-08-16 22:11:31 +00:00
|
|
|
#define IS_COMPACT_VIEW(container) \
|
2008-08-30 18:26:02 +00:00
|
|
|
((container->details->layout_mode == NAUTILUS_ICON_LAYOUT_T_B_L_R || \
|
|
|
|
container->details->layout_mode == NAUTILUS_ICON_LAYOUT_T_B_R_L) && \
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
container->details->label_position == NAUTILUS_ICON_LABEL_POSITION_BESIDE)
|
|
|
|
|
|
|
|
#define TEXT_BACK_PADDING_X 4
|
|
|
|
#define TEXT_BACK_PADDING_Y 1
|
2006-03-06 10:17:59 +00:00
|
|
|
|
2000-01-25 21:17:05 +00:00
|
|
|
static void
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
prepare_pango_layout_width (NautilusIconCanvasItem *item,
|
|
|
|
PangoLayout *layout)
|
|
|
|
{
|
|
|
|
if (nautilus_icon_canvas_item_get_max_text_width (item) < 0) {
|
|
|
|
pango_layout_set_width (layout, -1);
|
|
|
|
} else {
|
|
|
|
pango_layout_set_width (layout, floor (nautilus_icon_canvas_item_get_max_text_width (item)) * PANGO_SCALE);
|
|
|
|
pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
prepare_pango_layout_for_measure_entire_text (NautilusIconCanvasItem *item,
|
|
|
|
PangoLayout *layout)
|
|
|
|
{
|
|
|
|
NautilusIconContainer *container;
|
|
|
|
|
|
|
|
prepare_pango_layout_width (item, layout);
|
|
|
|
|
|
|
|
container = NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);
|
|
|
|
|
|
|
|
if (IS_COMPACT_VIEW (container)) {
|
|
|
|
pango_layout_set_height (layout, -1);
|
|
|
|
} else {
|
|
|
|
pango_layout_set_height (layout, G_MININT);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
prepare_pango_layout_for_draw (NautilusIconCanvasItem *item,
|
|
|
|
PangoLayout *layout)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItemDetails *details;
|
|
|
|
NautilusIconContainer *container;
|
|
|
|
gboolean needs_highlight;
|
|
|
|
|
|
|
|
prepare_pango_layout_width (item, layout);
|
|
|
|
|
|
|
|
container = NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);
|
|
|
|
details = item->details;
|
|
|
|
|
|
|
|
needs_highlight = details->is_highlighted_for_selection || details->is_highlighted_for_drop;
|
|
|
|
|
|
|
|
if (IS_COMPACT_VIEW (container)) {
|
|
|
|
pango_layout_set_height (layout, -1);
|
|
|
|
} else if (needs_highlight ||
|
|
|
|
details->is_prelit ||
|
2008-08-22 13:00:48 +00:00
|
|
|
details->is_highlighted_as_keyboard_focus ||
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
details->entire_text ||
|
|
|
|
container->details->label_position == NAUTILUS_ICON_LABEL_POSITION_BESIDE) {
|
|
|
|
/* VOODOO-TODO, cf. compute_text_rectangle() */
|
|
|
|
pango_layout_set_height (layout, G_MININT);
|
|
|
|
} else {
|
|
|
|
/* TODO? we might save some resources, when the re-layout is not neccessary in case
|
|
|
|
* the layout height already fits into max. layout lines. But pango should figure this
|
|
|
|
* out itself (which it doesn't ATM).
|
|
|
|
*/
|
|
|
|
pango_layout_set_height (layout,
|
|
|
|
nautilus_icon_container_get_max_layout_lines_for_pango (container));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
measure_label_text (NautilusIconCanvasItem *item)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
2000-03-22 00:29:07 +00:00
|
|
|
NautilusIconCanvasItemDetails *details;
|
2002-01-27 07:46:12 +00:00
|
|
|
NautilusIconContainer *container;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
gint editable_height, editable_height_for_layout, editable_height_for_entire_text, editable_width, editable_dx;
|
2007-03-02 11:13:17 +00:00
|
|
|
gint additional_height, additional_width, additional_dx;
|
2002-09-26 10:07:47 +00:00
|
|
|
EelCanvasItem *canvas_item;
|
2002-08-14 21:55:01 +00:00
|
|
|
PangoLayout *editable_layout;
|
|
|
|
PangoLayout *additional_layout;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
gboolean have_editable, have_additional, needs_highlight;
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
int max_text_width;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
|
|
|
|
/* check to see if the cached values are still valid; if so, there's
|
|
|
|
* no work necessary
|
|
|
|
*/
|
2002-01-17 22:26:06 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
if (item->details->text_width >= 0 && item->details->text_height >= 0) {
|
|
|
|
return;
|
|
|
|
}
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
|
2000-03-17 23:03:39 +00:00
|
|
|
details = item->details;
|
2000-05-12 06:28:32 +00:00
|
|
|
needs_highlight = details->is_highlighted_for_selection || details->is_highlighted_for_drop;
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
|
2002-01-17 22:26:06 +00:00
|
|
|
have_editable = details->editable_text != NULL && details->editable_text[0] != '\0';
|
|
|
|
have_additional = details->additional_text != NULL && details->additional_text[0] != '\0';
|
2000-12-15 07:05:13 +00:00
|
|
|
|
Added commands for Auto vs. Manual layout, but the guts behind
them is not yet implemented.
Did some cleanup on the new renaming code.
* nautilus-glib-extensions.c:
* nautilus-glib-extensions.h:
Added nautilus_g_list_exactly_one_item and
nautilus_g_list_more_than_one_item. These are more-efficient
versions of g_list_length (x) == 1 and g_list_length (x) > 1.
* nautilus-icon-canvas-item.c:
(draw_or_measure_label_text): Add a line break between the
editable text and the additional text.
(nautilus_icon_canvas_get_text_bounds),
(nautilus_icon_canvas_get_editable_text_bounds),
(nautilus_icon_canvas_get_editable_text),
(nautilus_icon_canvas_set_renaming):
Replaced g_assert with g_return_if_fail calls, and added the
complete set of g_return_if_fail.
(nautilus_icon_canvas_set_renaming): Don't update the item
unless the renaming state has actually changed.
* nautilus-icon-canvas-item.h: Fixed formatting.
* nautilus-icon-container.c:
* nautilus-icon-container.h:
Added nautilus_icon_container_set_auto_layout and
nautilus_icon_container_is_auto_layout. For now they are
placeholders that just modify a boolean.
* nautilus-icon-private.h:
Added the auto_layout boolean.
* nautilus-icon-text-item.c:
* nautilus-icon-text-item.h:
Just some formatting and other minor cleanup.
* nautilus-metadata.h:
Added NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT.
* nautilus-location-bar.c (drag_data_received_cb): Use the new
nautilus_g_list_more_than_one_item function.
* fm-directory-view.c (bonobo_menu_open_cb), (open_cb): Use the
new nautilus_g_list_exactly_one_item.
* fm-icon-text-window.c (attribute_names_string_is_good),
(set_preference_string), (synch_menus_with_preference),
(preference_changed_callback),
(changed_attributes_option_menu_cb): Got rid of the hard-coded
first item "name" which is no longer needed. Also changed to
handle bad data in the preferences.
* fm-icon-view.c (fm_icon_view_initialize_class): Updated since
there's no "name" item needed any more.
(fm_icon_view_compute_menu_item_info): Merged MENU_PATH_RENAME
with MENU_RENAME_TEXT and simplified the logic.
(fm_icon_view_append_selection_context_menu_items): Merged
MENU_PATH_RENAME with MENU_RENAME_TEXT.
(update_layout_menus), (auto_layout_callback),
(manual_layout_callback), (fm_icon_view_merge_menus): Added menu
items for auto layout and for manual layout.
(fm_icon_view_begin_loading): Load setting for auto layout from
metadata.
(fm_icon_view_get_icon_text_attribute_names): Changed to get rid
of the "name" first item from the list of text attributes.
(get_icon_editable_text_callback): Simplified since the editable text
is always the icon name. Also got rid of copied and pasted code that's
no longer needed for this case.
(get_icon_additional_text_callback): Got rid of special case for name,
since the name is no longer treated as an attribute.
2000-04-18 01:32:55 +00:00
|
|
|
/* No font or no text, then do no work. */
|
Fixed to use g_iconv instead of iconv, starting with a patch from Jean
* libnautilus-private/nautilus-desktop-file-loader.c:
(validated_strdup): Fixed to use g_iconv instead of iconv,
starting with a patch from Jean Schurger <jschurger@schurger.org>.
* libnautilus-private/nautilus-font-factory.c: Remove.
* libnautilus-private/nautilus-font-factory.h: Remove.
* libnautilus-private/Makefile.am:
Remove nautilus-font-factory.[ch].
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(nautilus_icon_canvas_item_class_init):
Get rid of the "font" arg. We'll have to replace this with something
that works with Pango -- maybe just a font name.
* src/file-manager/fm-list-view.c: (truncate_middle_callback),
(get_cell_text): Turn off the GdkFont ellipsizing code. I hope this
just goes away when Anders finishes his port to GtkTextView.
* src/file-manager/fm-properties-window.c:
(fm_properties_window_class_init), (real_destroy), (real_finalize):
Fix a bug where it would try to disconnect a signal on an object
that is already NULL by that time.
* src/nautilus-profiler.c:
(nautilus_profiler_bonobo_ui_report_callback): Disable the dump
window, pending a port to GtkTextView instead of GtkText.
* components/music/nautilus-music-view.c:
* components/news/nautilus-news.c:
* components/notes/nautilus-notes.c:
* components/text/nautilus-text-view.c:
* libnautilus-private/nautilus-file-operations-progress.c:
* libnautilus-private/nautilus-file-operations.c:
* libnautilus-private/nautilus-icon-container.c:
* src/file-manager/fm-icon-view.c:
* src/nautilus-sidebar-title.c:
Get rid of some includes of unused headers.
2002-01-08 01:11:21 +00:00
|
|
|
if (!have_editable && !have_additional) {
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
details->text_height = 0;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
details->text_height_for_layout = 0;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
details->text_height_for_entire_text = 0;
|
2000-04-17 21:07:33 +00:00
|
|
|
details->text_width = 0;
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
return;
|
|
|
|
}
|
2000-04-17 21:07:33 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
#ifdef PERFORMANCE_TEST_MEASURE_DISABLE
|
|
|
|
/* fake out the width */
|
2000-12-15 07:05:13 +00:00
|
|
|
details->text_width = 80;
|
|
|
|
details->text_height = 20;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
details->text_height_for_layout = 20;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
details->text_height_for_entire_text = 20;
|
2000-12-15 07:05:13 +00:00
|
|
|
return;
|
|
|
|
#endif
|
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
canvas_item = EEL_CANVAS_ITEM (item);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
|
2002-08-14 21:55:01 +00:00
|
|
|
editable_width = 0;
|
|
|
|
editable_height = 0;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
editable_height_for_layout = 0;
|
|
|
|
editable_height_for_entire_text = 0;
|
2006-04-26 14:53:06 +00:00
|
|
|
editable_dx = 0;
|
2002-08-14 21:55:01 +00:00
|
|
|
additional_width = 0;
|
|
|
|
additional_height = 0;
|
2006-04-26 14:53:06 +00:00
|
|
|
additional_dx = 0;
|
2002-01-17 22:26:06 +00:00
|
|
|
|
2000-09-08 07:23:42 +00:00
|
|
|
max_text_width = floor (nautilus_icon_canvas_item_get_max_text_width (item));
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
container = NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);
|
2002-08-14 21:55:01 +00:00
|
|
|
editable_layout = NULL;
|
|
|
|
additional_layout = NULL;
|
2002-01-17 22:26:06 +00:00
|
|
|
|
|
|
|
if (have_editable) {
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
/* first, measure required text height: editable_height_for_entire_text
|
|
|
|
* then, measure text height applicable for layout: editable_height_for_layout
|
|
|
|
* next, measure actually displayed height: editable_height
|
|
|
|
*/
|
2002-08-14 21:55:01 +00:00
|
|
|
editable_layout = get_label_layout (&details->editable_text_layout, item, details->editable_text);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
|
|
|
|
prepare_pango_layout_for_measure_entire_text (item, editable_layout);
|
2008-08-20 23:08:47 +00:00
|
|
|
layout_get_full_size (editable_layout,
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
NULL,
|
|
|
|
&editable_height_for_entire_text,
|
|
|
|
NULL);
|
|
|
|
layout_get_size_for_layout (editable_layout,
|
|
|
|
nautilus_icon_container_get_max_layout_lines (container),
|
|
|
|
editable_height_for_entire_text,
|
|
|
|
&editable_height_for_layout);
|
|
|
|
|
|
|
|
prepare_pango_layout_for_draw (item, editable_layout);
|
|
|
|
layout_get_full_size (editable_layout,
|
|
|
|
&editable_width,
|
|
|
|
&editable_height,
|
|
|
|
&editable_dx);
|
2002-01-17 22:26:06 +00:00
|
|
|
}
|
2002-08-14 21:55:01 +00:00
|
|
|
|
2002-01-17 22:26:06 +00:00
|
|
|
if (have_additional) {
|
2002-08-14 21:55:01 +00:00
|
|
|
additional_layout = get_label_layout (&details->additional_text_layout, item, details->additional_text);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
prepare_pango_layout_for_draw (item, additional_layout);
|
2008-08-20 23:08:47 +00:00
|
|
|
layout_get_full_size (additional_layout,
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
&additional_width, &additional_height, &additional_dx);
|
2000-01-31 01:30:16 +00:00
|
|
|
}
|
2002-08-14 21:55:01 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
details->editable_text_height = editable_height;
|
|
|
|
|
2006-04-26 14:53:06 +00:00
|
|
|
if (editable_width > additional_width) {
|
|
|
|
details->text_width = editable_width;
|
|
|
|
details->text_dx = editable_dx;
|
|
|
|
} else {
|
|
|
|
details->text_width = additional_width;
|
|
|
|
details->text_dx = additional_dx;
|
|
|
|
}
|
2003-07-05 15:30:04 +00:00
|
|
|
|
|
|
|
if (have_additional) {
|
|
|
|
details->text_height = editable_height + LABEL_LINE_SPACING + additional_height;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
details->text_height_for_layout = editable_height_for_layout + LABEL_LINE_SPACING + additional_height;
|
|
|
|
details->text_height_for_entire_text = editable_height_for_entire_text + LABEL_LINE_SPACING + additional_height;
|
2003-07-05 15:30:04 +00:00
|
|
|
} else {
|
|
|
|
details->text_height = editable_height;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
details->text_height_for_layout = editable_height_for_layout;
|
|
|
|
details->text_height_for_entire_text = editable_height_for_entire_text;
|
2003-07-05 15:30:04 +00:00
|
|
|
}
|
2002-08-14 21:55:01 +00:00
|
|
|
|
2006-12-08 09:04:02 +00:00
|
|
|
/* add some extra space for highlighting even when we don't highlight so things won't move */
|
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
/* extra slop for nicer highlighting */
|
|
|
|
details->text_height += TEXT_BACK_PADDING_Y*2;
|
|
|
|
details->text_height_for_layout += TEXT_BACK_PADDING_Y*2;
|
|
|
|
details->text_height_for_entire_text += TEXT_BACK_PADDING_Y*2;
|
|
|
|
details->editable_text_height += TEXT_BACK_PADDING_Y*2;
|
2004-10-01 11:52:19 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
/* extra to make it look nicer */
|
|
|
|
details->text_width += TEXT_BACK_PADDING_X*2;
|
2002-08-14 21:55:01 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
if (editable_layout) {
|
|
|
|
g_object_unref (editable_layout);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (additional_layout) {
|
|
|
|
g_object_unref (additional_layout);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
draw_label_text (NautilusIconCanvasItem *item,
|
|
|
|
GdkDrawable *drawable,
|
|
|
|
gboolean create_mask,
|
|
|
|
EelIRect icon_rect)
|
|
|
|
{
|
|
|
|
EelCanvasItem *canvas_item;
|
|
|
|
NautilusIconCanvasItemDetails *details;
|
|
|
|
NautilusIconContainer *container;
|
|
|
|
PangoLayout *editable_layout;
|
|
|
|
PangoLayout *additional_layout;
|
|
|
|
GdkColor *label_color;
|
|
|
|
GdkGC *gc;
|
|
|
|
gboolean have_editable, have_additional;
|
|
|
|
gboolean needs_frame, needs_highlight, prelight_label, is_rtl_label_beside;
|
|
|
|
EelIRect text_rect;
|
|
|
|
int x;
|
|
|
|
int max_text_width;
|
|
|
|
|
|
|
|
#ifdef PERFORMANCE_TEST_DRAW_DISABLE
|
|
|
|
return;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
gc = NULL;
|
2002-08-14 21:55:01 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
canvas_item = EEL_CANVAS_ITEM (item);
|
|
|
|
details = item->details;
|
|
|
|
|
|
|
|
measure_label_text (item);
|
|
|
|
if (details->text_height == 0 ||
|
|
|
|
details->text_width == 0) {
|
2002-08-14 21:55:01 +00:00
|
|
|
return;
|
|
|
|
}
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
container = NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);
|
|
|
|
|
|
|
|
text_rect = compute_text_rectangle (item, icon_rect, TRUE, BOUNDS_USAGE_FOR_DISPLAY);
|
2006-12-08 09:04:02 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
needs_highlight = details->is_highlighted_for_selection || details->is_highlighted_for_drop;
|
2007-11-12 10:15:05 +00:00
|
|
|
is_rtl_label_beside = nautilus_icon_container_is_layout_rtl (container) &&
|
|
|
|
container->details->label_position == NAUTILUS_ICON_LABEL_POSITION_BESIDE;
|
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
editable_layout = NULL;
|
|
|
|
additional_layout = NULL;
|
|
|
|
|
|
|
|
have_editable = details->editable_text != NULL && details->editable_text[0] != '\0';
|
|
|
|
have_additional = details->additional_text != NULL && details->additional_text[0] != '\0';
|
|
|
|
g_assert (have_editable || have_additional);
|
|
|
|
|
|
|
|
max_text_width = floor (nautilus_icon_canvas_item_get_max_text_width (item));
|
|
|
|
|
2002-08-14 21:55:01 +00:00
|
|
|
/* if the icon is highlighted, do some set-up */
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
if (needs_highlight && !details->is_renaming) {
|
2002-08-14 21:55:01 +00:00
|
|
|
draw_frame (item,
|
|
|
|
drawable,
|
2002-10-06 01:12:59 +00:00
|
|
|
GTK_WIDGET_HAS_FOCUS (GTK_WIDGET (container)) ? container->details->highlight_color_rgba : container->details->active_color_rgba,
|
2004-10-22 15:44:16 +00:00
|
|
|
create_mask,
|
2007-11-12 10:15:05 +00:00
|
|
|
is_rtl_label_beside ? text_rect.x0 + item->details->text_dx : text_rect.x0,
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
text_rect.y0,
|
2007-11-12 10:15:05 +00:00
|
|
|
is_rtl_label_beside ? text_rect.x1 - text_rect.x0 - item->details->text_dx : text_rect.x1 - text_rect.x0,
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
text_rect.y1 - text_rect.y0);
|
2008-08-20 17:16:33 +00:00
|
|
|
} else if (!needs_highlight && !details->is_renaming &&
|
2008-08-22 13:00:48 +00:00
|
|
|
(details->is_prelit ||
|
|
|
|
details->is_highlighted_as_keyboard_focus)) {
|
|
|
|
/* clear the underlying icons, where the text or overlaps them. */
|
2008-08-20 17:16:33 +00:00
|
|
|
gdk_window_clear_area (EEL_CANVAS (container)->layout.bin_window,
|
|
|
|
text_rect.x0,
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
text_rect.y0,
|
2008-08-20 17:16:33 +00:00
|
|
|
text_rect.x1 - text_rect.x0,
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
text_rect.y1 - text_rect.y0);
|
2002-08-14 21:55:01 +00:00
|
|
|
}
|
|
|
|
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
if (container->details->label_position == NAUTILUS_ICON_LABEL_POSITION_BESIDE) {
|
|
|
|
x = text_rect.x0 + 2;
|
|
|
|
} else {
|
|
|
|
x = text_rect.x0 + ((text_rect.x1 - text_rect.x0) - max_text_width) / 2;
|
|
|
|
}
|
|
|
|
|
2002-08-14 21:55:01 +00:00
|
|
|
if (have_editable) {
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
editable_layout = get_label_layout (&item->details->editable_text_layout, item, item->details->editable_text);
|
|
|
|
prepare_pango_layout_for_draw (item, editable_layout);
|
|
|
|
|
2002-08-14 21:55:01 +00:00
|
|
|
gtk_widget_style_get (GTK_WIDGET (container),
|
|
|
|
"frame_text", &needs_frame,
|
2006-11-30 11:10:31 +00:00
|
|
|
"activate_prelight_icon_label", &prelight_label,
|
2002-08-14 21:55:01 +00:00
|
|
|
NULL);
|
|
|
|
if (needs_frame && !needs_highlight && details->text_width > 0 && details->text_height > 0) {
|
2006-11-30 11:10:31 +00:00
|
|
|
if (!(prelight_label && item->details->is_prelit)) {
|
|
|
|
draw_frame (item,
|
|
|
|
drawable,
|
|
|
|
container->details->normal_color_rgba,
|
|
|
|
create_mask,
|
|
|
|
text_rect.x0,
|
|
|
|
text_rect.y0,
|
|
|
|
text_rect.x1 - text_rect.x0,
|
|
|
|
text_rect.y1 - text_rect.y0);
|
|
|
|
} else {
|
|
|
|
draw_frame (item,
|
|
|
|
drawable,
|
|
|
|
container->details->prelight_color_rgba,
|
|
|
|
create_mask,
|
|
|
|
text_rect.x0,
|
|
|
|
text_rect.y0,
|
|
|
|
text_rect.x1 - text_rect.x0,
|
|
|
|
text_rect.y1 - text_rect.y0);
|
|
|
|
}
|
2002-08-14 21:55:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
gc = nautilus_icon_container_get_label_color_and_gc
|
|
|
|
(NAUTILUS_ICON_CONTAINER (canvas_item->canvas),
|
2006-11-30 11:10:31 +00:00
|
|
|
&label_color, TRUE, needs_highlight,
|
|
|
|
prelight_label & item->details->is_prelit);
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
|
2002-08-14 21:55:01 +00:00
|
|
|
draw_label_layout (item, drawable,
|
|
|
|
editable_layout, needs_highlight,
|
|
|
|
label_color,
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
x,
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
text_rect.y0 + TEXT_BACK_PADDING_Y, gc);
|
2002-08-14 21:55:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (have_additional) {
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
additional_layout = get_label_layout (&item->details->additional_text_layout, item, item->details->additional_text);
|
|
|
|
prepare_pango_layout_for_draw (item, additional_layout);
|
|
|
|
|
2002-08-14 21:55:01 +00:00
|
|
|
gc = nautilus_icon_container_get_label_color_and_gc
|
|
|
|
(NAUTILUS_ICON_CONTAINER (canvas_item->canvas),
|
2006-11-30 11:10:31 +00:00
|
|
|
&label_color, FALSE, needs_highlight,
|
|
|
|
FALSE);
|
2002-08-14 21:55:01 +00:00
|
|
|
|
|
|
|
draw_label_layout (item, drawable,
|
|
|
|
additional_layout, needs_highlight,
|
|
|
|
label_color,
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
x,
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
text_rect.y0 + details->editable_text_height + LABEL_LINE_SPACING + TEXT_BACK_PADDING_Y, gc);
|
2002-08-14 21:55:01 +00:00
|
|
|
}
|
|
|
|
|
2004-10-22 15:44:16 +00:00
|
|
|
if (!create_mask && item->details->is_highlighted_as_keyboard_focus) {
|
2002-09-26 10:07:47 +00:00
|
|
|
gtk_paint_focus (GTK_WIDGET (EEL_CANVAS_ITEM (item)->canvas)->style,
|
2002-08-14 21:55:01 +00:00
|
|
|
drawable,
|
|
|
|
needs_highlight ? GTK_STATE_SELECTED : GTK_STATE_NORMAL,
|
|
|
|
NULL,
|
2002-09-26 10:07:47 +00:00
|
|
|
GTK_WIDGET (EEL_CANVAS_ITEM (item)->canvas),
|
2002-08-14 21:55:01 +00:00
|
|
|
"icon-container",
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
text_rect.x0,
|
|
|
|
text_rect.y0,
|
|
|
|
text_rect.x1 - text_rect.x0,
|
|
|
|
text_rect.y1 - text_rect.y0);
|
2002-08-14 21:55:01 +00:00
|
|
|
}
|
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
if (editable_layout != NULL) {
|
2002-08-14 21:55:01 +00:00
|
|
|
g_object_unref (editable_layout);
|
|
|
|
}
|
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
if (additional_layout != NULL) {
|
2002-08-14 21:55:01 +00:00
|
|
|
g_object_unref (additional_layout);
|
2000-02-02 20:18:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
void
|
|
|
|
nautilus_icon_canvas_item_set_is_visible (NautilusIconCanvasItem *item,
|
|
|
|
gboolean visible)
|
|
|
|
{
|
|
|
|
if (item->details->is_visible == visible)
|
|
|
|
return;
|
|
|
|
|
|
|
|
item->details->is_visible = visible;
|
|
|
|
|
|
|
|
if (!visible) {
|
2008-09-12 10:05:08 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_label (item);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
nautilus_icon_canvas_item_invalidate_label (NautilusIconCanvasItem *item)
|
|
|
|
{
|
|
|
|
nautilus_icon_canvas_item_invalidate_label_size (item);
|
|
|
|
|
|
|
|
if (item->details->editable_text_layout) {
|
|
|
|
g_object_unref (item->details->editable_text_layout);
|
|
|
|
item->details->editable_text_layout = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item->details->additional_text_layout) {
|
|
|
|
g_object_unref (item->details->additional_text_layout);
|
|
|
|
item->details->additional_text_layout = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item->details->embedded_text_layout) {
|
|
|
|
g_object_unref (item->details->embedded_text_layout);
|
|
|
|
item->details->embedded_text_layout = NULL;
|
2006-04-18 16:54:31 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-10-28 12:41:20 +00:00
|
|
|
static GdkPixbuf *
|
|
|
|
get_knob_pixbuf (void)
|
|
|
|
{
|
|
|
|
GdkPixbuf *knob_pixbuf;
|
|
|
|
char *knob_filename;
|
|
|
|
|
|
|
|
knob_pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
|
|
|
|
"stock-nautilus-knob",
|
|
|
|
8, 0, NULL);
|
|
|
|
if (!knob_pixbuf) {
|
|
|
|
knob_filename = nautilus_pixmap_file ("knob.png");
|
|
|
|
knob_pixbuf = gdk_pixbuf_new_from_file (knob_filename, NULL);
|
|
|
|
g_free (knob_filename);
|
|
|
|
}
|
|
|
|
|
|
|
|
return knob_pixbuf;
|
|
|
|
}
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
static void
|
2000-03-22 00:29:07 +00:00
|
|
|
draw_stretch_handles (NautilusIconCanvasItem *item, GdkDrawable *drawable,
|
2007-11-30 14:51:10 +00:00
|
|
|
const EelIRect *rect)
|
2000-03-07 01:10:04 +00:00
|
|
|
{
|
2005-10-28 12:41:20 +00:00
|
|
|
GtkWidget *widget;
|
2000-03-07 01:10:04 +00:00
|
|
|
GdkGC *gc;
|
2000-09-30 02:21:22 +00:00
|
|
|
GdkPixbuf *knob_pixbuf;
|
2002-10-02 05:36:58 +00:00
|
|
|
GdkBitmap *stipple;
|
2000-09-30 02:21:22 +00:00
|
|
|
int knob_width, knob_height;
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
if (!item->details->show_stretch_handles) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2005-10-28 12:41:20 +00:00
|
|
|
widget = GTK_WIDGET (EEL_CANVAS_ITEM (item)->canvas);
|
2000-09-30 02:21:22 +00:00
|
|
|
|
2005-10-28 12:41:20 +00:00
|
|
|
gc = gdk_gc_new (drawable);
|
|
|
|
knob_pixbuf = get_knob_pixbuf ();
|
2000-09-30 02:21:22 +00:00
|
|
|
knob_width = gdk_pixbuf_get_width (knob_pixbuf);
|
|
|
|
knob_height = gdk_pixbuf_get_height (knob_pixbuf);
|
2002-10-02 05:36:58 +00:00
|
|
|
|
|
|
|
stipple = eel_stipple_bitmap_for_screen (
|
|
|
|
gdk_drawable_get_screen (GDK_DRAWABLE (drawable)));
|
2000-10-03 00:19:52 +00:00
|
|
|
|
2005-10-28 12:41:20 +00:00
|
|
|
/* first draw the box */
|
|
|
|
gdk_gc_set_rgb_fg_color (gc, &widget->style->white);
|
|
|
|
gdk_draw_rectangle
|
|
|
|
(drawable, gc, FALSE,
|
|
|
|
rect->x0,
|
|
|
|
rect->y0,
|
|
|
|
rect->x1 - rect->x0 - 1,
|
|
|
|
rect->y1 - rect->y0 - 1);
|
|
|
|
|
|
|
|
gdk_gc_set_rgb_fg_color (gc, &widget->style->black);
|
2002-10-02 05:36:58 +00:00
|
|
|
gdk_gc_set_stipple (gc, stipple);
|
2000-10-03 00:19:52 +00:00
|
|
|
gdk_gc_set_fill (gc, GDK_STIPPLED);
|
|
|
|
gdk_draw_rectangle
|
|
|
|
(drawable, gc, FALSE,
|
|
|
|
rect->x0,
|
|
|
|
rect->y0,
|
|
|
|
rect->x1 - rect->x0 - 1,
|
|
|
|
rect->y1 - rect->y0 - 1);
|
|
|
|
|
|
|
|
/* draw the stretch handles themselves */
|
|
|
|
|
2000-09-30 02:21:22 +00:00
|
|
|
draw_pixbuf (knob_pixbuf, drawable, rect->x0, rect->y0);
|
2002-01-27 22:10:17 +00:00
|
|
|
draw_pixbuf (knob_pixbuf, drawable, rect->x0, rect->y1 - knob_height);
|
2000-09-30 02:21:22 +00:00
|
|
|
draw_pixbuf (knob_pixbuf, drawable, rect->x1 - knob_width, rect->y0);
|
|
|
|
draw_pixbuf (knob_pixbuf, drawable, rect->x1 - knob_width, rect->y1 - knob_height);
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_unref (knob_pixbuf);
|
2000-10-03 00:19:52 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
g_object_unref (gc);
|
2000-03-07 01:10:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2007-11-30 14:51:10 +00:00
|
|
|
emblem_layout_reset (EmblemLayout *layout, NautilusIconCanvasItem *icon_item, EelIRect icon_rect, gboolean is_rtl)
|
2000-03-07 01:10:04 +00:00
|
|
|
{
|
|
|
|
layout->icon_item = icon_item;
|
2001-04-30 11:39:30 +00:00
|
|
|
layout->icon_rect = icon_rect;
|
2007-11-12 10:15:05 +00:00
|
|
|
layout->side = is_rtl ? LEFT_SIDE : RIGHT_SIDE;
|
2000-03-07 01:10:04 +00:00
|
|
|
layout->position = 0;
|
2000-08-02 08:11:46 +00:00
|
|
|
layout->index = 0;
|
2000-03-07 01:10:04 +00:00
|
|
|
layout->emblem = icon_item->details->emblem_pixbufs;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
emblem_layout_next (EmblemLayout *layout,
|
|
|
|
GdkPixbuf **emblem_pixbuf,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect *emblem_rect,
|
2007-11-12 10:15:05 +00:00
|
|
|
gboolean is_rtl)
|
2000-03-07 01:10:04 +00:00
|
|
|
{
|
|
|
|
GdkPixbuf *pixbuf;
|
|
|
|
int width, height, x, y;
|
2007-11-30 14:51:10 +00:00
|
|
|
GdkPoint *attach_points;
|
2000-08-02 08:11:46 +00:00
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
/* Check if we have layed out all of the pixbufs. */
|
|
|
|
if (layout->emblem == NULL) {
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Get the pixbuf. */
|
|
|
|
pixbuf = layout->emblem->data;
|
|
|
|
width = gdk_pixbuf_get_width (pixbuf);
|
|
|
|
height = gdk_pixbuf_get_height (pixbuf);
|
|
|
|
|
2000-08-02 08:11:46 +00:00
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
/* Advance to the next emblem. */
|
|
|
|
layout->emblem = layout->emblem->next;
|
|
|
|
|
Fixed bug 640 (icon cache never frees images (awaiting GdkPixbuf
fix)). Also took care of bug 3145 (zillions of 'main_loops !=
NULL' assertion failures when quitting) and bug 3138 (Some code in
the icon factory is cut and pasted from elsewhere). And a few
unrelated things that came up while I was busy working on these.
* configure.in: Applied patch from Dan Winship to fix handling of
CFLAGS and LDFLAGS. Fixes some missing quoting and other mistakes.
* libnautilus-extensions/Makefile.am:
* libnautilus-extensions/nautilus-icon-factory-private.h:
* libnautilus-extensions/nautilus-thumbnails.c:
* libnautilus-extensions/nautilus-thumbnails.h:
Broke out the thumbnailing code into its own source file for
clarity.
* libnautilus-extensions/nautilus-directory.c:
* libnautilus-extensions/nautilus-file-utilities.h:
* libnautilus-extensions/nautilus-file-utilities.c:
(nautilus_make_directory_and_parents):
Moved nautilus_make_directory_and_parents into a place where the
thumbnail code can share it instead of requiring its own copy.
* libnautilus-extensions/nautilus-global-preferences.h:
* libnautilus-extensions/nautilus-global-preferences.c:
(destroy_global_prefs_dialog), (global_preferences_get_dialog),
(nautilus_global_preferences_dialog_update),
(nautilus_global_preferences_initialize):
* libnautilus-extensions/nautilus-preferences.h:
* libnautilus-extensions/nautilus-preferences.c:
(preferences_initialize_if_needed), (preferences_shutdown):
* src/nautilus-application.c: (nautilus_application_destroy):
Changed code so that it cleans up with g_atexit instead of with an
explicit shutdown call. This makes it sequence correctly with
other atexit code.
* libnautilus-extensions/nautilus-icon-canvas-item.h:
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_destroy),
(nautilus_icon_canvas_item_set_attach_points),
(emblem_layout_next):
* libnautilus-extensions/nautilus-icon-container.c:
(nautilus_icon_container_update_icon):
Added a Nautilus prefix to the EmblemAttachPoints typedef, since
it's public.
* libnautilus-extensions/nautilus-icon-factory.h:
* libnautilus-extensions/nautilus-icon-factory.c:
Changed the icon factory structure so that it will actually free
pixbufs when done with them. Made some other small fixes to the
icon factory in passing, including removing some redundant code
and fixing the logic for getting custom icons and deleting the
icon factory and g_atexit time.
* src/file-manager/fm-icon-view.c: (play_file), (preview_sound):
Restructured the logic for playing sound previews a little to get
rid of compiler warnings and close some loopholes in the old code.
* src/nautilus-main.c: (is_event_loop_needed),
(quit_if_in_main_loop), (nautilus_gtk_main_quit_all),
(event_loop_unregister), (nautilus_main_event_loop_register),
(nautilus_main_is_event_loop_mainstay),
(nautilus_main_event_loop_quit), (main): Fixed the main loop
quitting logic so that it is a bit simpler and works with the
gnome-vfs code that runs event handling after the last main loop
is gone.
2000-09-20 00:44:07 +00:00
|
|
|
attach_points = layout->icon_item->details->attach_points;
|
|
|
|
if (attach_points != NULL) {
|
2007-11-30 14:51:10 +00:00
|
|
|
if (layout->index >= layout->icon_item->details->n_attach_points) {
|
2000-08-02 08:11:46 +00:00
|
|
|
return FALSE;
|
Fixed bug 640 (icon cache never frees images (awaiting GdkPixbuf
fix)). Also took care of bug 3145 (zillions of 'main_loops !=
NULL' assertion failures when quitting) and bug 3138 (Some code in
the icon factory is cut and pasted from elsewhere). And a few
unrelated things that came up while I was busy working on these.
* configure.in: Applied patch from Dan Winship to fix handling of
CFLAGS and LDFLAGS. Fixes some missing quoting and other mistakes.
* libnautilus-extensions/Makefile.am:
* libnautilus-extensions/nautilus-icon-factory-private.h:
* libnautilus-extensions/nautilus-thumbnails.c:
* libnautilus-extensions/nautilus-thumbnails.h:
Broke out the thumbnailing code into its own source file for
clarity.
* libnautilus-extensions/nautilus-directory.c:
* libnautilus-extensions/nautilus-file-utilities.h:
* libnautilus-extensions/nautilus-file-utilities.c:
(nautilus_make_directory_and_parents):
Moved nautilus_make_directory_and_parents into a place where the
thumbnail code can share it instead of requiring its own copy.
* libnautilus-extensions/nautilus-global-preferences.h:
* libnautilus-extensions/nautilus-global-preferences.c:
(destroy_global_prefs_dialog), (global_preferences_get_dialog),
(nautilus_global_preferences_dialog_update),
(nautilus_global_preferences_initialize):
* libnautilus-extensions/nautilus-preferences.h:
* libnautilus-extensions/nautilus-preferences.c:
(preferences_initialize_if_needed), (preferences_shutdown):
* src/nautilus-application.c: (nautilus_application_destroy):
Changed code so that it cleans up with g_atexit instead of with an
explicit shutdown call. This makes it sequence correctly with
other atexit code.
* libnautilus-extensions/nautilus-icon-canvas-item.h:
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_destroy),
(nautilus_icon_canvas_item_set_attach_points),
(emblem_layout_next):
* libnautilus-extensions/nautilus-icon-container.c:
(nautilus_icon_container_update_icon):
Added a Nautilus prefix to the EmblemAttachPoints typedef, since
it's public.
* libnautilus-extensions/nautilus-icon-factory.h:
* libnautilus-extensions/nautilus-icon-factory.c:
Changed the icon factory structure so that it will actually free
pixbufs when done with them. Made some other small fixes to the
icon factory in passing, including removing some redundant code
and fixing the logic for getting custom icons and deleting the
icon factory and g_atexit time.
* src/file-manager/fm-icon-view.c: (play_file), (preview_sound):
Restructured the logic for playing sound previews a little to get
rid of compiler warnings and close some loopholes in the old code.
* src/nautilus-main.c: (is_event_loop_needed),
(quit_if_in_main_loop), (nautilus_gtk_main_quit_all),
(event_loop_unregister), (nautilus_main_event_loop_register),
(nautilus_main_is_event_loop_mainstay),
(nautilus_main_event_loop_quit), (main): Fixed the main loop
quitting logic so that it is a bit simpler and works with the
gnome-vfs code that runs event handling after the last main loop
is gone.
2000-09-20 00:44:07 +00:00
|
|
|
}
|
2000-08-02 08:11:46 +00:00
|
|
|
|
2007-11-30 14:51:10 +00:00
|
|
|
x = layout->icon_rect.x0 + attach_points[layout->index].x;
|
|
|
|
y = layout->icon_rect.y0 + attach_points[layout->index].y;
|
2000-08-02 08:11:46 +00:00
|
|
|
|
|
|
|
layout->index += 1;
|
|
|
|
|
|
|
|
/* Return the rectangle and pixbuf. */
|
|
|
|
*emblem_pixbuf = pixbuf;
|
|
|
|
emblem_rect->x0 = x - width / 2;
|
|
|
|
emblem_rect->y0 = y - height / 2;
|
|
|
|
emblem_rect->x1 = emblem_rect->x0 + width;
|
|
|
|
emblem_rect->y1 = emblem_rect->y0 + height;
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
for (;;) {
|
|
|
|
|
|
|
|
/* Find the side to lay out along. */
|
|
|
|
switch (layout->side) {
|
|
|
|
case RIGHT_SIDE:
|
|
|
|
x = layout->icon_rect.x1;
|
2007-11-12 10:15:05 +00:00
|
|
|
y = is_rtl ? layout->icon_rect.y1 : layout->icon_rect.y0;
|
2000-03-07 01:10:04 +00:00
|
|
|
break;
|
|
|
|
case BOTTOM_SIDE:
|
2007-11-12 10:15:05 +00:00
|
|
|
x = is_rtl ? layout->icon_rect.x0 : layout->icon_rect.x1;
|
2000-03-07 01:10:04 +00:00
|
|
|
y = layout->icon_rect.y1;
|
|
|
|
break;
|
|
|
|
case LEFT_SIDE:
|
|
|
|
x = layout->icon_rect.x0;
|
2007-11-12 10:15:05 +00:00
|
|
|
y = is_rtl ? layout->icon_rect.y0 : layout->icon_rect.y1;
|
2000-03-07 01:10:04 +00:00
|
|
|
break;
|
|
|
|
case TOP_SIDE:
|
2007-11-12 10:15:05 +00:00
|
|
|
x = is_rtl ? layout->icon_rect.x1 : layout->icon_rect.x0;
|
2000-03-07 01:10:04 +00:00
|
|
|
y = layout->icon_rect.y0;
|
|
|
|
break;
|
Fix all the warnings -Wuninitialized found. Quite a number of them were
2000-09-05 Pavel Cisler <pavel@eazel.com>
* components/help/converters/gnome-db2html2/gdb3html.c:
(xml_parse_document):
* components/help/hyperbola-nav-index.c: (end_element):
* components/services/summary/nautilus-view/nautilus-summary-view.c
: (logout_button_cb):
* components/services/time/service/trilobite-eazel-time-service.c:
(trilobite_eazel_time_service_do_http_request):
* components/tree/nautilus-tree-view.c:
* configure.in:
* libnautilus-extensions/bonobo-stream-vfs.c:
(bonobo_stream_vfs_open):
* libnautilus-extensions/nautilus-background.c:
(nautilus_background_draw), (nautilus_background_draw_aa):
* libnautilus-extensions/nautilus-customization-data.c:
(nautilus_customization_data_new):
* libnautilus-extensions/nautilus-directory-background.c:
(nautilus_directory_background_write_desktop_settings):
* libnautilus-extensions/nautilus-file-operations.c:
(nautilus_file_operations_move_to_trash), (do_empty_trash):
* libnautilus-extensions/nautilus-file.c: (nautilus_file_dump):
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(draw_or_measure_label_text), (emblem_layout_next):
* libnautilus-extensions/nautilus-icon-factory.c:
(get_image_from_cache):
* libnautilus-extensions/nautilus-icon-text-item.c:
(iti_paint_text):
* libnautilus-extensions/nautilus-list.c: (draw_cell), (draw_row):
* libnautilus-extensions/nautilus-mime-actions.c:
(nautilus_mime_add_application_to_short_list_for_uri):
* libnautilus-extensions/nautilus-program-chooser.c:
(program_file_pair_get_short_status_text),
(program_file_pair_get_long_status_text):
* libnautilus-extensions/nautilus-program-choosing.c:
(nautilus_choose_component_for_file),
(nautilus_choose_application_for_file):
* libnautilus-extensions/nautilus-scalable-font.c:
(nautilus_scalable_font_draw_text_lines_with_dimensions):
* libnautilus-extensions/nautilus-theme.c:
(nautilus_theme_make_selector):
* librsvg/rsvg-ft.c: (rsvg_ft_get_glyph):
* librsvg/test-ft-gtk.c: (set_text):
* librsvg/test-ft.c: (save_pixbuf_to_file_internal),
(save_pixbuf_to_file):
* librsvg/test-rsvg.c: (save_pixbuf_to_file_internal),
(save_pixbuf_to_file):
* src/file-manager/fm-directory-view.c: (display_pending_files),
(compute_menu_item_info):
* src/file-manager/fm-icon-view.c: (compute_menu_item_info):
* src/file-manager/fm-list-view.c: (get_column_from_attribute):
* src/nautilus-application.c: (nautilus_application_startup):
* src/nautilus-search-bar-criterion.c:
(nautilus_search_bar_criterion_next_new),
(nautilus_search_bar_criterion_get_location),
(get_date_modified_location_for):
* src/nautilus-sidebar-tabs.c: (draw_one_tab_themed),
(draw_or_layout_all_tabs):
* src/nautilus-toolbar.c: (nautilus_toolbar_size_allocate):
* src/nautilus-window-manage-views.c:
(nautilus_window_get_current_location_title):
* test/test-nautilus-label.c: (justification_changed_callback):
Fix all the warnings -Wuninitialized found.
Quite a number of them were actual bugs.
Turn on -Wuninitialized in configure.in now that ORBit generates
warning-free code.
2000-09-05 20:38:10 +00:00
|
|
|
default:
|
|
|
|
g_assert_not_reached ();
|
|
|
|
x = 0;
|
|
|
|
y = 0;
|
|
|
|
break;
|
2000-03-07 01:10:04 +00:00
|
|
|
}
|
|
|
|
if (layout->position != 0) {
|
|
|
|
switch (layout->side) {
|
|
|
|
case RIGHT_SIDE:
|
2007-11-12 10:15:05 +00:00
|
|
|
y += (is_rtl ? -1 : 1) * (layout->position + height / 2);
|
2000-03-07 01:10:04 +00:00
|
|
|
break;
|
|
|
|
case BOTTOM_SIDE:
|
2007-11-12 10:15:05 +00:00
|
|
|
x += (is_rtl ? 1 : -1 ) * (layout->position + width / 2);
|
2000-03-07 01:10:04 +00:00
|
|
|
break;
|
|
|
|
case LEFT_SIDE:
|
2007-11-12 10:15:05 +00:00
|
|
|
y += (is_rtl ? 1 : -1) * (layout->position + height / 2);
|
2000-03-07 01:10:04 +00:00
|
|
|
break;
|
|
|
|
case TOP_SIDE:
|
2007-11-12 10:15:05 +00:00
|
|
|
x += (is_rtl ? -1 : 1) * (layout->position + width / 2);
|
2000-03-07 01:10:04 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Check to see if emblem fits in current side. */
|
2000-03-09 21:09:20 +00:00
|
|
|
if (x >= layout->icon_rect.x0 && x <= layout->icon_rect.x1
|
|
|
|
&& y >= layout->icon_rect.y0 && y <= layout->icon_rect.y1) {
|
2000-03-07 01:10:04 +00:00
|
|
|
|
|
|
|
/* It fits. */
|
|
|
|
|
|
|
|
/* Advance along the side. */
|
|
|
|
switch (layout->side) {
|
|
|
|
case RIGHT_SIDE:
|
|
|
|
case LEFT_SIDE:
|
|
|
|
layout->position += height + EMBLEM_SPACING;
|
|
|
|
break;
|
|
|
|
case BOTTOM_SIDE:
|
|
|
|
case TOP_SIDE:
|
|
|
|
layout->position += width + EMBLEM_SPACING;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Return the rectangle and pixbuf. */
|
|
|
|
*emblem_pixbuf = pixbuf;
|
|
|
|
emblem_rect->x0 = x - width / 2;
|
|
|
|
emblem_rect->y0 = y - height / 2;
|
|
|
|
emblem_rect->x1 = emblem_rect->x0 + width;
|
|
|
|
emblem_rect->y1 = emblem_rect->y0 + height;
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* It doesn't fit, so move to the next side. */
|
|
|
|
switch (layout->side) {
|
|
|
|
case RIGHT_SIDE:
|
2007-11-12 10:15:05 +00:00
|
|
|
layout->side = is_rtl ? TOP_SIDE : BOTTOM_SIDE;
|
2000-03-07 01:10:04 +00:00
|
|
|
break;
|
|
|
|
case BOTTOM_SIDE:
|
2007-11-12 10:15:05 +00:00
|
|
|
layout->side = is_rtl ? RIGHT_SIDE : LEFT_SIDE;
|
2000-03-07 01:10:04 +00:00
|
|
|
break;
|
|
|
|
case LEFT_SIDE:
|
2007-11-12 10:15:05 +00:00
|
|
|
layout->side = is_rtl ? BOTTOM_SIDE : TOP_SIDE;
|
2000-03-07 01:10:04 +00:00
|
|
|
break;
|
|
|
|
case TOP_SIDE:
|
|
|
|
default:
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
layout->position = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
draw_pixbuf (GdkPixbuf *pixbuf, GdkDrawable *drawable, int x, int y)
|
|
|
|
{
|
2001-09-15 19:18:15 +00:00
|
|
|
/* FIXME bugzilla.gnome.org 40703:
|
2000-04-27 17:18:04 +00:00
|
|
|
* Dither would be better if we passed dither values.
|
|
|
|
*/
|
2003-02-28 15:15:05 +00:00
|
|
|
gdk_draw_pixbuf (drawable, NULL, pixbuf, 0, 0, x, y,
|
|
|
|
gdk_pixbuf_get_width (pixbuf),
|
|
|
|
gdk_pixbuf_get_height (pixbuf),
|
|
|
|
GDK_RGB_DITHER_NORMAL, 0, 0);
|
2000-03-07 01:10:04 +00:00
|
|
|
}
|
|
|
|
|
2006-11-30 11:10:31 +00:00
|
|
|
/* should be moved to libeel! */
|
|
|
|
static guchar
|
|
|
|
nautilus_icon_canvas_lighten_pixbuf_component (guchar cur_value, guint lighten_value) {
|
|
|
|
int new_value = cur_value;
|
|
|
|
if (lighten_value > 0) {
|
|
|
|
new_value += lighten_value + (new_value >> 3);
|
|
|
|
if (new_value > 255) {
|
|
|
|
new_value = 255;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (guchar) new_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* should be moved to libeel! */
|
|
|
|
static GdkPixbuf *
|
|
|
|
nautilus_icon_canvas_lighten_pixbuf (GdkPixbuf* src, guint lighten_value) {
|
|
|
|
GdkPixbuf *dest;
|
|
|
|
int i, j;
|
|
|
|
int width, height, has_alpha, src_row_stride, dst_row_stride;
|
|
|
|
guchar *target_pixels, *original_pixels;
|
|
|
|
guchar *pixsrc, *pixdest;
|
|
|
|
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (gdk_pixbuf_get_colorspace (src) == GDK_COLORSPACE_RGB);
|
|
|
|
g_assert ((!gdk_pixbuf_get_has_alpha (src)
|
2006-11-30 11:10:31 +00:00
|
|
|
&& gdk_pixbuf_get_n_channels (src) == 3)
|
|
|
|
|| (gdk_pixbuf_get_has_alpha (src)
|
2008-04-30 04:56:59 +00:00
|
|
|
&& gdk_pixbuf_get_n_channels (src) == 4));
|
|
|
|
g_assert (gdk_pixbuf_get_bits_per_sample (src) == 8);
|
2006-11-30 11:10:31 +00:00
|
|
|
|
|
|
|
dest = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (src),
|
|
|
|
gdk_pixbuf_get_has_alpha (src),
|
|
|
|
gdk_pixbuf_get_bits_per_sample (src),
|
|
|
|
gdk_pixbuf_get_width (src),
|
|
|
|
gdk_pixbuf_get_height (src));
|
|
|
|
|
|
|
|
has_alpha = gdk_pixbuf_get_has_alpha (src);
|
|
|
|
width = gdk_pixbuf_get_width (src);
|
|
|
|
height = gdk_pixbuf_get_height (src);
|
|
|
|
dst_row_stride = gdk_pixbuf_get_rowstride (dest);
|
|
|
|
src_row_stride = gdk_pixbuf_get_rowstride (src);
|
|
|
|
target_pixels = gdk_pixbuf_get_pixels (dest);
|
|
|
|
original_pixels = gdk_pixbuf_get_pixels (src);
|
|
|
|
|
|
|
|
for (i = 0; i < height; i++) {
|
|
|
|
pixdest = target_pixels + i * dst_row_stride;
|
|
|
|
pixsrc = original_pixels + i * src_row_stride;
|
|
|
|
for (j = 0; j < width; j++) {
|
|
|
|
*pixdest++ = nautilus_icon_canvas_lighten_pixbuf_component (*pixsrc++, lighten_value);
|
|
|
|
*pixdest++ = nautilus_icon_canvas_lighten_pixbuf_component (*pixsrc++, lighten_value);
|
|
|
|
*pixdest++ = nautilus_icon_canvas_lighten_pixbuf_component (*pixsrc++, lighten_value);
|
|
|
|
if (has_alpha) {
|
|
|
|
*pixdest++ = *pixsrc++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return dest;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static GdkPixbuf *
|
|
|
|
render_icon (GdkPixbuf *pixbuf, guint render_mode, guint saturation, guint brightness, guint lighten_value, guint color)
|
|
|
|
{
|
|
|
|
GdkPixbuf *temp_pixbuf, *old_pixbuf;
|
|
|
|
|
|
|
|
if (render_mode == 1) {
|
|
|
|
/* lighten icon */
|
|
|
|
temp_pixbuf = eel_create_spotlight_pixbuf (pixbuf);
|
|
|
|
}
|
|
|
|
else if (render_mode == 2) {
|
|
|
|
/* colorize icon */
|
|
|
|
temp_pixbuf = eel_create_colorized_pixbuf (pixbuf,
|
|
|
|
EEL_RGBA_COLOR_GET_R (color),
|
|
|
|
EEL_RGBA_COLOR_GET_G (color),
|
|
|
|
EEL_RGBA_COLOR_GET_B (color));
|
|
|
|
} else if (render_mode == 3) {
|
|
|
|
/* monochromely colorize icon */
|
|
|
|
old_pixbuf = eel_create_darkened_pixbuf (pixbuf, 0, 255);
|
|
|
|
temp_pixbuf = eel_create_colorized_pixbuf (old_pixbuf,
|
|
|
|
EEL_RGBA_COLOR_GET_R (color),
|
|
|
|
EEL_RGBA_COLOR_GET_G (color),
|
|
|
|
EEL_RGBA_COLOR_GET_B (color));
|
|
|
|
g_object_unref (old_pixbuf);
|
|
|
|
} else {
|
|
|
|
temp_pixbuf = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (saturation < 255 || brightness < 255 || temp_pixbuf == NULL) { // temp_pixbuf == NULL just for safer code (return copy)
|
|
|
|
old_pixbuf = temp_pixbuf;
|
|
|
|
temp_pixbuf = eel_create_darkened_pixbuf (temp_pixbuf ? temp_pixbuf : pixbuf, saturation, brightness);
|
|
|
|
if (old_pixbuf) {
|
|
|
|
g_object_unref (old_pixbuf);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (lighten_value > 0) {
|
|
|
|
old_pixbuf = temp_pixbuf;
|
|
|
|
temp_pixbuf = nautilus_icon_canvas_lighten_pixbuf (temp_pixbuf ? temp_pixbuf : pixbuf, lighten_value);
|
|
|
|
if (old_pixbuf) {
|
|
|
|
g_object_unref (old_pixbuf);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return temp_pixbuf;
|
|
|
|
}
|
|
|
|
|
2000-05-23 08:03:25 +00:00
|
|
|
/* shared code to highlight or dim the passed-in pixbuf */
|
|
|
|
static GdkPixbuf *
|
2001-04-19 22:42:48 +00:00
|
|
|
real_map_pixbuf (NautilusIconCanvasItem *icon_item)
|
2000-05-23 08:03:25 +00:00
|
|
|
{
|
2002-09-26 10:07:47 +00:00
|
|
|
EelCanvas *canvas;
|
2000-05-31 05:28:31 +00:00
|
|
|
char *audio_filename;
|
2006-11-30 11:10:31 +00:00
|
|
|
NautilusIconContainer *container;
|
2000-05-31 05:28:31 +00:00
|
|
|
GdkPixbuf *temp_pixbuf, *old_pixbuf, *audio_pixbuf;
|
2008-10-07 19:49:14 +00:00
|
|
|
int emblem_size;
|
2006-11-30 11:10:31 +00:00
|
|
|
guint render_mode, saturation, brightness, lighten;
|
2000-05-31 05:28:31 +00:00
|
|
|
|
2000-05-23 08:03:25 +00:00
|
|
|
temp_pixbuf = icon_item->details->pixbuf;
|
2002-09-26 10:07:47 +00:00
|
|
|
canvas = EEL_CANVAS_ITEM(icon_item)->canvas;
|
2006-11-30 11:10:31 +00:00
|
|
|
container = NAUTILUS_ICON_CONTAINER (canvas);
|
2001-04-19 22:42:48 +00:00
|
|
|
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_ref (temp_pixbuf);
|
2001-04-19 22:42:48 +00:00
|
|
|
|
2000-05-23 08:03:25 +00:00
|
|
|
if (icon_item->details->is_prelit) {
|
2001-04-19 22:42:48 +00:00
|
|
|
old_pixbuf = temp_pixbuf;
|
2006-11-30 11:10:31 +00:00
|
|
|
|
|
|
|
gtk_widget_style_get (GTK_WIDGET (container),
|
|
|
|
"prelight_icon_render_mode", &render_mode,
|
|
|
|
"prelight_icon_saturation", &saturation,
|
|
|
|
"prelight_icon_brightness", &brightness,
|
|
|
|
"prelight_icon_lighten", &lighten,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
if (render_mode > 0 || saturation < 255 || brightness < 255) {
|
|
|
|
temp_pixbuf = render_icon (temp_pixbuf,
|
|
|
|
render_mode,
|
|
|
|
saturation,
|
|
|
|
brightness,
|
|
|
|
lighten,
|
|
|
|
container->details->prelight_icon_color_rgba);
|
|
|
|
g_object_unref (old_pixbuf);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-04-19 22:42:48 +00:00
|
|
|
|
2001-09-15 19:18:15 +00:00
|
|
|
/* FIXME bugzilla.gnome.org 42471: This hard-wired image is inappropriate to
|
2000-06-23 17:51:53 +00:00
|
|
|
* this level of code, which shouldn't know that the
|
|
|
|
* preview is audio, nor should it have an icon
|
|
|
|
* hard-wired in.
|
|
|
|
*/
|
|
|
|
|
2000-05-31 05:28:31 +00:00
|
|
|
/* if the icon is currently being previewed, superimpose an image to indicate that */
|
|
|
|
/* audio is the only kind of previewing right now, so this code isn't as general as it could be */
|
2000-06-23 17:51:53 +00:00
|
|
|
if (icon_item->details->is_active) {
|
2008-10-07 19:49:14 +00:00
|
|
|
emblem_size = nautilus_icon_get_emblem_size_for_icon_size (gdk_pixbuf_get_width (temp_pixbuf));
|
2000-06-23 17:51:53 +00:00
|
|
|
/* Load the audio symbol. */
|
2005-03-31 01:14:19 +00:00
|
|
|
audio_filename = nautilus_pixmap_file ("audio.svg");
|
2000-09-02 07:56:40 +00:00
|
|
|
if (audio_filename != NULL) {
|
2008-10-07 19:49:14 +00:00
|
|
|
audio_pixbuf = gdk_pixbuf_new_from_file_at_scale (audio_filename,
|
|
|
|
emblem_size, emblem_size,
|
|
|
|
TRUE,
|
|
|
|
NULL);
|
2000-09-02 07:56:40 +00:00
|
|
|
} else {
|
|
|
|
audio_pixbuf = NULL;
|
|
|
|
}
|
2000-05-31 05:28:31 +00:00
|
|
|
|
2000-06-23 17:51:53 +00:00
|
|
|
/* Composite it onto the icon. */
|
|
|
|
if (audio_pixbuf != NULL) {
|
|
|
|
gdk_pixbuf_composite
|
|
|
|
(audio_pixbuf,
|
|
|
|
temp_pixbuf,
|
|
|
|
0, 0,
|
|
|
|
gdk_pixbuf_get_width (temp_pixbuf),
|
|
|
|
gdk_pixbuf_get_height(temp_pixbuf),
|
2000-08-12 07:00:39 +00:00
|
|
|
0, 0,
|
2005-03-31 01:14:19 +00:00
|
|
|
1.0, 1.0,
|
2000-06-23 17:51:53 +00:00
|
|
|
GDK_INTERP_BILINEAR, 0xFF);
|
|
|
|
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_unref (audio_pixbuf);
|
2000-05-31 05:28:31 +00:00
|
|
|
}
|
|
|
|
|
2000-06-23 17:51:53 +00:00
|
|
|
g_free (audio_filename);
|
2000-05-31 05:28:31 +00:00
|
|
|
}
|
2000-05-23 08:03:25 +00:00
|
|
|
}
|
2003-06-29 18:03:21 +00:00
|
|
|
|
2000-06-23 17:51:53 +00:00
|
|
|
if (icon_item->details->is_highlighted_for_selection
|
|
|
|
|| icon_item->details->is_highlighted_for_drop) {
|
2003-06-29 18:03:21 +00:00
|
|
|
guint color;
|
|
|
|
|
2000-05-23 08:03:25 +00:00
|
|
|
old_pixbuf = temp_pixbuf;
|
2003-06-29 18:03:21 +00:00
|
|
|
|
|
|
|
color = GTK_WIDGET_HAS_FOCUS (GTK_WIDGET (canvas)) ? NAUTILUS_ICON_CONTAINER (canvas)->details->highlight_color_rgba : NAUTILUS_ICON_CONTAINER (canvas)->details->active_color_rgba;
|
|
|
|
|
|
|
|
temp_pixbuf = eel_create_colorized_pixbuf (temp_pixbuf,
|
|
|
|
EEL_RGBA_COLOR_GET_R (color),
|
2006-11-30 11:10:31 +00:00
|
|
|
EEL_RGBA_COLOR_GET_G (color),
|
2003-06-29 18:03:21 +00:00
|
|
|
EEL_RGBA_COLOR_GET_B (color));
|
|
|
|
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_unref (old_pixbuf);
|
2000-05-23 08:03:25 +00:00
|
|
|
}
|
|
|
|
|
2006-11-30 11:10:31 +00:00
|
|
|
if (!icon_item->details->is_active
|
|
|
|
&& !icon_item->details->is_prelit
|
|
|
|
&& !icon_item->details->is_highlighted_for_selection
|
|
|
|
&& !icon_item->details->is_highlighted_for_drop) {
|
|
|
|
old_pixbuf = temp_pixbuf;
|
|
|
|
|
|
|
|
gtk_widget_style_get (GTK_WIDGET (container),
|
|
|
|
"normal_icon_render_mode", &render_mode,
|
|
|
|
"normal_icon_saturation", &saturation,
|
|
|
|
"normal_icon_brightness", &brightness,
|
|
|
|
"normal_icon_lighten", &lighten,
|
|
|
|
NULL);
|
|
|
|
if (render_mode > 0 || saturation < 255 || brightness < 255) {
|
|
|
|
/* if theme requests colorization */
|
|
|
|
temp_pixbuf = render_icon (temp_pixbuf,
|
|
|
|
render_mode,
|
|
|
|
saturation,
|
|
|
|
brightness,
|
|
|
|
lighten,
|
|
|
|
container->details->normal_icon_color_rgba);
|
|
|
|
g_object_unref (old_pixbuf);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2000-05-23 08:03:25 +00:00
|
|
|
return temp_pixbuf;
|
|
|
|
}
|
|
|
|
|
2001-04-19 22:42:48 +00:00
|
|
|
static GdkPixbuf *
|
|
|
|
map_pixbuf (NautilusIconCanvasItem *icon_item)
|
|
|
|
{
|
|
|
|
if (!(icon_item->details->rendered_pixbuf != NULL
|
|
|
|
&& icon_item->details->rendered_is_active == icon_item->details->is_active
|
|
|
|
&& icon_item->details->rendered_is_prelit == icon_item->details->is_prelit
|
|
|
|
&& icon_item->details->rendered_is_highlighted_for_selection == icon_item->details->is_highlighted_for_selection
|
2003-06-29 18:03:21 +00:00
|
|
|
&& icon_item->details->rendered_is_highlighted_for_drop == icon_item->details->is_highlighted_for_drop
|
|
|
|
&& (icon_item->details->is_highlighted_for_selection && icon_item->details->rendered_is_focused == GTK_WIDGET_HAS_FOCUS (EEL_CANVAS_ITEM (icon_item)->canvas)))) {
|
2001-04-19 22:42:48 +00:00
|
|
|
if (icon_item->details->rendered_pixbuf != NULL) {
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_unref (icon_item->details->rendered_pixbuf);
|
2001-04-19 22:42:48 +00:00
|
|
|
}
|
|
|
|
icon_item->details->rendered_pixbuf = real_map_pixbuf (icon_item);
|
|
|
|
icon_item->details->rendered_is_active = icon_item->details->is_active;
|
|
|
|
icon_item->details->rendered_is_prelit = icon_item->details->is_prelit;
|
|
|
|
icon_item->details->rendered_is_highlighted_for_selection = icon_item->details->is_highlighted_for_selection;
|
|
|
|
icon_item->details->rendered_is_highlighted_for_drop = icon_item->details->is_highlighted_for_drop;
|
2003-06-29 18:03:21 +00:00
|
|
|
icon_item->details->rendered_is_focused = GTK_WIDGET_HAS_FOCUS (EEL_CANVAS_ITEM (icon_item)->canvas);
|
2001-04-19 22:42:48 +00:00
|
|
|
}
|
|
|
|
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_ref (icon_item->details->rendered_pixbuf);
|
2001-04-19 22:42:48 +00:00
|
|
|
|
|
|
|
return icon_item->details->rendered_pixbuf;
|
|
|
|
}
|
|
|
|
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
static void
|
2006-04-18 16:54:31 +00:00
|
|
|
draw_embedded_text (NautilusIconCanvasItem *item,
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
GdkDrawable *drawable,
|
|
|
|
int x, int y)
|
|
|
|
{
|
|
|
|
GdkGC *gc;
|
|
|
|
GdkRectangle clip_rect;
|
2006-04-18 16:54:31 +00:00
|
|
|
PangoLayout *layout;
|
|
|
|
PangoContext *context;
|
|
|
|
PangoFontDescription *desc;
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
if (item->details->embedded_text == NULL ||
|
|
|
|
item->details->embedded_text_rect.width == 0 ||
|
|
|
|
item->details->embedded_text_rect.height == 0) {
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
if (item->details->embedded_text_layout != NULL) {
|
|
|
|
layout = g_object_ref (item->details->embedded_text_layout);
|
|
|
|
} else {
|
|
|
|
context = gtk_widget_get_pango_context (GTK_WIDGET (EEL_CANVAS_ITEM (item)->canvas));
|
|
|
|
layout = pango_layout_new (context);
|
|
|
|
pango_layout_set_text (layout, item->details->embedded_text, -1);
|
|
|
|
|
|
|
|
desc = pango_font_description_from_string ("monospace 6");
|
|
|
|
pango_layout_set_font_description (layout, desc);
|
|
|
|
pango_font_description_free (desc);
|
|
|
|
|
|
|
|
if (item->details->is_visible) {
|
|
|
|
item->details->embedded_text_layout = g_object_ref (layout);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
gc = gdk_gc_new (drawable);
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
clip_rect.x = x + item->details->embedded_text_rect.x;
|
|
|
|
clip_rect.y = y + item->details->embedded_text_rect.y;
|
|
|
|
clip_rect.width = item->details->embedded_text_rect.width;
|
|
|
|
clip_rect.height = item->details->embedded_text_rect.height;
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
|
|
|
|
gdk_gc_set_clip_rectangle (gc, &clip_rect);
|
|
|
|
|
|
|
|
gdk_draw_layout (drawable, gc,
|
2006-04-18 16:54:31 +00:00
|
|
|
x + item->details->embedded_text_rect.x,
|
|
|
|
y + item->details->embedded_text_rect.y,
|
|
|
|
layout);
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
|
|
|
|
g_object_unref (gc);
|
2006-04-18 16:54:31 +00:00
|
|
|
g_object_unref (layout);
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
}
|
|
|
|
|
2000-05-22 22:06:46 +00:00
|
|
|
/* Draw the icon item for non-anti-aliased mode. */
|
2000-01-25 21:17:05 +00:00
|
|
|
static void
|
2002-09-26 10:07:47 +00:00
|
|
|
nautilus_icon_canvas_item_draw (EelCanvasItem *item, GdkDrawable *drawable,
|
|
|
|
GdkEventExpose *expose)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
2000-03-22 00:29:07 +00:00
|
|
|
NautilusIconCanvasItem *icon_item;
|
|
|
|
NautilusIconCanvasItemDetails *details;
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect icon_rect, emblem_rect;
|
2000-03-07 01:10:04 +00:00
|
|
|
EmblemLayout emblem_layout;
|
2000-05-23 08:03:25 +00:00
|
|
|
GdkPixbuf *emblem_pixbuf, *temp_pixbuf;
|
2003-06-12 11:09:28 +00:00
|
|
|
GdkRectangle draw_rect, pixbuf_rect;
|
2007-11-12 10:15:05 +00:00
|
|
|
gboolean is_rtl;
|
2000-04-17 21:07:33 +00:00
|
|
|
|
2000-03-22 00:29:07 +00:00
|
|
|
icon_item = NAUTILUS_ICON_CANVAS_ITEM (item);
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
details = icon_item->details;
|
|
|
|
|
|
|
|
/* Draw the pixbuf. */
|
2000-03-07 01:10:04 +00:00
|
|
|
if (details->pixbuf == NULL) {
|
|
|
|
return;
|
2000-01-31 01:30:16 +00:00
|
|
|
}
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
icon_rect = icon_item->details->canvas_rect;
|
2003-06-12 11:09:28 +00:00
|
|
|
|
2000-03-26 05:20:55 +00:00
|
|
|
/* if the pre-lit or selection flag is set, make a pre-lit or darkened pixbuf and draw that instead */
|
2006-11-30 11:10:31 +00:00
|
|
|
/* and colorize normal pixbuf if rc wants that */
|
2000-10-11 08:13:07 +00:00
|
|
|
temp_pixbuf = map_pixbuf (icon_item);
|
2003-06-12 11:09:28 +00:00
|
|
|
pixbuf_rect.x = icon_rect.x0;
|
|
|
|
pixbuf_rect.y = icon_rect.y0;
|
|
|
|
pixbuf_rect.width = gdk_pixbuf_get_width (temp_pixbuf);
|
|
|
|
pixbuf_rect.height = gdk_pixbuf_get_height (temp_pixbuf);
|
|
|
|
if (gdk_rectangle_intersect (&(expose->area), &pixbuf_rect, &draw_rect)) {
|
|
|
|
gdk_draw_pixbuf (drawable,
|
|
|
|
NULL,
|
|
|
|
temp_pixbuf,
|
|
|
|
draw_rect.x - pixbuf_rect.x,
|
|
|
|
draw_rect.y - pixbuf_rect.y,
|
|
|
|
draw_rect.x,
|
|
|
|
draw_rect.y,
|
|
|
|
draw_rect.width,
|
|
|
|
draw_rect.height,
|
|
|
|
GDK_RGB_DITHER_NORMAL,
|
|
|
|
0,0);
|
|
|
|
}
|
2001-12-07 00:55:34 +00:00
|
|
|
g_object_unref (temp_pixbuf);
|
2000-03-07 01:10:04 +00:00
|
|
|
|
Update according to NautilusIconFactory API changes.
2003-03-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-bookmark.c:
(nautilus_bookmark_get_pixbuf), (nautilus_bookmark_update_icon):
* libnautilus-private/nautilus-emblem-utils.c:
(nautilus_emblem_rename_emblem):
* src/nautilus-sidebar-title.c: (update_emblems):
* src/file-manager/fm-directory-view.c: (ready_to_load):
Update according to NautilusIconFactory API changes.
* libnautilus-private/nautilus-file.h:
* libnautilus-private/nautilus-file.c:
(nautilus_file_peek_top_left_text),
(nautilus_file_get_top_left_text):
Add needs_loading out parameter to nautilus_file_peek_top_left_text.
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_set_embedded_text),
(draw_embedded_text), (nautilus_icon_canvas_item_draw):
Render embedded text on exposes.
(nautilus_icon_canvas_item_get_image):
Return a GdkPixmap + mask instead of pixbuf, so that
we can do the text rendering on it.
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_clear), (icon_destroy),
(nautilus_icon_container_get_icon_images),
(nautilus_icon_container_start_monitor_top_left),
(nautilus_icon_container_stop_monitor_top_left),
(nautilus_icon_container_update_icon):
For icons that have an embedded text rect, request the
top-left text, and set the text on the canvas item.
* libnautilus-private/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag):
nautilus_icon_canvas_item_get_image now returns a pixmap, handle this
change.
* libnautilus-private/nautilus-icon-factory.h:
* libnautilus-private/nautilus-icon-factory.c: (cache_key_destroy),
(nautilus_icon_factory_get_required_file_attributes),
(get_icon_from_cache), (nautilus_icon_factory_get_pixbuf_for_icon),
(cache_key_hash), (cache_key_equal),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixbuf_from_name),
(nautilus_icon_factory_remove_from_cache):
Remove all embedded text handling.
(nautilus_icon_factory_get_basic_file_attributes):
Remove, not needed anymore.
(nautilus_icon_factory_get_icon_for_file):
Pass in whether you want icons for text embedding or not.
* src/file-manager/fm-icon-container.c:
(fm_icon_container_get_icon_images),
(fm_icon_container_start_monitor_top_left),
(fm_icon_container_stop_monitor_top_left),
(fm_icon_container_class_init):
Update to new APIs. pass TRUE for embedd_text in get_icon_for_file.
Implement start/stop top left monitoring.
* src/file-manager/fm-icon-view.c:
(list_covers),(fm_icon_view_clear):
Clear the icon container before unreferencing the NautilusFiles.
Otherwise the stop_monitor call uses the unref:ed file.
2003-03-06 17:07:32 +00:00
|
|
|
draw_embedded_text (icon_item, drawable, icon_rect.x0, icon_rect.y0);
|
|
|
|
|
2007-11-12 10:15:05 +00:00
|
|
|
is_rtl = nautilus_icon_container_is_layout_rtl (NAUTILUS_ICON_CONTAINER (item->canvas));
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
/* Draw the emblem pixbufs. */
|
2007-11-12 10:15:05 +00:00
|
|
|
emblem_layout_reset (&emblem_layout, icon_item, icon_rect, is_rtl);
|
|
|
|
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect, is_rtl)) {
|
2000-03-07 01:10:04 +00:00
|
|
|
draw_pixbuf (emblem_pixbuf, drawable, emblem_rect.x0, emblem_rect.y0);
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
}
|
2000-01-31 01:30:16 +00:00
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
/* Draw stretching handles (if necessary). */
|
|
|
|
draw_stretch_handles (icon_item, drawable, &icon_rect);
|
|
|
|
|
2000-02-22 10:09:59 +00:00
|
|
|
/* Draw the label text. */
|
2004-10-22 15:44:16 +00:00
|
|
|
draw_label_text (icon_item, drawable, FALSE, icon_rect);
|
2000-01-25 21:17:05 +00:00
|
|
|
}
|
|
|
|
|
2006-02-27 12:45:41 +00:00
|
|
|
#define ZERO_WIDTH_SPACE "\xE2\x80\x8B"
|
|
|
|
|
|
|
|
#define ZERO_OR_THREE_DIGITS(p) \
|
|
|
|
(!g_ascii_isdigit (*p) || \
|
|
|
|
(g_ascii_isdigit (*(p+1)) && \
|
|
|
|
g_ascii_isdigit (*(p+2))))
|
|
|
|
|
Added compact view.
2008-03-29 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.c
(nautilus_global_preferences_get_default_folder_viewer_preference_a
s_iid):
* libnautilus-private/nautilus-global-preferences.h:
* libnautilus-private/nautilus-icon-canvas-item.c
(create_label_layout),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-container.c
(lay_down_one_column), (get_max_icon_dimensions),
(lay_down_icons_vertical), (lay_down_icons_vertical_desktop),
(lay_down_icons), (size_allocate),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_layout_mode),
(nautilus_icon_container_start_renaming_selected_item),
(nautilus_icon_container_set_forced_icon_size),
(nautilus_icon_container_set_all_columns_same_width):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-metadata.h:
* src/file-manager/fm-icon-container.c
(fm_icon_container_get_icon_images),
(fm_icon_container_get_icon_text):
* src/file-manager/fm-icon-view.c
(get_stored_icon_position_callback),
(fm_icon_view_supports_manual_layout),
(fm_icon_view_supports_tighter_layout), (update_layout_menus),
(fm_icon_view_real_set_directory_sort_reversed),
(fm_icon_view_get_directory_auto_layout),
(fm_icon_view_real_get_directory_auto_layout),
(fm_icon_view_set_directory_auto_layout),
(fm_icon_view_real_set_directory_auto_layout),
(fm_icon_view_real_set_directory_tighter_layout),
(real_supports_manual_layout), (get_default_zoom_level),
(set_labels_beside_icons), (set_columns_same_width),
(fm_icon_view_begin_loading), (fm_icon_view_set_zoom_level),
(fm_icon_view_zoom_to_level),
(fm_icon_view_restore_default_zoom_level),
(default_zoom_level_changed_callback),
(all_columns_same_width_changed_callback),
(fm_icon_view_set_property), (fm_icon_view_class_init),
(fm_icon_view_get_id), (fm_icon_view_init), (fm_icon_view_create),
(fm_compact_view_create), (fm_icon_view_is_compact),
(fm_icon_view_register):
* src/file-manager/fm-icon-view.h:
* src/nautilus-file-management-properties.c
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade:
Added compact view.
svn path=/trunk/; revision=14003
2008-03-29 21:21:47 +00:00
|
|
|
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
static PangoLayout *
|
|
|
|
create_label_layout (NautilusIconCanvasItem *item,
|
|
|
|
const char *text)
|
|
|
|
{
|
|
|
|
PangoLayout *layout;
|
Don't use custom font.
2002-05-11 Alex Larsson <alexl@redhat.com>
* components/music/nautilus-music-view.c: (set_up_tree_view):
Don't use custom font.
* libnautilus-private/apps_nautilus_preferences.schemas:
Add preferences/desktop_font.
Remove old fonts keys
* libnautilus-private/nautilus-file.c:
(nautilus_file_get_display_name_nocopy):
Don't leak.
* libnautilus-private/nautilus-global-preferences.c:
* libnautilus-private/nautilus-global-preferences.h:
Remove old font prefs. Add desktop font prefs.
* libnautilus-private/nautilus-icon-canvas-item.c:
(create_label_layout):
Use default widget font unless one is set.
* libnautilus-private/nautilus-icon-container.c: (finalize),
(style_set), (nautilus_icon_container_class_init),
(nautilus_icon_container_instance_init),
(nautilus_icon_container_set_font):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h:
Change nautilus_icon_container_set_font_name to
nautilus_icon_container_set_font.
Change font_size_table to have the difference from the base font size.
Invalidate labels on style_set.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Use default widget font for embedded text.
* src/nautilus-preferences-dialog.c:
* src/nautilus-sidebar-title.c:
Remove font prefs. Update on style_set.
* src/nautilus-sidebar-tabs.c: (nautilus_sidebar_tabs_class_init),
(nautilus_sidebar_tabs_load_theme_data), (style_set),
(nautilus_sidebar_tabs_init), (nautilus_sidebar_tabs_destroy),
(make_tab_text_layout):
Use normal gtk+ fonts.
* src/file-manager/fm-desktop-icon-view.c: (font_changed_callback),
(fm_desktop_icon_view_update_icon_container_fonts),
(fm_desktop_icon_view_init):
Use desktop font.
* src/file-manager/fm-icon-view.c:
(default_zoom_level_changed_callback), (create_icon_container),
(fm_icon_view_instance_init):
(nautilus_sidebar_title_class_init), (style_set),
(nautilus_sidebar_title_init), (update_title_font):
Remove font handling.
2002-05-11 23:53:50 +00:00
|
|
|
PangoContext *context;
|
Let "Loading" and "Empty" special nodes be italic.
2002-02-25 Anders Carlsson <andersca@gnu.org>
* components/tree/nautilus-tree-model.c:
(nautilus_tree_model_get_column_type),
(nautilus_tree_model_get_value):
* components/tree/nautilus-tree-model.h:
* components/tree/nautilus-tree-view.c: (create_tree):
Let "Loading" and "Empty" special nodes be italic.
* libnautilus-private/nautilus-global-preferences.c:
(default_font_callback):
Return "sans" here instead of "fixed"
* libnautilus-private/nautilus-icon-canvas-item.c:
(draw_or_measure_label_text), (create_label_layout),
Set font from icon container name, use gdk_gc_set_rgb_fg_color.
* libnautilus-private/nautilus-icon-container.c: (finalize):
(realize), (nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_zoom_level),
(nautilus_icon_container_request_update_all),
(nautilus_icon_container_get_label_color), (update_label_color),
(nautilus_icon_container_theme_changed),
(nautilus_icon_container_set_font_name),
(nautilus_icon_container_set_font_size_table):
Add support for setting fonts, and fix some bugs with the
label color handling.
* libnautilus-private/nautilus-icon-container.h:
Add nautilus_icon_container_set_font_name and
nautilus_icon_container_set_font_size_table.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Set the font of the embedded text to the default font.
* libnautilus-private/nautilus-icon-private.h:
Add font name and font size table variables to
NautilusIconContainerDetails.
* libnautilus-private/nautilus-program-chooser.c:
(nautilus_program_chooser_init):
Fix button ordering according to the HIG.
* src/file-manager/fm-icon-view.c:
(fm_icon_view_update_icon_container_fonts),
(fm_icon_view_update_icon_container_font_size_table):
Set font name and font size table in the icon container.
* src/nautilus-sidebar-tabs.c:
(nautilus_sidebar_tabs_load_theme_data),
(default_font_changed_callback), (nautilus_sidebar_tabs_init),
(nautilus_sidebar_tabs_destroy), (draw_one_tab_plain),
(draw_one_tab_themed):
Use the "default font" preference.
* src/nautilus-sidebar-title.c:
(nautilus_sidebar_title_class_init),
(default_font_changed_callback), (nautilus_sidebar_title_init),
(nautilus_sidebar_title_destroy), (update_title_font):
Use the "default font" preference.
* src/nautilus-window-menus.c: (help_menu_about_nautilus_callback):
Use the GnomeAbout widget.
2002-02-25 21:05:57 +00:00
|
|
|
PangoFontDescription *desc;
|
|
|
|
NautilusIconContainer *container;
|
2002-09-26 10:07:47 +00:00
|
|
|
EelCanvasItem *canvas_item;
|
2006-02-27 12:45:41 +00:00
|
|
|
GString *str;
|
|
|
|
char *zeroified_text;
|
|
|
|
const char *p;
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
canvas_item = EEL_CANVAS_ITEM (item);
|
|
|
|
|
|
|
|
container = NAUTILUS_ICON_CONTAINER (canvas_item->canvas);
|
|
|
|
context = gtk_widget_get_pango_context (GTK_WIDGET (canvas_item->canvas));
|
Don't use custom font.
2002-05-11 Alex Larsson <alexl@redhat.com>
* components/music/nautilus-music-view.c: (set_up_tree_view):
Don't use custom font.
* libnautilus-private/apps_nautilus_preferences.schemas:
Add preferences/desktop_font.
Remove old fonts keys
* libnautilus-private/nautilus-file.c:
(nautilus_file_get_display_name_nocopy):
Don't leak.
* libnautilus-private/nautilus-global-preferences.c:
* libnautilus-private/nautilus-global-preferences.h:
Remove old font prefs. Add desktop font prefs.
* libnautilus-private/nautilus-icon-canvas-item.c:
(create_label_layout):
Use default widget font unless one is set.
* libnautilus-private/nautilus-icon-container.c: (finalize),
(style_set), (nautilus_icon_container_class_init),
(nautilus_icon_container_instance_init),
(nautilus_icon_container_set_font):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h:
Change nautilus_icon_container_set_font_name to
nautilus_icon_container_set_font.
Change font_size_table to have the difference from the base font size.
Invalidate labels on style_set.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Use default widget font for embedded text.
* src/nautilus-preferences-dialog.c:
* src/nautilus-sidebar-title.c:
Remove font prefs. Update on style_set.
* src/nautilus-sidebar-tabs.c: (nautilus_sidebar_tabs_class_init),
(nautilus_sidebar_tabs_load_theme_data), (style_set),
(nautilus_sidebar_tabs_init), (nautilus_sidebar_tabs_destroy),
(make_tab_text_layout):
Use normal gtk+ fonts.
* src/file-manager/fm-desktop-icon-view.c: (font_changed_callback),
(fm_desktop_icon_view_update_icon_container_fonts),
(fm_desktop_icon_view_init):
Use desktop font.
* src/file-manager/fm-icon-view.c:
(default_zoom_level_changed_callback), (create_icon_container),
(fm_icon_view_instance_init):
(nautilus_sidebar_title_class_init), (style_set),
(nautilus_sidebar_title_init), (update_title_font):
Remove font handling.
2002-05-11 23:53:50 +00:00
|
|
|
layout = pango_layout_new (context);
|
2006-03-06 10:17:59 +00:00
|
|
|
|
2006-02-27 12:45:41 +00:00
|
|
|
zeroified_text = NULL;
|
|
|
|
|
|
|
|
if (text != NULL) {
|
|
|
|
str = g_string_new (NULL);
|
|
|
|
|
|
|
|
for (p = text; *p != '\0'; p++) {
|
|
|
|
str = g_string_append_c (str, *p);
|
|
|
|
|
|
|
|
if (*p == '_' || *p == '-' || (*p == '.' && ZERO_OR_THREE_DIGITS (p+1))) {
|
|
|
|
/* Ensure that we allow to break after '_' or '.' characters,
|
|
|
|
* if they are not likely to be part of a version information, to
|
|
|
|
* not break wrapping of foobar-0.0.1.
|
|
|
|
* Wrap before IPs and long numbers, though. */
|
|
|
|
str = g_string_append (str, ZERO_WIDTH_SPACE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
zeroified_text = g_string_free (str, FALSE);
|
|
|
|
}
|
|
|
|
|
|
|
|
pango_layout_set_text (layout, zeroified_text, -1);
|
2006-03-06 10:17:59 +00:00
|
|
|
pango_layout_set_auto_dir (layout, FALSE);
|
|
|
|
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
if (container->details->label_position == NAUTILUS_ICON_LABEL_POSITION_BESIDE) {
|
2007-11-12 10:15:05 +00:00
|
|
|
if (!nautilus_icon_container_is_layout_rtl (container)) {
|
2006-03-06 10:17:59 +00:00
|
|
|
pango_layout_set_alignment (layout, PANGO_ALIGN_LEFT);
|
|
|
|
} else {
|
|
|
|
pango_layout_set_alignment (layout, PANGO_ALIGN_RIGHT);
|
|
|
|
}
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
} else {
|
|
|
|
pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);
|
|
|
|
}
|
|
|
|
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
pango_layout_set_spacing (layout, LABEL_LINE_SPACING);
|
2002-10-04 21:32:07 +00:00
|
|
|
pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR);
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
|
Let "Loading" and "Empty" special nodes be italic.
2002-02-25 Anders Carlsson <andersca@gnu.org>
* components/tree/nautilus-tree-model.c:
(nautilus_tree_model_get_column_type),
(nautilus_tree_model_get_value):
* components/tree/nautilus-tree-model.h:
* components/tree/nautilus-tree-view.c: (create_tree):
Let "Loading" and "Empty" special nodes be italic.
* libnautilus-private/nautilus-global-preferences.c:
(default_font_callback):
Return "sans" here instead of "fixed"
* libnautilus-private/nautilus-icon-canvas-item.c:
(draw_or_measure_label_text), (create_label_layout),
Set font from icon container name, use gdk_gc_set_rgb_fg_color.
* libnautilus-private/nautilus-icon-container.c: (finalize):
(realize), (nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_zoom_level),
(nautilus_icon_container_request_update_all),
(nautilus_icon_container_get_label_color), (update_label_color),
(nautilus_icon_container_theme_changed),
(nautilus_icon_container_set_font_name),
(nautilus_icon_container_set_font_size_table):
Add support for setting fonts, and fix some bugs with the
label color handling.
* libnautilus-private/nautilus-icon-container.h:
Add nautilus_icon_container_set_font_name and
nautilus_icon_container_set_font_size_table.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Set the font of the embedded text to the default font.
* libnautilus-private/nautilus-icon-private.h:
Add font name and font size table variables to
NautilusIconContainerDetails.
* libnautilus-private/nautilus-program-chooser.c:
(nautilus_program_chooser_init):
Fix button ordering according to the HIG.
* src/file-manager/fm-icon-view.c:
(fm_icon_view_update_icon_container_fonts),
(fm_icon_view_update_icon_container_font_size_table):
Set font name and font size table in the icon container.
* src/nautilus-sidebar-tabs.c:
(nautilus_sidebar_tabs_load_theme_data),
(default_font_changed_callback), (nautilus_sidebar_tabs_init),
(nautilus_sidebar_tabs_destroy), (draw_one_tab_plain),
(draw_one_tab_themed):
Use the "default font" preference.
* src/nautilus-sidebar-title.c:
(nautilus_sidebar_title_class_init),
(default_font_changed_callback), (nautilus_sidebar_title_init),
(nautilus_sidebar_title_destroy), (update_title_font):
Use the "default font" preference.
* src/nautilus-window-menus.c: (help_menu_about_nautilus_callback):
Use the GnomeAbout widget.
2002-02-25 21:05:57 +00:00
|
|
|
/* Create a font description */
|
Don't use custom font.
2002-05-11 Alex Larsson <alexl@redhat.com>
* components/music/nautilus-music-view.c: (set_up_tree_view):
Don't use custom font.
* libnautilus-private/apps_nautilus_preferences.schemas:
Add preferences/desktop_font.
Remove old fonts keys
* libnautilus-private/nautilus-file.c:
(nautilus_file_get_display_name_nocopy):
Don't leak.
* libnautilus-private/nautilus-global-preferences.c:
* libnautilus-private/nautilus-global-preferences.h:
Remove old font prefs. Add desktop font prefs.
* libnautilus-private/nautilus-icon-canvas-item.c:
(create_label_layout):
Use default widget font unless one is set.
* libnautilus-private/nautilus-icon-container.c: (finalize),
(style_set), (nautilus_icon_container_class_init),
(nautilus_icon_container_instance_init),
(nautilus_icon_container_set_font):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h:
Change nautilus_icon_container_set_font_name to
nautilus_icon_container_set_font.
Change font_size_table to have the difference from the base font size.
Invalidate labels on style_set.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Use default widget font for embedded text.
* src/nautilus-preferences-dialog.c:
* src/nautilus-sidebar-title.c:
Remove font prefs. Update on style_set.
* src/nautilus-sidebar-tabs.c: (nautilus_sidebar_tabs_class_init),
(nautilus_sidebar_tabs_load_theme_data), (style_set),
(nautilus_sidebar_tabs_init), (nautilus_sidebar_tabs_destroy),
(make_tab_text_layout):
Use normal gtk+ fonts.
* src/file-manager/fm-desktop-icon-view.c: (font_changed_callback),
(fm_desktop_icon_view_update_icon_container_fonts),
(fm_desktop_icon_view_init):
Use desktop font.
* src/file-manager/fm-icon-view.c:
(default_zoom_level_changed_callback), (create_icon_container),
(fm_icon_view_instance_init):
(nautilus_sidebar_title_class_init), (style_set),
(nautilus_sidebar_title_init), (update_title_font):
Remove font handling.
2002-05-11 23:53:50 +00:00
|
|
|
if (container->details->font) {
|
|
|
|
desc = pango_font_description_from_string (container->details->font);
|
2002-02-27 01:17:11 +00:00
|
|
|
} else {
|
Don't use custom font.
2002-05-11 Alex Larsson <alexl@redhat.com>
* components/music/nautilus-music-view.c: (set_up_tree_view):
Don't use custom font.
* libnautilus-private/apps_nautilus_preferences.schemas:
Add preferences/desktop_font.
Remove old fonts keys
* libnautilus-private/nautilus-file.c:
(nautilus_file_get_display_name_nocopy):
Don't leak.
* libnautilus-private/nautilus-global-preferences.c:
* libnautilus-private/nautilus-global-preferences.h:
Remove old font prefs. Add desktop font prefs.
* libnautilus-private/nautilus-icon-canvas-item.c:
(create_label_layout):
Use default widget font unless one is set.
* libnautilus-private/nautilus-icon-container.c: (finalize),
(style_set), (nautilus_icon_container_class_init),
(nautilus_icon_container_instance_init),
(nautilus_icon_container_set_font):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h:
Change nautilus_icon_container_set_font_name to
nautilus_icon_container_set_font.
Change font_size_table to have the difference from the base font size.
Invalidate labels on style_set.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Use default widget font for embedded text.
* src/nautilus-preferences-dialog.c:
* src/nautilus-sidebar-title.c:
Remove font prefs. Update on style_set.
* src/nautilus-sidebar-tabs.c: (nautilus_sidebar_tabs_class_init),
(nautilus_sidebar_tabs_load_theme_data), (style_set),
(nautilus_sidebar_tabs_init), (nautilus_sidebar_tabs_destroy),
(make_tab_text_layout):
Use normal gtk+ fonts.
* src/file-manager/fm-desktop-icon-view.c: (font_changed_callback),
(fm_desktop_icon_view_update_icon_container_fonts),
(fm_desktop_icon_view_init):
Use desktop font.
* src/file-manager/fm-icon-view.c:
(default_zoom_level_changed_callback), (create_icon_container),
(fm_icon_view_instance_init):
(nautilus_sidebar_title_class_init), (style_set),
(nautilus_sidebar_title_init), (update_title_font):
Remove font handling.
2002-05-11 23:53:50 +00:00
|
|
|
desc = pango_font_description_copy (pango_context_get_font_description (context));
|
|
|
|
pango_font_description_set_size (desc,
|
|
|
|
pango_font_description_get_size (desc) +
|
|
|
|
container->details->font_size_table [container->details->zoom_level]);
|
2002-02-27 01:17:11 +00:00
|
|
|
}
|
Let "Loading" and "Empty" special nodes be italic.
2002-02-25 Anders Carlsson <andersca@gnu.org>
* components/tree/nautilus-tree-model.c:
(nautilus_tree_model_get_column_type),
(nautilus_tree_model_get_value):
* components/tree/nautilus-tree-model.h:
* components/tree/nautilus-tree-view.c: (create_tree):
Let "Loading" and "Empty" special nodes be italic.
* libnautilus-private/nautilus-global-preferences.c:
(default_font_callback):
Return "sans" here instead of "fixed"
* libnautilus-private/nautilus-icon-canvas-item.c:
(draw_or_measure_label_text), (create_label_layout),
Set font from icon container name, use gdk_gc_set_rgb_fg_color.
* libnautilus-private/nautilus-icon-container.c: (finalize):
(realize), (nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_zoom_level),
(nautilus_icon_container_request_update_all),
(nautilus_icon_container_get_label_color), (update_label_color),
(nautilus_icon_container_theme_changed),
(nautilus_icon_container_set_font_name),
(nautilus_icon_container_set_font_size_table):
Add support for setting fonts, and fix some bugs with the
label color handling.
* libnautilus-private/nautilus-icon-container.h:
Add nautilus_icon_container_set_font_name and
nautilus_icon_container_set_font_size_table.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Set the font of the embedded text to the default font.
* libnautilus-private/nautilus-icon-private.h:
Add font name and font size table variables to
NautilusIconContainerDetails.
* libnautilus-private/nautilus-program-chooser.c:
(nautilus_program_chooser_init):
Fix button ordering according to the HIG.
* src/file-manager/fm-icon-view.c:
(fm_icon_view_update_icon_container_fonts),
(fm_icon_view_update_icon_container_font_size_table):
Set font name and font size table in the icon container.
* src/nautilus-sidebar-tabs.c:
(nautilus_sidebar_tabs_load_theme_data),
(default_font_changed_callback), (nautilus_sidebar_tabs_init),
(nautilus_sidebar_tabs_destroy), (draw_one_tab_plain),
(draw_one_tab_themed):
Use the "default font" preference.
* src/nautilus-sidebar-title.c:
(nautilus_sidebar_title_class_init),
(default_font_changed_callback), (nautilus_sidebar_title_init),
(nautilus_sidebar_title_destroy), (update_title_font):
Use the "default font" preference.
* src/nautilus-window-menus.c: (help_menu_about_nautilus_callback):
Use the GnomeAbout widget.
2002-02-25 21:05:57 +00:00
|
|
|
pango_layout_set_font_description (layout, desc);
|
|
|
|
pango_font_description_free (desc);
|
2006-02-27 12:45:41 +00:00
|
|
|
g_free (zeroified_text);
|
Let "Loading" and "Empty" special nodes be italic.
2002-02-25 Anders Carlsson <andersca@gnu.org>
* components/tree/nautilus-tree-model.c:
(nautilus_tree_model_get_column_type),
(nautilus_tree_model_get_value):
* components/tree/nautilus-tree-model.h:
* components/tree/nautilus-tree-view.c: (create_tree):
Let "Loading" and "Empty" special nodes be italic.
* libnautilus-private/nautilus-global-preferences.c:
(default_font_callback):
Return "sans" here instead of "fixed"
* libnautilus-private/nautilus-icon-canvas-item.c:
(draw_or_measure_label_text), (create_label_layout),
Set font from icon container name, use gdk_gc_set_rgb_fg_color.
* libnautilus-private/nautilus-icon-container.c: (finalize):
(realize), (nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_zoom_level),
(nautilus_icon_container_request_update_all),
(nautilus_icon_container_get_label_color), (update_label_color),
(nautilus_icon_container_theme_changed),
(nautilus_icon_container_set_font_name),
(nautilus_icon_container_set_font_size_table):
Add support for setting fonts, and fix some bugs with the
label color handling.
* libnautilus-private/nautilus-icon-container.h:
Add nautilus_icon_container_set_font_name and
nautilus_icon_container_set_font_size_table.
* libnautilus-private/nautilus-icon-factory.c:
(embedded_text_font_changed_callback), (embed_text):
Set the font of the embedded text to the default font.
* libnautilus-private/nautilus-icon-private.h:
Add font name and font size table variables to
NautilusIconContainerDetails.
* libnautilus-private/nautilus-program-chooser.c:
(nautilus_program_chooser_init):
Fix button ordering according to the HIG.
* src/file-manager/fm-icon-view.c:
(fm_icon_view_update_icon_container_fonts),
(fm_icon_view_update_icon_container_font_size_table):
Set font name and font size table in the icon container.
* src/nautilus-sidebar-tabs.c:
(nautilus_sidebar_tabs_load_theme_data),
(default_font_changed_callback), (nautilus_sidebar_tabs_init),
(nautilus_sidebar_tabs_destroy), (draw_one_tab_plain),
(draw_one_tab_themed):
Use the "default font" preference.
* src/nautilus-sidebar-title.c:
(nautilus_sidebar_title_class_init),
(default_font_changed_callback), (nautilus_sidebar_title_init),
(nautilus_sidebar_title_destroy), (update_title_font):
Use the "default font" preference.
* src/nautilus-window-menus.c: (help_menu_about_nautilus_callback):
Use the GnomeAbout widget.
2002-02-25 21:05:57 +00:00
|
|
|
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
return layout;
|
|
|
|
}
|
|
|
|
|
|
|
|
static PangoLayout *
|
2006-04-18 16:54:31 +00:00
|
|
|
get_label_layout (PangoLayout **layout_cache,
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
NautilusIconCanvasItem *item,
|
|
|
|
const char *text)
|
|
|
|
{
|
2006-04-18 16:54:31 +00:00
|
|
|
PangoLayout *layout;
|
|
|
|
|
|
|
|
if (*layout_cache != NULL) {
|
|
|
|
return g_object_ref (*layout_cache);
|
|
|
|
}
|
|
|
|
|
|
|
|
layout = create_label_layout (item, text);
|
|
|
|
|
|
|
|
if (item->details->is_visible) {
|
|
|
|
*layout_cache = g_object_ref (layout);
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
}
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
return layout;
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
draw_label_layout (NautilusIconCanvasItem *item,
|
2002-01-17 22:26:06 +00:00
|
|
|
GdkDrawable *drawable,
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
PangoLayout *layout,
|
|
|
|
gboolean highlight,
|
2002-06-01 00:05:49 +00:00
|
|
|
GdkColor *label_color,
|
2002-01-17 22:26:06 +00:00
|
|
|
int x,
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
int y,
|
2002-01-17 22:26:06 +00:00
|
|
|
GdkGC *gc)
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
{
|
2002-01-17 22:26:06 +00:00
|
|
|
if (drawable == NULL) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item->details->is_renaming) {
|
|
|
|
return;
|
|
|
|
}
|
2002-01-27 07:46:12 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
if (!highlight && (NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas)->details->use_drop_shadows)) {
|
2002-08-14 21:55:01 +00:00
|
|
|
/* draw a drop shadow */
|
|
|
|
eel_gdk_draw_layout_with_drop_shadow (drawable, gc,
|
|
|
|
label_color,
|
2002-09-26 10:07:47 +00:00
|
|
|
>K_WIDGET (EEL_CANVAS_ITEM (item)->canvas)->style->black,
|
2002-08-14 21:55:01 +00:00
|
|
|
x, y,
|
|
|
|
layout);
|
2002-01-27 07:46:12 +00:00
|
|
|
} else {
|
|
|
|
gdk_draw_layout (drawable, gc,
|
|
|
|
x, y,
|
|
|
|
layout);
|
|
|
|
}
|
2002-01-17 22:26:06 +00:00
|
|
|
}
|
Do text drawing with Pango for the anti-aliased case. Remove all use of
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_init),
(nautilus_icon_canvas_item_finalize),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg), (draw_or_measure_label_text),
(measure_label_text), (create_label_layout), (get_label_layout),
(draw_label_layout), (draw_or_measure_label_text_aa),
(draw_label_text_aa), (nautilus_icon_canvas_item_class_init):
Do text drawing with Pango for the anti-aliased case. Remove all
use of the non-Pango Eel anti-aliased text drawing code.
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-container.c: (finalize),
(nautilus_icon_container_init),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_label_font_for_zoom_level):
* src/file-manager/fm-icon-view.c: (create_icon_container),
(fm_icon_view_init):
Remove the smooth-font stuff. We're going to use a single font
once we change everything to use Pango.
* icons/Makefile.am: Remove help-system icons.
* icons/hyperbola-*: Remove help-system icons.
2001-12-18 00:57:46 +00:00
|
|
|
|
2000-03-09 03:09:37 +00:00
|
|
|
/* handle events */
|
|
|
|
|
2000-03-09 21:09:20 +00:00
|
|
|
static int
|
2002-09-26 10:07:47 +00:00
|
|
|
nautilus_icon_canvas_item_event (EelCanvasItem *item, GdkEvent *event)
|
2000-03-09 03:09:37 +00:00
|
|
|
{
|
2000-03-22 00:29:07 +00:00
|
|
|
NautilusIconCanvasItem *icon_item;
|
2002-11-06 14:40:26 +00:00
|
|
|
GdkCursor *cursor;
|
2000-03-09 21:09:20 +00:00
|
|
|
|
2000-03-22 00:29:07 +00:00
|
|
|
icon_item = NAUTILUS_ICON_CANVAS_ITEM (item);
|
2000-03-09 21:09:20 +00:00
|
|
|
|
2000-03-09 03:09:37 +00:00
|
|
|
switch (event->type) {
|
2000-03-09 21:09:20 +00:00
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
if (!icon_item->details->is_prelit) {
|
|
|
|
icon_item->details->is_prelit = TRUE;
|
2008-08-16 18:29:15 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_label_size (icon_item);
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_item_request_update (item);
|
2008-08-18 14:19:15 +00:00
|
|
|
eel_canvas_item_send_behind (item,
|
|
|
|
NAUTILUS_ICON_CONTAINER (item->canvas)->details->rubberband_info.selection_rectangle);
|
|
|
|
|
2002-11-06 14:40:26 +00:00
|
|
|
/* show a hand cursor */
|
|
|
|
if (in_single_click_mode ()) {
|
|
|
|
cursor = gdk_cursor_new_for_display (gdk_display_get_default(),
|
|
|
|
GDK_HAND2);
|
|
|
|
gdk_window_set_cursor (((GdkEventAny *)event)->window, cursor);
|
|
|
|
gdk_cursor_unref (cursor);
|
|
|
|
}
|
|
|
|
|
2001-09-15 19:18:15 +00:00
|
|
|
/* FIXME bugzilla.gnome.org 42473:
|
Added more bug numbers to FIXMEs. 94 to go.
* libnautilus-extensions/nautilus-icon-canvas-item.c: (map_pixbuf),
(draw_label_text_aa), (nautilus_icon_canvas_item_event):
* libnautilus-extensions/nautilus-icon-container.c: (icon_free),
(get_all_icon_bounds), (lay_down_icons_tblr), (lay_down_icons),
(nautilus_icon_container_move_icon), (stop_rubberbanding),
(destroy), (hide_rename_widget):
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_dropped_icon_feedback),
(receive_dropped_keyword), (auto_scroll_timeout_callback),
(nautilus_icon_container_find_drop_target),
(nautilus_icon_dnd_update_drop_target), (nautilus_icon_dnd_fini):
* libnautilus-extensions/nautilus-link-set.c: (link_set_path_name),
(expand_uri):
* libnautilus-extensions/nautilus-link.c:
(nautilus_link_get_root_property),
(nautilus_link_get_additional_text), (make_local_path),
(nautilus_link_get_image_uri), (nautilus_link_get_link_uri),
(nautilus_link_get_link_type):
* src/nautilus-sidebar-title.c:
(nautilus_sidebar_title_select_text_color), (update_font),
(update_title), (update_more_info), (update_emblems),
(update_notes):
2000-08-28 23:36:35 +00:00
|
|
|
* We should emit our own signal here,
|
2000-06-23 17:51:53 +00:00
|
|
|
* not one from the container; it could hook
|
|
|
|
* up to that signal and emit one of its
|
|
|
|
* own. Doing it this way hard-codes what
|
|
|
|
* "user_data" is. Also, the two signals
|
|
|
|
* should be separate. The "unpreview" signal
|
|
|
|
* does not have a return value.
|
|
|
|
*/
|
|
|
|
icon_item->details->is_active = nautilus_icon_container_emit_preview_signal
|
|
|
|
(NAUTILUS_ICON_CONTAINER (item->canvas),
|
|
|
|
NAUTILUS_ICON_CANVAS_ITEM (item)->user_data,
|
|
|
|
TRUE);
|
2000-03-09 21:09:20 +00:00
|
|
|
}
|
2000-03-14 05:55:03 +00:00
|
|
|
return TRUE;
|
2000-03-09 03:09:37 +00:00
|
|
|
|
2000-03-09 21:09:20 +00:00
|
|
|
case GDK_LEAVE_NOTIFY:
|
2000-04-11 10:09:28 +00:00
|
|
|
if (icon_item->details->is_prelit
|
2000-06-23 17:51:53 +00:00
|
|
|
|| icon_item->details->is_highlighted_for_drop) {
|
2000-04-11 10:09:28 +00:00
|
|
|
/* When leaving, turn of the prelight state and the
|
|
|
|
* higlighted for drop. The latter gets turned on
|
|
|
|
* by the drag&drop motion callback.
|
|
|
|
*/
|
2001-09-15 19:18:15 +00:00
|
|
|
/* FIXME bugzilla.gnome.org 42473:
|
Added more bug numbers to FIXMEs. 94 to go.
* libnautilus-extensions/nautilus-icon-canvas-item.c: (map_pixbuf),
(draw_label_text_aa), (nautilus_icon_canvas_item_event):
* libnautilus-extensions/nautilus-icon-container.c: (icon_free),
(get_all_icon_bounds), (lay_down_icons_tblr), (lay_down_icons),
(nautilus_icon_container_move_icon), (stop_rubberbanding),
(destroy), (hide_rename_widget):
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_dropped_icon_feedback),
(receive_dropped_keyword), (auto_scroll_timeout_callback),
(nautilus_icon_container_find_drop_target),
(nautilus_icon_dnd_update_drop_target), (nautilus_icon_dnd_fini):
* libnautilus-extensions/nautilus-link-set.c: (link_set_path_name),
(expand_uri):
* libnautilus-extensions/nautilus-link.c:
(nautilus_link_get_root_property),
(nautilus_link_get_additional_text), (make_local_path),
(nautilus_link_get_image_uri), (nautilus_link_get_link_uri),
(nautilus_link_get_link_type):
* src/nautilus-sidebar-title.c:
(nautilus_sidebar_title_select_text_color), (update_font),
(update_title), (update_more_info), (update_emblems),
(update_notes):
2000-08-28 23:36:35 +00:00
|
|
|
* We should emit our own signal here,
|
2000-06-23 17:51:53 +00:00
|
|
|
* not one from the containe; it could hook up
|
|
|
|
* to that signal and emit one of its
|
|
|
|
* ownr. Doing it this way hard-codes what
|
|
|
|
* "user_data" is. Also, the two signals
|
|
|
|
* should be separate. The "unpreview" signal
|
|
|
|
* does not have a return value.
|
|
|
|
*/
|
|
|
|
nautilus_icon_container_emit_preview_signal
|
|
|
|
(NAUTILUS_ICON_CONTAINER (item->canvas),
|
|
|
|
NAUTILUS_ICON_CANVAS_ITEM (item)->user_data,
|
|
|
|
FALSE);
|
2000-03-09 21:09:20 +00:00
|
|
|
icon_item->details->is_prelit = FALSE;
|
2000-05-30 06:51:37 +00:00
|
|
|
icon_item->details->is_active = 0;
|
2000-04-11 10:09:28 +00:00
|
|
|
icon_item->details->is_highlighted_for_drop = FALSE;
|
2008-08-16 18:29:15 +00:00
|
|
|
nautilus_icon_canvas_item_invalidate_label_size (icon_item);
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_item_request_update (item);
|
2002-11-06 14:40:26 +00:00
|
|
|
|
|
|
|
/* show default cursor */
|
|
|
|
gdk_window_set_cursor (((GdkEventAny *)event)->window, NULL);
|
2000-03-09 21:09:20 +00:00
|
|
|
}
|
2000-03-14 05:55:03 +00:00
|
|
|
return TRUE;
|
2000-03-09 21:09:20 +00:00
|
|
|
|
|
|
|
default:
|
2000-03-14 05:55:03 +00:00
|
|
|
/* Don't eat up other events; icon container might use them. */
|
|
|
|
return FALSE;
|
2000-03-09 21:09:20 +00:00
|
|
|
}
|
2000-03-09 03:09:37 +00:00
|
|
|
}
|
|
|
|
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
static gboolean
|
2007-11-30 14:51:10 +00:00
|
|
|
hit_test_pixbuf (GdkPixbuf *pixbuf, EelIRect pixbuf_location, EelIRect probe_rect)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect relative_rect, pixbuf_rect;
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
int x, y;
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
guint8 *pixel;
|
2000-01-31 01:30:16 +00:00
|
|
|
|
2000-03-22 19:36:44 +00:00
|
|
|
/* You can get here without a pixbuf in some strange cases. */
|
2000-03-07 01:10:04 +00:00
|
|
|
if (pixbuf == NULL) {
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
/* Check to see if it's within the rectangle at all. */
|
2001-04-30 11:39:30 +00:00
|
|
|
relative_rect.x0 = probe_rect.x0 - pixbuf_location.x0;
|
|
|
|
relative_rect.y0 = probe_rect.y0 - pixbuf_location.y0;
|
|
|
|
relative_rect.x1 = probe_rect.x1 - pixbuf_location.x0;
|
|
|
|
relative_rect.y1 = probe_rect.y1 - pixbuf_location.y0;
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
pixbuf_rect.x0 = 0;
|
|
|
|
pixbuf_rect.y0 = 0;
|
|
|
|
pixbuf_rect.x1 = gdk_pixbuf_get_width (pixbuf);
|
|
|
|
pixbuf_rect.y1 = gdk_pixbuf_get_height (pixbuf);
|
2007-11-30 14:51:10 +00:00
|
|
|
eel_irect_intersect (&relative_rect, &relative_rect, &pixbuf_rect);
|
|
|
|
if (eel_irect_is_empty (&relative_rect)) {
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
2000-03-07 01:10:04 +00:00
|
|
|
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
/* If there's no alpha channel, it's opaque and we have a hit. */
|
2000-03-07 01:10:04 +00:00
|
|
|
if (!gdk_pixbuf_get_has_alpha (pixbuf)) {
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
2000-03-07 01:10:04 +00:00
|
|
|
g_assert (gdk_pixbuf_get_n_channels (pixbuf) == 4);
|
2000-01-31 01:30:16 +00:00
|
|
|
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
/* Check the alpha channel of the pixel to see if we have a hit. */
|
2000-03-22 19:36:44 +00:00
|
|
|
for (x = relative_rect.x0; x < relative_rect.x1; x++) {
|
|
|
|
for (y = relative_rect.y0; y < relative_rect.y1; y++) {
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
pixel = gdk_pixbuf_get_pixels (pixbuf)
|
|
|
|
+ y * gdk_pixbuf_get_rowstride (pixbuf)
|
|
|
|
+ x * 4;
|
2000-12-16 00:54:30 +00:00
|
|
|
if (pixel[3] > 1) {
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return FALSE;
|
2000-03-07 01:10:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2007-11-30 14:51:10 +00:00
|
|
|
hit_test (NautilusIconCanvasItem *icon_item, EelIRect canvas_rect)
|
2000-03-07 01:10:04 +00:00
|
|
|
{
|
2000-03-22 00:29:07 +00:00
|
|
|
NautilusIconCanvasItemDetails *details;
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect emblem_rect;
|
2000-03-07 01:10:04 +00:00
|
|
|
EmblemLayout emblem_layout;
|
|
|
|
GdkPixbuf *emblem_pixbuf;
|
2007-11-12 10:15:05 +00:00
|
|
|
gboolean is_rtl;
|
2000-03-07 01:10:04 +00:00
|
|
|
|
|
|
|
details = icon_item->details;
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
|
|
|
|
/* Quick check to see if the rect hits the icon, text or emblems at all. */
|
2007-11-30 14:51:10 +00:00
|
|
|
if (!eel_irect_hits_irect (icon_item->details->canvas_rect, canvas_rect)
|
|
|
|
&& (!eel_irect_hits_irect (details->text_rect, canvas_rect))
|
|
|
|
&& (!eel_irect_hits_irect (details->emblem_rect, canvas_rect))) {
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
2000-03-07 01:10:04 +00:00
|
|
|
|
|
|
|
/* Check for hits in the stretch handles. */
|
2005-10-28 12:41:20 +00:00
|
|
|
if (hit_test_stretch_handle (icon_item, canvas_rect, NULL)) {
|
2000-03-07 01:10:04 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
2003-02-28 18:38:04 +00:00
|
|
|
/* Check for hit in the icon. */
|
2007-11-30 14:51:10 +00:00
|
|
|
if (eel_irect_hits_irect (icon_item->details->canvas_rect, canvas_rect)) {
|
2003-02-28 18:38:04 +00:00
|
|
|
return TRUE;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2000-03-10 03:20:54 +00:00
|
|
|
/* Check for hit in the text. */
|
2007-11-30 14:51:10 +00:00
|
|
|
if (eel_irect_hits_irect (details->text_rect, canvas_rect)
|
Moved the "embedded text" feature into the icon factory and
NautilusFile.
* libnautilus-extensions/nautilus-directory-private.h:
* libnautilus-extensions/nautilus-directory-async.c:
(metafile_read_close), (nautilus_metafile_read_cancel),
(metafile_read_failed), (metafile_read_complete),
(metafile_read_callback), (metafile_read_some),
(metafile_read_open_callback), (metafile_read_start),
(nautilus_directory_request_read_metafile), (metafile_write_done),
(metafile_write_failed), (metafile_write_callback),
(metafile_write_create_callback), (nautilus_metafile_write_start),
(metafile_write), (lacks_top_left), (wants_top_left),
(has_problem), (select_needy_file), (count_lines),
(top_left_read_done), (top_left_read_failed),
(top_left_read_complete), (top_left_read_close),
(top_left_read_callback), (top_left_read_some),
(top_left_open_callback), (start_getting_top_lefts),
(state_changed):
Added code to read top lefts of files in the background.
Restructured things to accomodate this new code nicely with
a minimum of copy and paste (there still was plenty of copy
and paste so there's room for improvement).
* libnautilus-extensions/nautilus-directory.c:
(nautilus_directory_destroy):
Name changes from above required revising some asserts.
* libnautilus-extensions/nautilus-file-private.h:
* libnautilus-extensions/nautilus-file.c:
(nautilus_file_get_top_left_text): Now it returns something
besides just NULL.
(nautilus_extract_top_left_text): Function that remembers only
the part of the top left text that we want to keep around.
* libnautilus-extensions/nautilus-gtk-extensions.h:
* libnautilus-extensions/nautilus-gtk-extensions.c:
(nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER),
(nautilus_gtk_marshal_POINTER__POINTER_INT_INT_POINTER_POINTER):
Needed some new marshal functions.
* libnautilus-extensions/nautilus-icon-canvas-item.h:
* libnautilus-extensions/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_initialize_class),
(nautilus_icon_canvas_item_destroy),
(nautilus_icon_canvas_item_set_arg),
(nautilus_icon_canvas_item_get_arg),
(nautilus_icon_canvas_item_get_image),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_draw):
Removed the old embedded text support. It came with a whole lot
of baggage, also removed.
* libnautilus-extensions/nautilus-icon-container.h:
* libnautilus-extensions/nautilus-icon-container.c:
(nautilus_icon_container_update_icon): Moved pixbuf computing code
into the FMIconView class. We might decide later to move it back
again, but for now the embedded text makes it easier to do it
this way.
(nautilus_icon_container_initialize_class): Merged
get_icon_editable_text and get_icon_additional_text back into
a single signal that gets both.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_dnd_begin_drag): Updated for change in icon factory
API.
* src/file-manager/fm-directory-view.c: (finish_loading_uri):
Ask for top-left text attribute for all directories.
* src/file-manager/fm-icon-view.c: (get_icon_images_callback):
Moved pixbuf computing code into the FMIconView class. We might
decide later to move it back again, but for now the embedded text
makes it easier to do it this way.
(get_icon_text_callback): Merged get_icon_editable_text and
get_icon_additional_text back into a single signal that gets both.
2000-05-05 17:38:39 +00:00
|
|
|
&& !icon_item->details->is_renaming) {
|
2000-03-10 03:20:54 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
2007-11-12 10:15:05 +00:00
|
|
|
is_rtl = nautilus_icon_container_is_layout_rtl (NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (icon_item)->canvas));
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
/* Check for hit in the emblem pixbufs. */
|
2007-11-12 10:15:05 +00:00
|
|
|
emblem_layout_reset (&emblem_layout, icon_item, icon_item->details->canvas_rect, is_rtl);
|
|
|
|
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect, is_rtl)) {
|
2001-04-30 11:39:30 +00:00
|
|
|
if (hit_test_pixbuf (emblem_pixbuf, emblem_rect, canvas_rect)) {
|
2000-03-07 01:10:04 +00:00
|
|
|
return TRUE;
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
}
|
2000-03-07 01:10:04 +00:00
|
|
|
}
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Point handler for the icon canvas item. */
|
|
|
|
static double
|
2002-09-26 10:07:47 +00:00
|
|
|
nautilus_icon_canvas_item_point (EelCanvasItem *item, double x, double y, int cx, int cy,
|
|
|
|
EelCanvasItem **actual_item)
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
{
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect canvas_rect;
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
*actual_item = item;
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
canvas_rect.x0 = cx;
|
|
|
|
canvas_rect.y0 = cy;
|
Fixed typo that broke all hit testing except for rubber band selection!
* libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_point):
Fixed typo that broke all hit testing except for rubber band
selection! (Sorry.)
* libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection, set_uri_list_selection),
libnautilus/gnome-icon-container-private.h,
libnautilus/gnome-icon-container.h,
libnautilus/gnome-icon-container.c
(gnome_icon_container_get_icon_uri,
gnome_icon_container_initialize_class, gnome_icon_container_new,
update_icon, gnome_icon_container_update,
gnome_icon_container_request_update),
src/file-manager/fm-directory-view-icons.c (create_icon_container,
get_icon_images_cb, get_icon_uri_cb, get_icon_text_cb,
get_icon_property_cb): Change code that used to use a separate
controller object to just use signals on the icon container
instead.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c,
src/file-manager/fm-directory-view.c: Add new signal marshal
functions as needed and changed the name of one of the old
functions.
* libnautilus/Makefile.am,
libnautilus/nautilus-icons-controller.h,
libnautilus/nautilus-icons-controller.c,
src/file-manager/Makefile.am,
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c: Removed the old controller
object, it was a bad idea.
2000-03-11 00:46:40 +00:00
|
|
|
canvas_rect.x1 = cx + 1;
|
|
|
|
canvas_rect.y1 = cy + 1;
|
2001-04-30 11:39:30 +00:00
|
|
|
if (hit_test (NAUTILUS_ICON_CANVAS_ITEM (item), canvas_rect)) {
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
return 0.0;
|
|
|
|
} else {
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
/* This value means not hit.
|
|
|
|
* It's kind of arbitrary. Can we do better?
|
|
|
|
*/
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
return item->canvas->pixels_per_unit * 2 + 10;
|
|
|
|
}
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
}
|
2000-01-25 21:17:05 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_translate (EelCanvasItem *item, double dx, double dy)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItem *icon_item;
|
|
|
|
NautilusIconCanvasItemDetails *details;
|
|
|
|
|
|
|
|
icon_item = NAUTILUS_ICON_CANVAS_ITEM (item);
|
|
|
|
details = icon_item->details;
|
|
|
|
|
|
|
|
details->x += dx;
|
|
|
|
details->y += dy;
|
|
|
|
}
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
|
|
|
|
void
|
|
|
|
nautilus_icon_canvas_item_get_bounds_for_layout (NautilusIconCanvasItem *icon_item,
|
|
|
|
double *x1, double *y1, double *x2, double *y2)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItemDetails *details;
|
|
|
|
EelIRect *total_rect;
|
|
|
|
|
|
|
|
details = icon_item->details;
|
|
|
|
|
|
|
|
nautilus_icon_canvas_item_ensure_bounds_up_to_date (icon_item);
|
|
|
|
g_assert (details->bounds_cached);
|
|
|
|
|
|
|
|
total_rect = &details->bounds_cache_for_layout;
|
|
|
|
|
|
|
|
/* Return the result. */
|
|
|
|
if (x1 != NULL) {
|
|
|
|
*x1 = (int)details->x + total_rect->x0;
|
|
|
|
}
|
|
|
|
if (y1 != NULL) {
|
|
|
|
*y1 = (int)details->y + total_rect->y0;
|
|
|
|
}
|
|
|
|
if (x2 != NULL) {
|
|
|
|
*x2 = (int)details->x + total_rect->x1 + 1;
|
|
|
|
}
|
|
|
|
if (y2 != NULL) {
|
|
|
|
*y2 = (int)details->y + total_rect->y1 + 1;
|
|
|
|
}
|
|
|
|
}
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
|
|
|
|
void
|
|
|
|
nautilus_icon_canvas_item_get_bounds_for_entire_item (NautilusIconCanvasItem *icon_item,
|
|
|
|
double *x1, double *y1, double *x2, double *y2)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItemDetails *details;
|
|
|
|
EelIRect *total_rect;
|
|
|
|
|
|
|
|
details = icon_item->details;
|
|
|
|
|
|
|
|
nautilus_icon_canvas_item_ensure_bounds_up_to_date (icon_item);
|
|
|
|
g_assert (details->bounds_cached);
|
|
|
|
|
|
|
|
total_rect = &details->bounds_cache_for_entire_item;
|
|
|
|
|
|
|
|
/* Return the result. */
|
|
|
|
if (x1 != NULL) {
|
|
|
|
*x1 = (int)details->x + total_rect->x0;
|
|
|
|
}
|
|
|
|
if (y1 != NULL) {
|
|
|
|
*y1 = (int)details->y + total_rect->y0;
|
|
|
|
}
|
|
|
|
if (x2 != NULL) {
|
|
|
|
*x2 = (int)details->x + total_rect->x1 + 1;
|
|
|
|
}
|
|
|
|
if (y2 != NULL) {
|
|
|
|
*y2 = (int)details->y + total_rect->y1 + 1;
|
|
|
|
}
|
|
|
|
}
|
2002-09-26 10:07:47 +00:00
|
|
|
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
/* Bounds handler for the icon canvas item. */
|
2000-01-25 21:17:05 +00:00
|
|
|
static void
|
2002-09-26 10:07:47 +00:00
|
|
|
nautilus_icon_canvas_item_bounds (EelCanvasItem *item,
|
2000-03-22 00:29:07 +00:00
|
|
|
double *x1, double *y1, double *x2, double *y2)
|
2000-01-25 21:17:05 +00:00
|
|
|
{
|
2000-03-22 00:29:07 +00:00
|
|
|
NautilusIconCanvasItem *icon_item;
|
|
|
|
NautilusIconCanvasItemDetails *details;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
EelIRect *total_rect;
|
|
|
|
|
|
|
|
icon_item = NAUTILUS_ICON_CANVAS_ITEM (item);
|
|
|
|
details = icon_item->details;
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
g_assert (x1 != NULL);
|
|
|
|
g_assert (y1 != NULL);
|
|
|
|
g_assert (x2 != NULL);
|
|
|
|
g_assert (y2 != NULL);
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
|
|
|
|
nautilus_icon_canvas_item_ensure_bounds_up_to_date (icon_item);
|
|
|
|
g_assert (details->bounds_cached);
|
|
|
|
|
|
|
|
total_rect = &details->bounds_cache;
|
|
|
|
|
|
|
|
/* Return the result. */
|
|
|
|
*x1 = (int)details->x + total_rect->x0;
|
|
|
|
*y1 = (int)details->y + total_rect->y0;
|
|
|
|
*x2 = (int)details->x + total_rect->x1 + 1;
|
|
|
|
*y2 = (int)details->y + total_rect->y1 + 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_ensure_bounds_up_to_date (NautilusIconCanvasItem *icon_item)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItemDetails *details;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
EelIRect icon_rect, emblem_rect;
|
|
|
|
EelIRect text_rect, text_rect_for_layout, text_rect_for_entire_text;
|
|
|
|
EelIRect total_rect, total_rect_for_layout, total_rect_for_entire_text;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
EelCanvasItem *item;
|
|
|
|
double pixels_per_unit;
|
|
|
|
EmblemLayout emblem_layout;
|
|
|
|
GdkPixbuf *emblem_pixbuf;
|
|
|
|
gboolean is_rtl;
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
|
|
|
|
details = icon_item->details;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
item = EEL_CANVAS_ITEM (icon_item);
|
2000-03-07 01:10:04 +00:00
|
|
|
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
if (!details->bounds_cached) {
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
measure_label_text (icon_item);
|
2005-11-14 15:49:58 +00:00
|
|
|
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
pixels_per_unit = EEL_CANVAS_ITEM (item)->canvas->pixels_per_unit;
|
2005-11-14 15:49:58 +00:00
|
|
|
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
/* Compute icon rectangle. */
|
|
|
|
icon_rect.x0 = 0;
|
|
|
|
icon_rect.y0 = 0;
|
|
|
|
if (details->pixbuf == NULL) {
|
|
|
|
icon_rect.x1 = icon_rect.x0;
|
|
|
|
icon_rect.y1 = icon_rect.y0;
|
|
|
|
} else {
|
|
|
|
icon_rect.x1 = icon_rect.x0 + gdk_pixbuf_get_width (details->pixbuf) / pixels_per_unit;
|
|
|
|
icon_rect.y1 = icon_rect.y0 + gdk_pixbuf_get_height (details->pixbuf) / pixels_per_unit;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Compute text rectangle. */
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
text_rect = compute_text_rectangle (icon_item, icon_rect, FALSE, BOUNDS_USAGE_FOR_DISPLAY);
|
|
|
|
text_rect_for_layout = compute_text_rectangle (icon_item, icon_rect, FALSE, BOUNDS_USAGE_FOR_LAYOUT);
|
|
|
|
text_rect_for_entire_text = compute_text_rectangle (icon_item, icon_rect, FALSE, BOUNDS_USAGE_FOR_ENTIRE_ITEM);
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
|
2007-11-12 10:15:05 +00:00
|
|
|
is_rtl = nautilus_icon_container_is_layout_rtl (NAUTILUS_ICON_CONTAINER (item->canvas));
|
|
|
|
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
/* Compute total rectangle, adding in emblem rectangles. */
|
2007-11-30 14:51:10 +00:00
|
|
|
eel_irect_union (&total_rect, &icon_rect, &text_rect);
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
eel_irect_union (&total_rect_for_layout, &icon_rect, &text_rect_for_layout);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
eel_irect_union (&total_rect_for_entire_text, &icon_rect, &text_rect_for_entire_text);
|
2007-11-12 10:15:05 +00:00
|
|
|
emblem_layout_reset (&emblem_layout, icon_item, icon_rect, is_rtl);
|
|
|
|
while (emblem_layout_next (&emblem_layout, &emblem_pixbuf, &emblem_rect, is_rtl)) {
|
2005-11-14 15:49:58 +00:00
|
|
|
emblem_rect.x0 = floor (emblem_rect.x0 / pixels_per_unit);
|
|
|
|
emblem_rect.y0 = floor (emblem_rect.y0 / pixels_per_unit);
|
|
|
|
emblem_rect.x1 = ceil (emblem_rect.x1 / pixels_per_unit);
|
|
|
|
emblem_rect.y1 = ceil (emblem_rect.y1 / pixels_per_unit);
|
|
|
|
|
2007-11-30 14:51:10 +00:00
|
|
|
eel_irect_union (&total_rect, &total_rect, &emblem_rect);
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
eel_irect_union (&total_rect_for_layout, &total_rect_for_layout, &emblem_rect);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
eel_irect_union (&total_rect_for_entire_text, &total_rect_for_entire_text, &emblem_rect);
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
}
|
2000-03-07 01:10:04 +00:00
|
|
|
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
details->bounds_cache = total_rect;
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
details->bounds_cache_for_layout = total_rect_for_layout;
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
details->bounds_cache_for_entire_item = total_rect_for_entire_text;
|
Skip assert for commonly run code.
2003-07-08 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory-async.c: (is_needy):
Skip assert for commonly run code.
* libnautilus-private/nautilus-file-utilities.[ch]:
(desktop_dir_changed_callback),
(nautilus_is_desktop_directory_escaped):
New function nautilus_is_desktop_directory_escaped to handle
faster check if file is desktop dir.
* libnautilus-private/nautilus-file.c:
(nautilus_file_info_missing), (compare_by_display_name),
(file_is_desktop), (nautilus_file_get_display_name_collation_key),
(nautilus_file_get_display_name_nocopy),
(nautilus_file_get_file_type):
Some micro-optimizations. Faster file_is_desktop
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_invalidate_bounds_cache),
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_image),
(nautilus_icon_canvas_item_set_emblems),
(nautilus_icon_canvas_item_set_attach_points),
(nautilus_icon_canvas_item_set_embedded_text_rect),
(nautilus_icon_canvas_item_bounds):
Cache bounds calculation. Invalidate when needed.
2003-07-08 15:48:12 +00:00
|
|
|
details->bounds_cached = TRUE;
|
2000-01-25 21:17:05 +00:00
|
|
|
}
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Get the rectangle of the icon only, in world coordinates. */
|
2007-11-30 14:51:10 +00:00
|
|
|
EelDRect
|
2001-04-30 11:39:30 +00:00
|
|
|
nautilus_icon_canvas_item_get_icon_rectangle (const NautilusIconCanvasItem *item)
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
{
|
2007-11-30 14:51:10 +00:00
|
|
|
EelDRect rectangle;
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
double pixels_per_unit;
|
|
|
|
GdkPixbuf *pixbuf;
|
2000-01-31 01:30:16 +00:00
|
|
|
|
2007-11-30 14:51:10 +00:00
|
|
|
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), eel_drect_empty);
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
rectangle.x0 = item->details->x;
|
|
|
|
rectangle.y0 = item->details->y;
|
|
|
|
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
pixbuf = item->details->pixbuf;
|
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
pixels_per_unit = EEL_CANVAS_ITEM (item)->canvas->pixels_per_unit;
|
2001-04-30 11:39:30 +00:00
|
|
|
rectangle.x1 = rectangle.x0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_width (pixbuf)) / pixels_per_unit;
|
|
|
|
rectangle.y1 = rectangle.y0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_height (pixbuf)) / pixels_per_unit;
|
|
|
|
|
2002-09-30 13:56:23 +00:00
|
|
|
eel_canvas_item_i2w (EEL_CANVAS_ITEM (item),
|
|
|
|
&rectangle.x0,
|
|
|
|
&rectangle.y0);
|
|
|
|
eel_canvas_item_i2w (EEL_CANVAS_ITEM (item),
|
|
|
|
&rectangle.x1,
|
|
|
|
&rectangle.y1);
|
|
|
|
|
2001-04-30 11:39:30 +00:00
|
|
|
return rectangle;
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
}
|
|
|
|
|
2007-11-30 14:51:10 +00:00
|
|
|
EelDRect
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
nautilus_icon_canvas_item_get_text_rectangle (NautilusIconCanvasItem *item,
|
|
|
|
gboolean for_layout)
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
{
|
|
|
|
/* FIXME */
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect icon_rectangle;
|
|
|
|
EelIRect text_rectangle;
|
|
|
|
EelDRect ret;
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
double pixels_per_unit;
|
|
|
|
GdkPixbuf *pixbuf;
|
|
|
|
|
2007-11-30 14:51:10 +00:00
|
|
|
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), eel_drect_empty);
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
|
|
|
|
icon_rectangle.x0 = item->details->x;
|
|
|
|
icon_rectangle.y0 = item->details->y;
|
|
|
|
|
|
|
|
pixbuf = item->details->pixbuf;
|
|
|
|
|
|
|
|
pixels_per_unit = EEL_CANVAS_ITEM (item)->canvas->pixels_per_unit;
|
|
|
|
icon_rectangle.x1 = icon_rectangle.x0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_width (pixbuf)) / pixels_per_unit;
|
|
|
|
icon_rectangle.y1 = icon_rectangle.y0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_height (pixbuf)) / pixels_per_unit;
|
|
|
|
|
2006-03-03 13:34:54 +00:00
|
|
|
measure_label_text (item);
|
Truncate icon label to three lines if it is not selected. Fixes #84390, at
2008-08-16 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(draw_or_measure_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_layout),
(nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box_for_layout), (lay_down_icons_horizontal),
(get_max_icon_dimensions), (lay_down_icons_vertical),
(placement_grid_mark_icon), (find_empty_location),
(lay_down_icons_vertical_desktop), (reload_icon_positions),
(nautilus_icon_container_start_renaming_selected_item):
Truncate icon label to three lines if it is not selected. Fixes
#84390, at least in text-below-icon mode.
svn path=/trunk/; revision=14480
2008-08-16 16:24:01 +00:00
|
|
|
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
text_rectangle = compute_text_rectangle (item, icon_rectangle, FALSE,
|
|
|
|
for_layout ? BOUNDS_USAGE_FOR_LAYOUT : BOUNDS_USAGE_FOR_DISPLAY);
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
|
|
|
|
ret.x0 = text_rectangle.x0;
|
|
|
|
ret.y0 = text_rectangle.y0;
|
|
|
|
ret.x1 = text_rectangle.x1;
|
|
|
|
ret.y1 = text_rectangle.y1;
|
|
|
|
|
|
|
|
eel_canvas_item_i2w (EEL_CANVAS_ITEM (item),
|
|
|
|
&ret.x0,
|
|
|
|
&ret.y0);
|
|
|
|
eel_canvas_item_i2w (EEL_CANVAS_ITEM (item),
|
|
|
|
&ret.x1,
|
|
|
|
&ret.y1);
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
/* Get the rectangle of the icon only, in canvas coordinates. */
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
static void
|
2000-03-22 00:29:07 +00:00
|
|
|
get_icon_canvas_rectangle (NautilusIconCanvasItem *item,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect *rect)
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
{
|
|
|
|
GdkPixbuf *pixbuf;
|
|
|
|
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (NAUTILUS_IS_ICON_CANVAS_ITEM (item));
|
|
|
|
g_assert (rect != NULL);
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
|
2002-12-12 15:17:42 +00:00
|
|
|
eel_canvas_w2c (EEL_CANVAS_ITEM (item)->canvas,
|
|
|
|
item->details->x,
|
|
|
|
item->details->y,
|
|
|
|
&rect->x0,
|
|
|
|
&rect->y0);
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
|
|
|
|
pixbuf = item->details->pixbuf;
|
|
|
|
|
2000-03-07 01:10:04 +00:00
|
|
|
rect->x1 = rect->x0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_width (pixbuf));
|
|
|
|
rect->y1 = rect->y0 + (pixbuf == NULL ? 0 : gdk_pixbuf_get_height (pixbuf));
|
Reworked the canvas item class used by the icon
container. Straightened out the use of various coordinate systems
and bounds calculations and removed much unused code inherited
from the GdkPixbuf canvas item class that Andy cloned our code
from. Changed the class so it doesn't scale icons any more -- we
leave that to the icon factory so the scaled icons can be cached.
* libnautilus/gnome-icon-container-dnd.c:
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.c:
* libnautilus/nautilus-icons-view-icon-item.c:
* libnautilus/nautilus-icons-view-icon-item.h:
Made extensive changes to the icon item class, including getting
rid of the "x", "y", "width", and "height" attributes, adding a
new "font" attribute, changing the "label" attribute name to "text"
to be more consistent with other canvas items, simplifying the
update logic for now (we can recomplicate it later if need be),
changing the pixbuf to have a fixed size in pixels instead of being
scaled with the pixels_per_unit and changing the pixbuf when we change
zoom levels, and other misc. cleanup.
(nautilus_icons_view_icon_item_get_arg):
Fixed bug for "label" which would return a non-strdup'd piece of text.
(draw_or_measure_text_box):
Fixed bug where width of the selection box would be based on the
length of the last line of text, not the widest, and extra GCs would
be created for each line of text.
* libnautilus/nautilus-icons-controller.h:
* libnautilus/nautilus-icons-controller.c:
(nautilus_icons_controller_get_icon_image):
* src/file-manager/fm-icons-controller.c:
(fm_icons_controller_get_icon_image):
Changed the interface so that the icons controller specifies the icon
as a NautilusScalableIcon instead of a GdkPixbuf. This lets the icon
container get the appropriate icon for size as it zooms.
* libnautilus/gdk-extensions.h:
* libnautilus/gdk-extensions.c:
(nautilus_gdk_font_equal):
Added a version of gdk_font_equal that works with NULL for the font.
Maybe we need a naming scheme for these NULL-tolerant variations on
basic calls.
* src/ntl-uri-map.c: (nautilus_navinfo_free):
* src/ntl-window-msgs.c: (nautilus_window_change_location_2):
Fixed a NULL dereference that would happen when @navi was NULL.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile):
Fixed error handling for case when gnome_vfs_read fails. Fixed
error handling for case where metafile_info.size won't fit into a
size_t. Switched back to g_malloc instead of g_alloca, since the
size of a file might be too big for the stack. In the long run, we
will feed the file data directly to the XML code, so this is a bit
temporary. Removed the assert that Elliot added to help track
down the giant files sizes coming from gnome-vfs; the failure in
g_malloc will be easy to debug, unlike the failure in
g_alloca. (The assert was added without a ChangeLog entry.)
2000-02-10 00:33:49 +00:00
|
|
|
}
|
|
|
|
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
void
|
2000-03-22 00:29:07 +00:00
|
|
|
nautilus_icon_canvas_item_set_show_stretch_handles (NautilusIconCanvasItem *item,
|
|
|
|
gboolean show_stretch_handles)
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
{
|
2000-03-22 00:29:07 +00:00
|
|
|
g_return_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item));
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
g_return_if_fail (show_stretch_handles == FALSE || show_stretch_handles == TRUE);
|
|
|
|
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
if (!item->details->show_stretch_handles == !show_stretch_handles) {
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
return;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
|
|
|
|
item->details->show_stretch_handles = show_stretch_handles;
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_item_request_update (EEL_CANVAS_ITEM (item));
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Check if one of the stretch handles was hit. */
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
static gboolean
|
2000-03-22 00:29:07 +00:00
|
|
|
hit_test_stretch_handle (NautilusIconCanvasItem *item,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect probe_canvas_rect,
|
2005-10-28 12:41:20 +00:00
|
|
|
GtkCornerType *corner)
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
{
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect icon_rect;
|
2000-09-30 02:21:22 +00:00
|
|
|
GdkPixbuf *knob_pixbuf;
|
|
|
|
int knob_width, knob_height;
|
2005-10-28 12:41:20 +00:00
|
|
|
int hit_corner;
|
2000-09-30 02:21:22 +00:00
|
|
|
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (NAUTILUS_IS_ICON_CANVAS_ITEM (item));
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
|
|
|
|
/* Make sure there are handles to hit. */
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
if (!item->details->show_stretch_handles) {
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
return FALSE;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
/* Quick check to see if the rect hits the icon at all. */
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
icon_rect = item->details->canvas_rect;
|
2007-11-30 14:51:10 +00:00
|
|
|
if (!eel_irect_hits_irect (probe_canvas_rect, icon_rect)) {
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
return FALSE;
|
Some of the underlying work to prepare for emblems on the icons.
* style-guide.html: Some minor updates to the style guide,
including rules about headers.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.c:
(nautilus_icon_factory_get_emblem_icons_for_file),
(nautilus_scalable_icon_get), (nautilus_icon_factor_clear),
(nautilus_icon_factory_load_file),
(nautilus_gdk_pixbuf_composite_corner),
(nautilus_icon_factor_load_icon), (nautilus_scalable_icon_hash),
(nautilus_scalable_icon_equal),
(nautilus_icon_factory_get_icon_for_file), (load_specific_image):
Added interface for getting emblem icons for a file, and got rid
of the symbolic-link overlay that was previously built into the
icon.
* libnautilus/gnome-icon-container.c (update_icon):
Get pixbufs for all emblems and pass into the icon object.
* libnautilus/nautilus-icons-controller.c
(nautius_icons_controller_get_icon_image):
src/file-manager/fm-icons-controller.h,
src/file-manager/fm-icons-controller.c
(fm_icons_controller_get_icon_image): Return a list of emblem
images along with the main image.
* libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c
(nautilus_icons_view_icon_item_set_emblems),
(nautilus_icons_view_icon_item_destroy): Keep a list of emblem
pixbufs in each icon. We don't draw them quite yet.
* libnautilus/gdk-extensions.h, libnautilus/gdk-extensions.c:
(nautilus_gdk_pixbuf_list_ref), (nautilus_gdk_pixbuf_list_unref),
(nautilus_gdk_pixbuf_list_free): Convenience functions for
manipulating lists of GdkPixbuf objects.
* libnautilus/nautilus-directory.h,
libnautilus/nautilus-directory.c: (nautilus_file_list_ref),
(nautilus_file_list_unref), (nautilus_file_list_free): Convenience
functions for manipulating lists of NautilusFile objects. Also got
rid of NautilusFileList typedef.
* libnautilus/nautilus-icon-factory.h,
libnautilus/nautilus-icon-factory.h:
(nautilus_scalable_icon_list_free): Convenience function for
manipulating lists of NautilusScalableIcon objects.
* libnautilus/nautilus-glib-extensions.h,
libnautilus/nautilus-glib-extensions.c: (nautilus_g_list_equal):
Function to compare two GLists to see if they are
identical. Particularly useful with lists of reference-counted
objects.
* src/file-manager/fm-directory-view-icons.c
(fm_directory_view_icons_destroy),
(add_icon_if_already_positioned),
(fm_directory_view_icons_append_selection_context_menu_items),
(display_icons_not_already_positioned),
(fm_direectory_view_icons_get_selection):
src/file-manager/fm-directory-view-list.c
(fm_directory_view_list_get_selection):
src/file-manager/fm-directory-view.c (display_selection_info),
(display_pending_files), (add_files_cb), (open_in_new_window_cb),
(fm_directory_view_real_append_selection_context_menu_items): Got
rid of use of NautilusFileList typedef, corrected ref. counting of
files in the lists by using new calls.
* src/nautilus-bookmarklist.c, src/nautilus-bookmarks-menu.c,
src/nautilus-index-tabs.c,
src/file-manager/fm-directory-view-icons.c,
src/file-manager/fm-directory-view.c,
src/file-manager/fm-icons-controller.c: A bit of reformatting.
2000-02-24 00:54:57 +00:00
|
|
|
}
|
2005-10-28 12:41:20 +00:00
|
|
|
|
|
|
|
knob_pixbuf = get_knob_pixbuf ();
|
2000-09-30 02:21:22 +00:00
|
|
|
knob_width = gdk_pixbuf_get_width (knob_pixbuf);
|
|
|
|
knob_height = gdk_pixbuf_get_height (knob_pixbuf);
|
2005-10-28 12:41:20 +00:00
|
|
|
g_object_unref (knob_pixbuf);
|
2000-09-30 02:21:22 +00:00
|
|
|
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
/* Check for hits in the stretch handles. */
|
2005-10-28 12:41:20 +00:00
|
|
|
hit_corner = -1;
|
|
|
|
if (probe_canvas_rect.x0 < icon_rect.x0 + knob_width) {
|
|
|
|
if (probe_canvas_rect.y0 < icon_rect.y0 + knob_height)
|
|
|
|
hit_corner = GTK_CORNER_TOP_LEFT;
|
|
|
|
else if (probe_canvas_rect.y1 >= icon_rect.y1 - knob_height)
|
|
|
|
hit_corner = GTK_CORNER_BOTTOM_LEFT;
|
|
|
|
}
|
|
|
|
else if (probe_canvas_rect.x1 >= icon_rect.x1 - knob_width) {
|
|
|
|
if (probe_canvas_rect.y0 < icon_rect.y0 + knob_height)
|
|
|
|
hit_corner = GTK_CORNER_TOP_RIGHT;
|
|
|
|
else if (probe_canvas_rect.y1 >= icon_rect.y1 - knob_height)
|
|
|
|
hit_corner = GTK_CORNER_BOTTOM_RIGHT;
|
|
|
|
}
|
|
|
|
if (corner)
|
|
|
|
*corner = hit_corner;
|
|
|
|
|
|
|
|
return hit_corner != -1;
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
gboolean
|
2000-06-23 17:51:53 +00:00
|
|
|
nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item,
|
2007-11-30 14:51:10 +00:00
|
|
|
EelDPoint world_point,
|
2005-10-28 12:41:20 +00:00
|
|
|
GtkCornerType *corner)
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
{
|
2007-11-30 14:51:10 +00:00
|
|
|
EelIRect canvas_rect;
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
|
2000-03-22 00:29:07 +00:00
|
|
|
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), FALSE);
|
2001-04-30 11:39:30 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_w2c (EEL_CANVAS_ITEM (item)->canvas,
|
2001-04-30 11:39:30 +00:00
|
|
|
world_point.x,
|
|
|
|
world_point.y,
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
&canvas_rect.x0,
|
|
|
|
&canvas_rect.y0);
|
|
|
|
canvas_rect.x1 = canvas_rect.x0 + 1;
|
|
|
|
canvas_rect.y1 = canvas_rect.y0 + 1;
|
2005-10-28 12:41:20 +00:00
|
|
|
return hit_test_stretch_handle (item, canvas_rect, corner);
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
}
|
|
|
|
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
/* nautilus_icon_canvas_item_hit_test_rectangle
|
|
|
|
*
|
|
|
|
* Check and see if there is an intersection between the item and the
|
|
|
|
* canvas rect.
|
|
|
|
*/
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
gboolean
|
2007-11-30 14:51:10 +00:00
|
|
|
nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item, EelIRect canvas_rect)
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
{
|
2000-03-22 00:29:07 +00:00
|
|
|
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), FALSE);
|
Fixed rubber banding to hit test with all the parts of the icon, not just
* libnautilus/Makefile.am, libnautilus/gnome-icon-container-dnd.c
(set_gnome_icon_list_selection,
gnome_icon_container_dnd_begin_drag),
libnautilus/gnome-icon-container.c (icon_is_in_region,
start_stretching), libnautilus/nautilus-icons-view-icon-item.h,
libnautilus/nautilus-icons-view-icon-item.c (hit_stretch_handle,
hit_test_pixbuf, hit_test, nautilus_icons_view_icon_item_point,
nautilus_icons_view_icon_item_get_icon_world_rectangle,
nautilus_icons_view_icon_item_get_icon_rectangle,
nautilus_icons_view_icon_item_get_icon_window_rectangle,
nautilus_icons_view_icon_item_get_hit_stretch_handle,
hit_stretch_handle,
nautilus_icons_view_icon_item_hit_test_stretch_handles,
nautilus_icons_view_icon_item_hit_test_rectangle):
Fixed rubber banding to hit test with all the parts of the icon,
not just the icon pixbuf itself. Did this by changing all the
internal hit testing to use rects instead of points. At the same
time changed the external interface to always use world
coordinates for clarity.
* libnautilus/nautilus-directory.c (compare_file_with_name),
libnautilus/nautilus-file.c (nautilus_file_set_keywords): Fixed
some void * problems that upset newer versions of GCC but not the
older one that I'm using.
* libnautilus/nautilus-gtk-extensions.h,
libnautilus/nautilus-gtk-extensions.c: Formatting and include
statements fix up.
2000-03-10 22:47:48 +00:00
|
|
|
|
reviewed by: John Harper <jsh@eazel.com>
2001-02-26 Gene Z. Ragan <gzr@eazel.com>
reviewed by: John Harper <jsh@eazel.com>
Fixed bug 3898, selection in icon view extremely slow
I increased the performance of drag selection of icons in a few ways.
First, I avoid unneeded, repeated transforms of coordinates from
world coordinates to canvas coordinates. I also cached three freqeuently
calculated dimensions; the icons bounds in canvas coordinates, the icons
text bounds and canvas coordinates and the bounding rect of all emblems
in canvas coordinates. Instead of repeatedly calculating these values,
have functions refer to the cached values. In hit_test, I then do a
quick intersection check of the drag rect with the cached values before
proceeding to the more expensive intersection detection routines.
* libnautilus-extensions/nautilus-icon-canvas-item.c:
* libnautilus-extensions/nautilus-icon-canvas-item.h:
(nautilus_icon_canvas_item_set_image), (compute_text_rectangle),
(nautilus_icon_canvas_item_draw),
(nautilus_icon_canvas_item_render),
(nautilus_icon_canvas_item_bounds), (get_icon_canvas_rectangle),
Set up the various places that we need to update our cached items.
(nautilus_icon_canvas_item_update_bounds):
Update our cached values.
(hit_test), (hit_test_stretch_handle):
Perform quick interesection checks before doing more expensive checks.
(nautilus_icon_canvas_item_hit_test_rectangle):
Change function to use canvas coordinates. The caller is responsible
to do the conversion form world to canvas. This provides a large
optimization if this routine is caled in a loop.
* libnautilus-extensions/nautilus-icon-container.c:
* libnautilus-extensions/nautilus-icon-container.h:
(rubberband_select):
Do transform of drag rect from world coordiantes to canvas canvas
coordinates onlty once. There is no need to do this for every canvas
item that is visted during list traversal.
* libnautilus-extensions/nautilus-icon-dnd.c:
(nautilus_icon_container_item_at):
Call nautilus_icon_canvas_item_hit_test_rectangle() using coordinate
converted to canvas coordinates.
2001-02-26 08:23:20 +00:00
|
|
|
return hit_test (item, canvas_rect);
|
Added icon stretching and did some cleanups.
Stretched icons aren't yet persistent (the scale factor is not
saved in metadata), but that's not much more work.
* libnautilus/gnome-icon-container-private.h:
* libnautilus/gnome-icon-container.h:
* libnautilus/gnome-icon-container.c: (icon_new), (icon_position),
(icon_set_position), (icon_get_size), (icon_set_size),
(icon_toggle_selected), (icon_select), (icon_set_selected),
(button_press_event), (gnome_icon_container_begin_stretch),
(start_stretching), (gnome_icon_container_stretch),
(continue_stretching), (gnome_icon_container_end_stretch),
(end_stretching), (button_release_event), (motion_notify_event),
(handle_icon_button_press), (gnome_icon_container_clear),
(request_update_one), (update_icon), (get_first_selected_icon),
(gnome_icon_container_show_stretch_handles),
(gnome_icon_container_has_stretch_handles),
(gnome_icon_container_is_stretched),
(gnome_icon_container_unstretch), (compute_stretch),
(nautilus_self_check_compute_stretch),
(nautilus_self_check_gnome_icon_container):
* libnautilus/nautilus-icons-view-icon-item.h:
* libnautilus/nautilus-icons-view-icon-item.c:
(nautilus_icons_view_icon_item_draw),
(nautilus_icons_view_icon_item_point),
(nautilus_icons_view_icon_item_set_show_stretch_handles),
(nautilus_icons_view_icon_item_get_hit_stretch_handle):
* libnautilus/nautilus-lib-self-check-functions.h:
Added machinery for stretching icons.
* src/file-manager/fm-directory-view.h:
* src/file-manager/fm-directory-view.c:
(append_item_context_menu_items),
(fm_directory_view_real_append_item_context_menu_items),
(fm_directory_view_initialize_class), (create_item_context_menu):
Added machinery for views to have view-specific menu items for
icons as well as for the window as a whole.
* src/file-manager/fm-directory-view-icons.c:
(fm_directory_view_icons_initialize_class),
(fm_directory_view_icons_append_item_context_menu_items),
(show_stretch_handles_cb), (unstretch_item_cb):
Added menu items for stretching icons.
* libnautilus/gnome-icon-container.c: (start_rubberbanding):
Fixed bug that would result in two rubberband timeouts at
once if you did rubberbanding quickly.
* components/notes/.cvsignore: Andy's new component needs a
.cvsignore file for its generated pieces.
* libnautilus/nautilus-directory.c:
(nautilus_directory_try_to_read_metafile),
(nautilus_directory_read_metafile):
Simplified logic in metafile-reading functions and fixed a bug
where the vfs handle would be left open if certain categories
of errors occurred.
* libnautilus/nautilus-gtk-extensions.h:
Added a missing gtk_marshal function.
* libnautilus/nautilus-icon-factory.h:
* libnautilus/nautilus-icon-factory.c:
(nautilus_icon_size_for_zoom_level),
(nautilus_get_icon_size_for_zoom_level),
(nautilus_icon_factory_get_pixbuf_for_file),
(nautilus_icon_factory_get_pixmap_and_mask_for_file):
* src/nautilus-index-title.c: (nautilus_index_title_set_up_icon):
* src/nautilus-zoom-control.c: (set_zoom_level):
* src/file-manager/fm-directory-view-list.c:
(fm_directory_view_list_bump_zoom_level), (install_icon):
Made some API improvements for the icon factory. Added a missing
get_ to the name nautilus_get_icon_size_for_zoom_level and added
convenience functions for the most common uses of the factory.
* libnautilus/ntl-content-view-frame.c:
* libnautilus/ntl-meta-view-frame.c:
* libnautilus/ntl-view-frame.c:
Weaned all the files in libnautilus itself from using the
libnautilus.h include file. They instead include the parts that
they need. Also added some missing <config.h> includes.
2000-02-16 19:43:10 +00:00
|
|
|
}
|
2000-04-17 21:07:33 +00:00
|
|
|
|
|
|
|
const char *
|
2000-04-19 00:24:42 +00:00
|
|
|
nautilus_icon_canvas_item_get_editable_text (NautilusIconCanvasItem *icon_item)
|
2000-04-17 21:07:33 +00:00
|
|
|
{
|
Added commands for Auto vs. Manual layout, but the guts behind
them is not yet implemented.
Did some cleanup on the new renaming code.
* nautilus-glib-extensions.c:
* nautilus-glib-extensions.h:
Added nautilus_g_list_exactly_one_item and
nautilus_g_list_more_than_one_item. These are more-efficient
versions of g_list_length (x) == 1 and g_list_length (x) > 1.
* nautilus-icon-canvas-item.c:
(draw_or_measure_label_text): Add a line break between the
editable text and the additional text.
(nautilus_icon_canvas_get_text_bounds),
(nautilus_icon_canvas_get_editable_text_bounds),
(nautilus_icon_canvas_get_editable_text),
(nautilus_icon_canvas_set_renaming):
Replaced g_assert with g_return_if_fail calls, and added the
complete set of g_return_if_fail.
(nautilus_icon_canvas_set_renaming): Don't update the item
unless the renaming state has actually changed.
* nautilus-icon-canvas-item.h: Fixed formatting.
* nautilus-icon-container.c:
* nautilus-icon-container.h:
Added nautilus_icon_container_set_auto_layout and
nautilus_icon_container_is_auto_layout. For now they are
placeholders that just modify a boolean.
* nautilus-icon-private.h:
Added the auto_layout boolean.
* nautilus-icon-text-item.c:
* nautilus-icon-text-item.h:
Just some formatting and other minor cleanup.
* nautilus-metadata.h:
Added NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT.
* nautilus-location-bar.c (drag_data_received_cb): Use the new
nautilus_g_list_more_than_one_item function.
* fm-directory-view.c (bonobo_menu_open_cb), (open_cb): Use the
new nautilus_g_list_exactly_one_item.
* fm-icon-text-window.c (attribute_names_string_is_good),
(set_preference_string), (synch_menus_with_preference),
(preference_changed_callback),
(changed_attributes_option_menu_cb): Got rid of the hard-coded
first item "name" which is no longer needed. Also changed to
handle bad data in the preferences.
* fm-icon-view.c (fm_icon_view_initialize_class): Updated since
there's no "name" item needed any more.
(fm_icon_view_compute_menu_item_info): Merged MENU_PATH_RENAME
with MENU_RENAME_TEXT and simplified the logic.
(fm_icon_view_append_selection_context_menu_items): Merged
MENU_PATH_RENAME with MENU_RENAME_TEXT.
(update_layout_menus), (auto_layout_callback),
(manual_layout_callback), (fm_icon_view_merge_menus): Added menu
items for auto layout and for manual layout.
(fm_icon_view_begin_loading): Load setting for auto layout from
metadata.
(fm_icon_view_get_icon_text_attribute_names): Changed to get rid
of the "name" first item from the list of text attributes.
(get_icon_editable_text_callback): Simplified since the editable text
is always the icon name. Also got rid of copied and pasted code that's
no longer needed for this case.
(get_icon_additional_text_callback): Got rid of special case for name,
since the name is no longer treated as an attribute.
2000-04-18 01:32:55 +00:00
|
|
|
g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (icon_item), NULL);
|
|
|
|
|
2000-04-17 21:07:33 +00:00
|
|
|
return icon_item->details->editable_text;
|
|
|
|
}
|
|
|
|
|
2000-06-23 17:51:53 +00:00
|
|
|
void
|
Added commands for Auto vs. Manual layout, but the guts behind
them is not yet implemented.
Did some cleanup on the new renaming code.
* nautilus-glib-extensions.c:
* nautilus-glib-extensions.h:
Added nautilus_g_list_exactly_one_item and
nautilus_g_list_more_than_one_item. These are more-efficient
versions of g_list_length (x) == 1 and g_list_length (x) > 1.
* nautilus-icon-canvas-item.c:
(draw_or_measure_label_text): Add a line break between the
editable text and the additional text.
(nautilus_icon_canvas_get_text_bounds),
(nautilus_icon_canvas_get_editable_text_bounds),
(nautilus_icon_canvas_get_editable_text),
(nautilus_icon_canvas_set_renaming):
Replaced g_assert with g_return_if_fail calls, and added the
complete set of g_return_if_fail.
(nautilus_icon_canvas_set_renaming): Don't update the item
unless the renaming state has actually changed.
* nautilus-icon-canvas-item.h: Fixed formatting.
* nautilus-icon-container.c:
* nautilus-icon-container.h:
Added nautilus_icon_container_set_auto_layout and
nautilus_icon_container_is_auto_layout. For now they are
placeholders that just modify a boolean.
* nautilus-icon-private.h:
Added the auto_layout boolean.
* nautilus-icon-text-item.c:
* nautilus-icon-text-item.h:
Just some formatting and other minor cleanup.
* nautilus-metadata.h:
Added NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT.
* nautilus-location-bar.c (drag_data_received_cb): Use the new
nautilus_g_list_more_than_one_item function.
* fm-directory-view.c (bonobo_menu_open_cb), (open_cb): Use the
new nautilus_g_list_exactly_one_item.
* fm-icon-text-window.c (attribute_names_string_is_good),
(set_preference_string), (synch_menus_with_preference),
(preference_changed_callback),
(changed_attributes_option_menu_cb): Got rid of the hard-coded
first item "name" which is no longer needed. Also changed to
handle bad data in the preferences.
* fm-icon-view.c (fm_icon_view_initialize_class): Updated since
there's no "name" item needed any more.
(fm_icon_view_compute_menu_item_info): Merged MENU_PATH_RENAME
with MENU_RENAME_TEXT and simplified the logic.
(fm_icon_view_append_selection_context_menu_items): Merged
MENU_PATH_RENAME with MENU_RENAME_TEXT.
(update_layout_menus), (auto_layout_callback),
(manual_layout_callback), (fm_icon_view_merge_menus): Added menu
items for auto layout and for manual layout.
(fm_icon_view_begin_loading): Load setting for auto layout from
metadata.
(fm_icon_view_get_icon_text_attribute_names): Changed to get rid
of the "name" first item from the list of text attributes.
(get_icon_editable_text_callback): Simplified since the editable text
is always the icon name. Also got rid of copied and pasted code that's
no longer needed for this case.
(get_icon_additional_text_callback): Got rid of special case for name,
since the name is no longer treated as an attribute.
2000-04-18 01:32:55 +00:00
|
|
|
nautilus_icon_canvas_item_set_renaming (NautilusIconCanvasItem *item, gboolean state)
|
2000-04-17 21:07:33 +00:00
|
|
|
{
|
Added commands for Auto vs. Manual layout, but the guts behind
them is not yet implemented.
Did some cleanup on the new renaming code.
* nautilus-glib-extensions.c:
* nautilus-glib-extensions.h:
Added nautilus_g_list_exactly_one_item and
nautilus_g_list_more_than_one_item. These are more-efficient
versions of g_list_length (x) == 1 and g_list_length (x) > 1.
* nautilus-icon-canvas-item.c:
(draw_or_measure_label_text): Add a line break between the
editable text and the additional text.
(nautilus_icon_canvas_get_text_bounds),
(nautilus_icon_canvas_get_editable_text_bounds),
(nautilus_icon_canvas_get_editable_text),
(nautilus_icon_canvas_set_renaming):
Replaced g_assert with g_return_if_fail calls, and added the
complete set of g_return_if_fail.
(nautilus_icon_canvas_set_renaming): Don't update the item
unless the renaming state has actually changed.
* nautilus-icon-canvas-item.h: Fixed formatting.
* nautilus-icon-container.c:
* nautilus-icon-container.h:
Added nautilus_icon_container_set_auto_layout and
nautilus_icon_container_is_auto_layout. For now they are
placeholders that just modify a boolean.
* nautilus-icon-private.h:
Added the auto_layout boolean.
* nautilus-icon-text-item.c:
* nautilus-icon-text-item.h:
Just some formatting and other minor cleanup.
* nautilus-metadata.h:
Added NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT.
* nautilus-location-bar.c (drag_data_received_cb): Use the new
nautilus_g_list_more_than_one_item function.
* fm-directory-view.c (bonobo_menu_open_cb), (open_cb): Use the
new nautilus_g_list_exactly_one_item.
* fm-icon-text-window.c (attribute_names_string_is_good),
(set_preference_string), (synch_menus_with_preference),
(preference_changed_callback),
(changed_attributes_option_menu_cb): Got rid of the hard-coded
first item "name" which is no longer needed. Also changed to
handle bad data in the preferences.
* fm-icon-view.c (fm_icon_view_initialize_class): Updated since
there's no "name" item needed any more.
(fm_icon_view_compute_menu_item_info): Merged MENU_PATH_RENAME
with MENU_RENAME_TEXT and simplified the logic.
(fm_icon_view_append_selection_context_menu_items): Merged
MENU_PATH_RENAME with MENU_RENAME_TEXT.
(update_layout_menus), (auto_layout_callback),
(manual_layout_callback), (fm_icon_view_merge_menus): Added menu
items for auto layout and for manual layout.
(fm_icon_view_begin_loading): Load setting for auto layout from
metadata.
(fm_icon_view_get_icon_text_attribute_names): Changed to get rid
of the "name" first item from the list of text attributes.
(get_icon_editable_text_callback): Simplified since the editable text
is always the icon name. Also got rid of copied and pasted code that's
no longer needed for this case.
(get_icon_additional_text_callback): Got rid of special case for name,
since the name is no longer treated as an attribute.
2000-04-18 01:32:55 +00:00
|
|
|
g_return_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item));
|
|
|
|
g_return_if_fail (state == FALSE || state == TRUE);
|
|
|
|
|
2002-07-10 19:37:49 +00:00
|
|
|
if (!item->details->is_renaming == !state) {
|
Added commands for Auto vs. Manual layout, but the guts behind
them is not yet implemented.
Did some cleanup on the new renaming code.
* nautilus-glib-extensions.c:
* nautilus-glib-extensions.h:
Added nautilus_g_list_exactly_one_item and
nautilus_g_list_more_than_one_item. These are more-efficient
versions of g_list_length (x) == 1 and g_list_length (x) > 1.
* nautilus-icon-canvas-item.c:
(draw_or_measure_label_text): Add a line break between the
editable text and the additional text.
(nautilus_icon_canvas_get_text_bounds),
(nautilus_icon_canvas_get_editable_text_bounds),
(nautilus_icon_canvas_get_editable_text),
(nautilus_icon_canvas_set_renaming):
Replaced g_assert with g_return_if_fail calls, and added the
complete set of g_return_if_fail.
(nautilus_icon_canvas_set_renaming): Don't update the item
unless the renaming state has actually changed.
* nautilus-icon-canvas-item.h: Fixed formatting.
* nautilus-icon-container.c:
* nautilus-icon-container.h:
Added nautilus_icon_container_set_auto_layout and
nautilus_icon_container_is_auto_layout. For now they are
placeholders that just modify a boolean.
* nautilus-icon-private.h:
Added the auto_layout boolean.
* nautilus-icon-text-item.c:
* nautilus-icon-text-item.h:
Just some formatting and other minor cleanup.
* nautilus-metadata.h:
Added NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT.
* nautilus-location-bar.c (drag_data_received_cb): Use the new
nautilus_g_list_more_than_one_item function.
* fm-directory-view.c (bonobo_menu_open_cb), (open_cb): Use the
new nautilus_g_list_exactly_one_item.
* fm-icon-text-window.c (attribute_names_string_is_good),
(set_preference_string), (synch_menus_with_preference),
(preference_changed_callback),
(changed_attributes_option_menu_cb): Got rid of the hard-coded
first item "name" which is no longer needed. Also changed to
handle bad data in the preferences.
* fm-icon-view.c (fm_icon_view_initialize_class): Updated since
there's no "name" item needed any more.
(fm_icon_view_compute_menu_item_info): Merged MENU_PATH_RENAME
with MENU_RENAME_TEXT and simplified the logic.
(fm_icon_view_append_selection_context_menu_items): Merged
MENU_PATH_RENAME with MENU_RENAME_TEXT.
(update_layout_menus), (auto_layout_callback),
(manual_layout_callback), (fm_icon_view_merge_menus): Added menu
items for auto layout and for manual layout.
(fm_icon_view_begin_loading): Load setting for auto layout from
metadata.
(fm_icon_view_get_icon_text_attribute_names): Changed to get rid
of the "name" first item from the list of text attributes.
(get_icon_editable_text_callback): Simplified since the editable text
is always the icon name. Also got rid of copied and pasted code that's
no longer needed for this case.
(get_icon_additional_text_callback): Got rid of special case for name,
since the name is no longer treated as an attribute.
2000-04-18 01:32:55 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2000-04-17 21:07:33 +00:00
|
|
|
item->details->is_renaming = state;
|
2002-09-26 10:07:47 +00:00
|
|
|
eel_canvas_item_request_update (EEL_CANVAS_ITEM (item));
|
2000-04-17 21:07:33 +00:00
|
|
|
}
|
2000-04-22 04:24:53 +00:00
|
|
|
|
2000-06-23 17:51:53 +00:00
|
|
|
double
|
2000-04-22 04:24:53 +00:00
|
|
|
nautilus_icon_canvas_item_get_max_text_width (NautilusIconCanvasItem *item)
|
|
|
|
{
|
2002-09-26 10:07:47 +00:00
|
|
|
EelCanvasItem *canvas_item;
|
2008-03-30 23:23:29 +00:00
|
|
|
NautilusIconContainer *container;
|
Added compact view.
2008-03-29 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.c
(nautilus_global_preferences_get_default_folder_viewer_preference_a
s_iid):
* libnautilus-private/nautilus-global-preferences.h:
* libnautilus-private/nautilus-icon-canvas-item.c
(create_label_layout),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-container.c
(lay_down_one_column), (get_max_icon_dimensions),
(lay_down_icons_vertical), (lay_down_icons_vertical_desktop),
(lay_down_icons), (size_allocate),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_layout_mode),
(nautilus_icon_container_start_renaming_selected_item),
(nautilus_icon_container_set_forced_icon_size),
(nautilus_icon_container_set_all_columns_same_width):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-metadata.h:
* src/file-manager/fm-icon-container.c
(fm_icon_container_get_icon_images),
(fm_icon_container_get_icon_text):
* src/file-manager/fm-icon-view.c
(get_stored_icon_position_callback),
(fm_icon_view_supports_manual_layout),
(fm_icon_view_supports_tighter_layout), (update_layout_menus),
(fm_icon_view_real_set_directory_sort_reversed),
(fm_icon_view_get_directory_auto_layout),
(fm_icon_view_real_get_directory_auto_layout),
(fm_icon_view_set_directory_auto_layout),
(fm_icon_view_real_set_directory_auto_layout),
(fm_icon_view_real_set_directory_tighter_layout),
(real_supports_manual_layout), (get_default_zoom_level),
(set_labels_beside_icons), (set_columns_same_width),
(fm_icon_view_begin_loading), (fm_icon_view_set_zoom_level),
(fm_icon_view_zoom_to_level),
(fm_icon_view_restore_default_zoom_level),
(default_zoom_level_changed_callback),
(all_columns_same_width_changed_callback),
(fm_icon_view_set_property), (fm_icon_view_class_init),
(fm_icon_view_get_id), (fm_icon_view_init), (fm_icon_view_create),
(fm_compact_view_create), (fm_icon_view_is_compact),
(fm_icon_view_register):
* src/file-manager/fm-icon-view.h:
* src/nautilus-file-management-properties.c
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade:
Added compact view.
svn path=/trunk/; revision=14003
2008-03-29 21:21:47 +00:00
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
canvas_item = EEL_CANVAS_ITEM (item);
|
2008-03-30 23:23:29 +00:00
|
|
|
container = NAUTILUS_ICON_CONTAINER (canvas_item->canvas);
|
|
|
|
|
|
|
|
if (nautilus_icon_container_is_tighter_layout (container)) {
|
2000-09-08 07:23:42 +00:00
|
|
|
return MAX_TEXT_WIDTH_TIGHTER * canvas_item->canvas->pixels_per_unit;
|
|
|
|
} else {
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
|
2008-03-30 23:23:29 +00:00
|
|
|
if (container->details->label_position == NAUTILUS_ICON_LABEL_POSITION_BESIDE) {
|
|
|
|
if (container->details->layout_mode == NAUTILUS_ICON_LAYOUT_T_B_L_R ||
|
|
|
|
container->details->layout_mode == NAUTILUS_ICON_LAYOUT_T_B_R_L) {
|
|
|
|
if (container->details->all_columns_same_width) {
|
|
|
|
return MAX_TEXT_WIDTH_BESIDE_TOP_TO_BOTTOM * canvas_item->canvas->pixels_per_unit;
|
|
|
|
} else {
|
|
|
|
return -1;
|
|
|
|
}
|
Added compact view.
2008-03-29 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.c
(nautilus_global_preferences_get_default_folder_viewer_preference_a
s_iid):
* libnautilus-private/nautilus-global-preferences.h:
* libnautilus-private/nautilus-icon-canvas-item.c
(create_label_layout),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-container.c
(lay_down_one_column), (get_max_icon_dimensions),
(lay_down_icons_vertical), (lay_down_icons_vertical_desktop),
(lay_down_icons), (size_allocate),
(nautilus_icon_container_update_icon),
(nautilus_icon_container_set_layout_mode),
(nautilus_icon_container_start_renaming_selected_item),
(nautilus_icon_container_set_forced_icon_size),
(nautilus_icon_container_set_all_columns_same_width):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h:
* libnautilus-private/nautilus-metadata.h:
* src/file-manager/fm-icon-container.c
(fm_icon_container_get_icon_images),
(fm_icon_container_get_icon_text):
* src/file-manager/fm-icon-view.c
(get_stored_icon_position_callback),
(fm_icon_view_supports_manual_layout),
(fm_icon_view_supports_tighter_layout), (update_layout_menus),
(fm_icon_view_real_set_directory_sort_reversed),
(fm_icon_view_get_directory_auto_layout),
(fm_icon_view_real_get_directory_auto_layout),
(fm_icon_view_set_directory_auto_layout),
(fm_icon_view_real_set_directory_auto_layout),
(fm_icon_view_real_set_directory_tighter_layout),
(real_supports_manual_layout), (get_default_zoom_level),
(set_labels_beside_icons), (set_columns_same_width),
(fm_icon_view_begin_loading), (fm_icon_view_set_zoom_level),
(fm_icon_view_zoom_to_level),
(fm_icon_view_restore_default_zoom_level),
(default_zoom_level_changed_callback),
(all_columns_same_width_changed_callback),
(fm_icon_view_set_property), (fm_icon_view_class_init),
(fm_icon_view_get_id), (fm_icon_view_init), (fm_icon_view_create),
(fm_compact_view_create), (fm_icon_view_is_compact),
(fm_icon_view_register):
* src/file-manager/fm-icon-view.h:
* src/nautilus-file-management-properties.c
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade:
Added compact view.
svn path=/trunk/; revision=14003
2008-03-29 21:21:47 +00:00
|
|
|
} else {
|
|
|
|
return MAX_TEXT_WIDTH_BESIDE * canvas_item->canvas->pixels_per_unit;
|
|
|
|
}
|
Add a mode for text-beside-icons.
2003-06-09 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds),
(draw_or_measure_label_text), (measure_label_text),
(draw_label_text), (nautilus_icon_canvas_item_draw),
(create_label_layout), (nautilus_icon_canvas_item_bounds),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_get_max_text_width):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c: (get_grid_width),
(lay_down_icons_horizontal),
(nautilus_icon_container_set_label_position):
* libnautilus-private/nautilus-icon-container.h:
* libnautilus-private/nautilus-icon-private.h: Add a mode for
text-beside-icons.
* libnautilus-private/apps_nautilus_preferences.schemas.in:
* libnautilus-private/nautilus-global-preferences.h:
* src/file-manager/fm-desktop-icon-view.c:
(fm_desktop_icon_view_class_init), (real_supports_keep_aligned),
(real_supports_labels_beside_icons):
* src/file-manager/fm-icon-view.c:
(fm_icon_view_supports_labels_beside_icons),
(real_supports_labels_beside_icons), (set_labels_beside_icons),
(fm_icon_view_begin_loading),
(labels_beside_icons_changed_callback), (fm_icon_view_class_init),
(fm_icon_view_instance_init):
* src/file-manager/fm-icon-view.h: Add a "text beside icons"
preference.
* src/nautilus-file-management-properties.c:
(nautilus_file_management_properties_dialog_setup):
* src/nautilus-file-management-properties.glade: Add the pref
to the dialog.
2003-06-09 11:38:28 +00:00
|
|
|
} else {
|
|
|
|
return MAX_TEXT_WIDTH_STANDARD * canvas_item->canvas->pixels_per_unit;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2000-09-08 07:23:42 +00:00
|
|
|
}
|
|
|
|
|
2000-04-22 04:24:53 +00:00
|
|
|
}
|
2000-09-06 05:19:59 +00:00
|
|
|
|
2003-11-19 11:07:46 +00:00
|
|
|
/* NautilusIconCanvasItemAccessible */
|
|
|
|
|
|
|
|
static NautilusIconCanvasItemAccessiblePrivate *
|
|
|
|
accessible_get_priv (AtkObject *accessible)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItemAccessiblePrivate *priv;
|
|
|
|
|
|
|
|
priv = g_object_get_qdata (G_OBJECT (accessible),
|
|
|
|
accessible_private_data_quark);
|
|
|
|
|
|
|
|
return priv;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* AtkAction interface */
|
|
|
|
|
|
|
|
static gboolean
|
2004-01-27 13:31:49 +00:00
|
|
|
nautilus_icon_canvas_item_accessible_idle_do_action (gpointer data)
|
2003-11-19 11:07:46 +00:00
|
|
|
{
|
|
|
|
NautilusIconCanvasItem *item;
|
2004-01-27 13:31:49 +00:00
|
|
|
NautilusIconCanvasItemAccessibleActionContext *ctx;
|
2003-11-19 11:07:46 +00:00
|
|
|
NautilusIcon *icon;
|
|
|
|
NautilusIconContainer *container;
|
|
|
|
GList* selection;
|
|
|
|
GList file_list;
|
|
|
|
GdkEventButton button_event = { 0 };
|
2004-01-27 13:31:49 +00:00
|
|
|
gint action_number;
|
|
|
|
|
|
|
|
container = NAUTILUS_ICON_CONTAINER (data);
|
|
|
|
container->details->a11y_item_action_idle_handler = 0;
|
|
|
|
while (!g_queue_is_empty (container->details->a11y_item_action_queue)) {
|
|
|
|
ctx = g_queue_pop_head (container->details->a11y_item_action_queue);
|
|
|
|
action_number = ctx->action_number;
|
|
|
|
item = ctx->item;
|
|
|
|
g_free (ctx);
|
|
|
|
icon = item->user_data;
|
|
|
|
|
|
|
|
switch (action_number) {
|
|
|
|
case ACTION_OPEN:
|
|
|
|
file_list.data = icon->data;
|
|
|
|
file_list.next = NULL;
|
|
|
|
file_list.prev = NULL;
|
|
|
|
g_signal_emit_by_name (container, "activate", &file_list);
|
|
|
|
break;
|
|
|
|
case ACTION_MENU:
|
|
|
|
selection = nautilus_icon_container_get_selection (container);
|
|
|
|
if (selection == NULL ||
|
|
|
|
g_list_length (selection) != 1 ||
|
|
|
|
selection->data != icon->data) {
|
|
|
|
g_list_free (selection);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
g_list_free (selection);
|
|
|
|
g_signal_emit_by_name (container, "context_click_selection", &button_event);
|
|
|
|
break;
|
|
|
|
default :
|
|
|
|
g_assert_not_reached ();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
nautilus_icon_canvas_item_accessible_do_action (AtkAction *accessible, int i)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
NautilusIconCanvasItemAccessibleActionContext *ctx;
|
|
|
|
NautilusIcon *icon;
|
|
|
|
NautilusIconContainer *container;
|
2003-11-19 11:07:46 +00:00
|
|
|
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (i < LAST_ACTION);
|
2003-11-19 11:07:46 +00:00
|
|
|
|
|
|
|
item = eel_accessibility_get_gobject (ATK_OBJECT (accessible));
|
|
|
|
if (!item) {
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
icon = item->user_data;
|
|
|
|
container = NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);
|
|
|
|
switch (i) {
|
|
|
|
case ACTION_OPEN:
|
|
|
|
case ACTION_MENU:
|
2004-01-27 13:31:49 +00:00
|
|
|
if (container->details->a11y_item_action_queue == NULL) {
|
|
|
|
container->details->a11y_item_action_queue = g_queue_new ();
|
|
|
|
}
|
|
|
|
ctx = g_new (NautilusIconCanvasItemAccessibleActionContext, 1);
|
|
|
|
ctx->action_number = i;
|
|
|
|
ctx->item = item;
|
|
|
|
g_queue_push_head (container->details->a11y_item_action_queue, ctx);
|
|
|
|
if (container->details->a11y_item_action_idle_handler == 0) {
|
|
|
|
container->details->a11y_item_action_idle_handler = g_idle_add (nautilus_icon_canvas_item_accessible_idle_do_action, container);
|
2003-11-19 11:07:46 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
default :
|
|
|
|
g_warning ("Invalid action passed to NautilusIconCanvasItemAccessible::do_action");
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
nautilus_icon_canvas_item_accessible_get_n_actions (AtkAction *accessible)
|
|
|
|
{
|
|
|
|
return LAST_ACTION;
|
|
|
|
}
|
|
|
|
|
|
|
|
static const char *
|
|
|
|
nautilus_icon_canvas_item_accessible_action_get_description (AtkAction *accessible,
|
|
|
|
int i)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItemAccessiblePrivate *priv;
|
|
|
|
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (i < LAST_ACTION);
|
2003-11-19 11:07:46 +00:00
|
|
|
|
|
|
|
priv = accessible_get_priv (ATK_OBJECT (accessible));
|
|
|
|
if (priv->action_descriptions[i]) {
|
|
|
|
return priv->action_descriptions[i];
|
|
|
|
} else {
|
|
|
|
return nautilus_icon_canvas_item_accessible_action_descriptions[i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static const char *
|
|
|
|
nautilus_icon_canvas_item_accessible_action_get_name (AtkAction *accessible, int i)
|
|
|
|
{
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (i < LAST_ACTION);
|
2003-11-19 11:07:46 +00:00
|
|
|
|
|
|
|
return nautilus_icon_canvas_item_accessible_action_names[i];
|
|
|
|
}
|
|
|
|
|
|
|
|
static const char *
|
|
|
|
nautilus_icon_canvas_item_accessible_action_get_keybinding (AtkAction *accessible,
|
|
|
|
int i)
|
|
|
|
{
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (i < LAST_ACTION);
|
2003-11-19 11:07:46 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
nautilus_icon_canvas_item_accessible_action_set_description (AtkAction *accessible,
|
|
|
|
int i,
|
|
|
|
const char *description)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItemAccessiblePrivate *priv;
|
|
|
|
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (i < LAST_ACTION);
|
2003-11-19 11:07:46 +00:00
|
|
|
|
|
|
|
priv = accessible_get_priv (ATK_OBJECT (accessible));
|
|
|
|
|
|
|
|
if (priv->action_descriptions[i]) {
|
|
|
|
g_free (priv->action_descriptions[i]);
|
|
|
|
}
|
|
|
|
priv->action_descriptions[i] = g_strdup (description);
|
|
|
|
|
2003-12-03 09:51:56 +00:00
|
|
|
return TRUE;
|
2003-11-19 11:07:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_accessible_action_interface_init (AtkActionIface *iface)
|
|
|
|
{
|
|
|
|
iface->do_action = nautilus_icon_canvas_item_accessible_do_action;
|
|
|
|
iface->get_n_actions = nautilus_icon_canvas_item_accessible_get_n_actions;
|
|
|
|
iface->get_description = nautilus_icon_canvas_item_accessible_action_get_description;
|
|
|
|
iface->get_keybinding = nautilus_icon_canvas_item_accessible_action_get_keybinding;
|
|
|
|
iface->get_name = nautilus_icon_canvas_item_accessible_action_get_name;
|
|
|
|
iface->set_description = nautilus_icon_canvas_item_accessible_action_set_description;
|
|
|
|
}
|
|
|
|
|
2002-03-26 19:24:11 +00:00
|
|
|
static G_CONST_RETURN gchar *
|
|
|
|
nautilus_icon_canvas_item_accessible_get_name (AtkObject *accessible)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
|
2003-12-03 09:51:56 +00:00
|
|
|
if (accessible->name) {
|
|
|
|
return accessible->name;
|
|
|
|
}
|
|
|
|
|
2002-03-26 19:24:11 +00:00
|
|
|
item = eel_accessibility_get_gobject (accessible);
|
|
|
|
if (!item) {
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
return item->details->editable_text;
|
|
|
|
}
|
|
|
|
|
|
|
|
static G_CONST_RETURN gchar*
|
|
|
|
nautilus_icon_canvas_item_accessible_get_description (AtkObject *accessible)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
|
|
|
|
item = eel_accessibility_get_gobject (accessible);
|
|
|
|
if (!item) {
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
return item->details->additional_text;
|
|
|
|
}
|
|
|
|
|
New functions. (nautilus_icon_canvas_item_accessible_class_init):
2002-03-30 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_accessible_get_parent):
(nautilus_icon_canvas_item_accessible_get_index_in_parent): New
functions.
(nautilus_icon_canvas_item_accessible_class_init): Initialize
get_parent and get_index_in_parent.
* libnautilus-private/nautilus-icon-container.c: (get_accessible),
(nautilus_icon_container_class_init): Init get_accessible, add
icon_added, icon_removed, and cleared signals.
(finish_adding_icon): Emit icon_added.
(nautilus_icon_container_remove): Emit icon_removed.
(accessible_get_priv),
(nautilus_icon_container_accessible_do_action),
(nautilus_icon_container_accessible_get_n_actions),
(nautilus_icon_container_accessible_action_get_description),
(nautilus_icon_container_accessible_action_get_name),
(nautilus_icon_container_accessible_action_get_keybinding),
(nautilus_icon_container_accessible_action_set_description),
(nautilus_icon_container_accessible_action_interface_init),
(nautilus_icon_container_accessible_update_selection),
(nautilus_icon_container_accessible_selection_changed_cb),
(nautilus_icon_container_accessible_icon_added_cb),
(nautilus_icon_container_accessible_icon_removed_cb),
(nautilus_icon_container_accessible_cleared_cb),
(nautilus_icon_container_accessible_add_selection),
(nautilus_icon_container_accessible_clear_selection),
(nautilus_icon_container_accessible_ref_selection),
(nautilus_icon_container_accessible_get_selection_count),
(nautilus_icon_container_accessible_is_child_selected),
(nautilus_icon_container_accessible_remove_selection),
(nautilus_icon_container_accessible_select_all_selection),
(nautilus_icon_container_accessible_selection_interface_init),
(nautilus_icon_container_accessible_get_n_children),
(nautilus_icon_container_accessible_ref_child),
(nautilus_icon_container_accessible_initialize),
(nautilus_icon_container_accessible_finalize),
(nautilus_icon_container_accessible_class_init),
(nautilus_icon_container_accessible_get_type): New functions.
* libnautilus-private/nautilus-icon-container.h: Added class
members for the icon_added, icon_removed, and cleared signals.
2002-04-01 08:10:26 +00:00
|
|
|
static AtkObject *
|
|
|
|
nautilus_icon_canvas_item_accessible_get_parent (AtkObject *accessible)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
|
|
|
|
item = eel_accessibility_get_gobject (accessible);
|
|
|
|
if (!item) {
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
return gtk_widget_get_accessible (GTK_WIDGET (EEL_CANVAS_ITEM (item)->canvas));
|
New functions. (nautilus_icon_canvas_item_accessible_class_init):
2002-03-30 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_accessible_get_parent):
(nautilus_icon_canvas_item_accessible_get_index_in_parent): New
functions.
(nautilus_icon_canvas_item_accessible_class_init): Initialize
get_parent and get_index_in_parent.
* libnautilus-private/nautilus-icon-container.c: (get_accessible),
(nautilus_icon_container_class_init): Init get_accessible, add
icon_added, icon_removed, and cleared signals.
(finish_adding_icon): Emit icon_added.
(nautilus_icon_container_remove): Emit icon_removed.
(accessible_get_priv),
(nautilus_icon_container_accessible_do_action),
(nautilus_icon_container_accessible_get_n_actions),
(nautilus_icon_container_accessible_action_get_description),
(nautilus_icon_container_accessible_action_get_name),
(nautilus_icon_container_accessible_action_get_keybinding),
(nautilus_icon_container_accessible_action_set_description),
(nautilus_icon_container_accessible_action_interface_init),
(nautilus_icon_container_accessible_update_selection),
(nautilus_icon_container_accessible_selection_changed_cb),
(nautilus_icon_container_accessible_icon_added_cb),
(nautilus_icon_container_accessible_icon_removed_cb),
(nautilus_icon_container_accessible_cleared_cb),
(nautilus_icon_container_accessible_add_selection),
(nautilus_icon_container_accessible_clear_selection),
(nautilus_icon_container_accessible_ref_selection),
(nautilus_icon_container_accessible_get_selection_count),
(nautilus_icon_container_accessible_is_child_selected),
(nautilus_icon_container_accessible_remove_selection),
(nautilus_icon_container_accessible_select_all_selection),
(nautilus_icon_container_accessible_selection_interface_init),
(nautilus_icon_container_accessible_get_n_children),
(nautilus_icon_container_accessible_ref_child),
(nautilus_icon_container_accessible_initialize),
(nautilus_icon_container_accessible_finalize),
(nautilus_icon_container_accessible_class_init),
(nautilus_icon_container_accessible_get_type): New functions.
* libnautilus-private/nautilus-icon-container.h: Added class
members for the icon_added, icon_removed, and cleared signals.
2002-04-01 08:10:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
nautilus_icon_canvas_item_accessible_get_index_in_parent (AtkObject *accessible)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
NautilusIconContainer *container;
|
|
|
|
GList *l;
|
|
|
|
NautilusIcon *icon;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
item = eel_accessibility_get_gobject (accessible);
|
|
|
|
if (!item) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
2002-09-26 10:07:47 +00:00
|
|
|
container = NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);
|
New functions. (nautilus_icon_canvas_item_accessible_class_init):
2002-03-30 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_accessible_get_parent):
(nautilus_icon_canvas_item_accessible_get_index_in_parent): New
functions.
(nautilus_icon_canvas_item_accessible_class_init): Initialize
get_parent and get_index_in_parent.
* libnautilus-private/nautilus-icon-container.c: (get_accessible),
(nautilus_icon_container_class_init): Init get_accessible, add
icon_added, icon_removed, and cleared signals.
(finish_adding_icon): Emit icon_added.
(nautilus_icon_container_remove): Emit icon_removed.
(accessible_get_priv),
(nautilus_icon_container_accessible_do_action),
(nautilus_icon_container_accessible_get_n_actions),
(nautilus_icon_container_accessible_action_get_description),
(nautilus_icon_container_accessible_action_get_name),
(nautilus_icon_container_accessible_action_get_keybinding),
(nautilus_icon_container_accessible_action_set_description),
(nautilus_icon_container_accessible_action_interface_init),
(nautilus_icon_container_accessible_update_selection),
(nautilus_icon_container_accessible_selection_changed_cb),
(nautilus_icon_container_accessible_icon_added_cb),
(nautilus_icon_container_accessible_icon_removed_cb),
(nautilus_icon_container_accessible_cleared_cb),
(nautilus_icon_container_accessible_add_selection),
(nautilus_icon_container_accessible_clear_selection),
(nautilus_icon_container_accessible_ref_selection),
(nautilus_icon_container_accessible_get_selection_count),
(nautilus_icon_container_accessible_is_child_selected),
(nautilus_icon_container_accessible_remove_selection),
(nautilus_icon_container_accessible_select_all_selection),
(nautilus_icon_container_accessible_selection_interface_init),
(nautilus_icon_container_accessible_get_n_children),
(nautilus_icon_container_accessible_ref_child),
(nautilus_icon_container_accessible_initialize),
(nautilus_icon_container_accessible_finalize),
(nautilus_icon_container_accessible_class_init),
(nautilus_icon_container_accessible_get_type): New functions.
* libnautilus-private/nautilus-icon-container.h: Added class
members for the icon_added, icon_removed, and cleared signals.
2002-04-01 08:10:26 +00:00
|
|
|
|
|
|
|
l = container->details->icons;
|
|
|
|
i = 0;
|
|
|
|
while (l) {
|
|
|
|
icon = l->data;
|
|
|
|
|
|
|
|
if (icon->item == item) {
|
|
|
|
return i;
|
|
|
|
}
|
|
|
|
|
|
|
|
i++;
|
|
|
|
l = l->next;
|
|
|
|
}
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
2003-03-19 09:09:06 +00:00
|
|
|
static AtkStateSet*
|
|
|
|
nautilus_icon_canvas_item_accessible_ref_state_set (AtkObject *accessible)
|
|
|
|
{
|
|
|
|
AtkStateSet *state_set;
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
NautilusIconContainer *container;
|
|
|
|
NautilusIcon *icon;
|
|
|
|
GList *l;
|
|
|
|
gboolean one_item_selected;
|
|
|
|
|
|
|
|
state_set = ATK_OBJECT_CLASS (accessible_parent_class)->ref_state_set (accessible);
|
|
|
|
|
|
|
|
item = eel_accessibility_get_gobject (accessible);
|
|
|
|
if (!item) {
|
|
|
|
atk_state_set_add_state (state_set, ATK_STATE_DEFUNCT);
|
2003-10-08 15:20:10 +00:00
|
|
|
return state_set;
|
|
|
|
}
|
|
|
|
container = NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);
|
|
|
|
if (item->details->is_highlighted_as_keyboard_focus) {
|
2003-03-19 09:09:06 +00:00
|
|
|
atk_state_set_add_state (state_set, ATK_STATE_FOCUSED);
|
|
|
|
} else if (!container->details->keyboard_focus) {
|
|
|
|
|
|
|
|
one_item_selected = FALSE;
|
|
|
|
l = container->details->icons;
|
|
|
|
while (l) {
|
|
|
|
icon = l->data;
|
|
|
|
|
|
|
|
if (icon->item == item) {
|
|
|
|
if (icon->is_selected) {
|
|
|
|
one_item_selected = TRUE;
|
|
|
|
} else {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else if (icon->is_selected) {
|
|
|
|
one_item_selected = FALSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
l = l->next;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (one_item_selected) {
|
|
|
|
atk_state_set_add_state (state_set, ATK_STATE_FOCUSED);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return state_set;
|
|
|
|
}
|
New functions. (nautilus_icon_canvas_item_accessible_class_init):
2002-03-30 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_accessible_get_parent):
(nautilus_icon_canvas_item_accessible_get_index_in_parent): New
functions.
(nautilus_icon_canvas_item_accessible_class_init): Initialize
get_parent and get_index_in_parent.
* libnautilus-private/nautilus-icon-container.c: (get_accessible),
(nautilus_icon_container_class_init): Init get_accessible, add
icon_added, icon_removed, and cleared signals.
(finish_adding_icon): Emit icon_added.
(nautilus_icon_container_remove): Emit icon_removed.
(accessible_get_priv),
(nautilus_icon_container_accessible_do_action),
(nautilus_icon_container_accessible_get_n_actions),
(nautilus_icon_container_accessible_action_get_description),
(nautilus_icon_container_accessible_action_get_name),
(nautilus_icon_container_accessible_action_get_keybinding),
(nautilus_icon_container_accessible_action_set_description),
(nautilus_icon_container_accessible_action_interface_init),
(nautilus_icon_container_accessible_update_selection),
(nautilus_icon_container_accessible_selection_changed_cb),
(nautilus_icon_container_accessible_icon_added_cb),
(nautilus_icon_container_accessible_icon_removed_cb),
(nautilus_icon_container_accessible_cleared_cb),
(nautilus_icon_container_accessible_add_selection),
(nautilus_icon_container_accessible_clear_selection),
(nautilus_icon_container_accessible_ref_selection),
(nautilus_icon_container_accessible_get_selection_count),
(nautilus_icon_container_accessible_is_child_selected),
(nautilus_icon_container_accessible_remove_selection),
(nautilus_icon_container_accessible_select_all_selection),
(nautilus_icon_container_accessible_selection_interface_init),
(nautilus_icon_container_accessible_get_n_children),
(nautilus_icon_container_accessible_ref_child),
(nautilus_icon_container_accessible_initialize),
(nautilus_icon_container_accessible_finalize),
(nautilus_icon_container_accessible_class_init),
(nautilus_icon_container_accessible_get_type): New functions.
* libnautilus-private/nautilus-icon-container.h: Added class
members for the icon_added, icon_removed, and cleared signals.
2002-04-01 08:10:26 +00:00
|
|
|
|
2003-11-19 11:07:46 +00:00
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_accessible_initialize (AtkObject *accessible,
|
|
|
|
gpointer data)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItemAccessiblePrivate *priv;
|
|
|
|
|
|
|
|
if (ATK_OBJECT_CLASS (accessible_parent_class)->initialize) {
|
|
|
|
ATK_OBJECT_CLASS (accessible_parent_class)->initialize (accessible, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
priv = g_new0 (NautilusIconCanvasItemAccessiblePrivate, 1);
|
|
|
|
g_object_set_qdata (G_OBJECT (accessible),
|
|
|
|
accessible_private_data_quark,
|
|
|
|
priv);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_accessible_finalize (GObject *object)
|
|
|
|
{
|
2003-12-03 09:51:56 +00:00
|
|
|
NautilusIconCanvasItemAccessiblePrivate *priv;
|
|
|
|
int i;
|
2003-11-19 11:07:46 +00:00
|
|
|
|
2003-12-03 09:51:56 +00:00
|
|
|
priv = accessible_get_priv (ATK_OBJECT (object));
|
2003-11-19 11:07:46 +00:00
|
|
|
|
2003-12-03 09:51:56 +00:00
|
|
|
for (i = 0; i < LAST_ACTION; i++) {
|
|
|
|
g_free (priv->action_descriptions[i]);
|
|
|
|
}
|
|
|
|
g_free (priv->image_description);
|
|
|
|
g_free (priv->description);
|
2003-11-19 11:07:46 +00:00
|
|
|
|
|
|
|
g_free (priv);
|
|
|
|
|
|
|
|
G_OBJECT_CLASS (accessible_parent_class)->finalize (object);
|
|
|
|
}
|
|
|
|
|
2002-03-26 19:24:11 +00:00
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_accessible_class_init (AtkObjectClass *klass)
|
|
|
|
{
|
2003-11-19 11:07:46 +00:00
|
|
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
|
|
|
|
2003-03-19 09:09:06 +00:00
|
|
|
accessible_parent_class = g_type_class_peek_parent (klass);
|
|
|
|
|
2003-11-19 11:07:46 +00:00
|
|
|
gobject_class->finalize = nautilus_icon_canvas_item_accessible_finalize;
|
|
|
|
|
2002-03-26 19:24:11 +00:00
|
|
|
klass->get_name = nautilus_icon_canvas_item_accessible_get_name;
|
|
|
|
klass->get_description = nautilus_icon_canvas_item_accessible_get_description;
|
New functions. (nautilus_icon_canvas_item_accessible_class_init):
2002-03-30 Dave Camp <dave@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c:
(nautilus_icon_canvas_item_accessible_get_parent):
(nautilus_icon_canvas_item_accessible_get_index_in_parent): New
functions.
(nautilus_icon_canvas_item_accessible_class_init): Initialize
get_parent and get_index_in_parent.
* libnautilus-private/nautilus-icon-container.c: (get_accessible),
(nautilus_icon_container_class_init): Init get_accessible, add
icon_added, icon_removed, and cleared signals.
(finish_adding_icon): Emit icon_added.
(nautilus_icon_container_remove): Emit icon_removed.
(accessible_get_priv),
(nautilus_icon_container_accessible_do_action),
(nautilus_icon_container_accessible_get_n_actions),
(nautilus_icon_container_accessible_action_get_description),
(nautilus_icon_container_accessible_action_get_name),
(nautilus_icon_container_accessible_action_get_keybinding),
(nautilus_icon_container_accessible_action_set_description),
(nautilus_icon_container_accessible_action_interface_init),
(nautilus_icon_container_accessible_update_selection),
(nautilus_icon_container_accessible_selection_changed_cb),
(nautilus_icon_container_accessible_icon_added_cb),
(nautilus_icon_container_accessible_icon_removed_cb),
(nautilus_icon_container_accessible_cleared_cb),
(nautilus_icon_container_accessible_add_selection),
(nautilus_icon_container_accessible_clear_selection),
(nautilus_icon_container_accessible_ref_selection),
(nautilus_icon_container_accessible_get_selection_count),
(nautilus_icon_container_accessible_is_child_selected),
(nautilus_icon_container_accessible_remove_selection),
(nautilus_icon_container_accessible_select_all_selection),
(nautilus_icon_container_accessible_selection_interface_init),
(nautilus_icon_container_accessible_get_n_children),
(nautilus_icon_container_accessible_ref_child),
(nautilus_icon_container_accessible_initialize),
(nautilus_icon_container_accessible_finalize),
(nautilus_icon_container_accessible_class_init),
(nautilus_icon_container_accessible_get_type): New functions.
* libnautilus-private/nautilus-icon-container.h: Added class
members for the icon_added, icon_removed, and cleared signals.
2002-04-01 08:10:26 +00:00
|
|
|
klass->get_parent = nautilus_icon_canvas_item_accessible_get_parent;
|
|
|
|
klass->get_index_in_parent = nautilus_icon_canvas_item_accessible_get_index_in_parent;
|
2003-03-19 09:09:06 +00:00
|
|
|
klass->ref_state_set = nautilus_icon_canvas_item_accessible_ref_state_set;
|
2003-11-19 11:07:46 +00:00
|
|
|
klass->initialize = nautilus_icon_canvas_item_accessible_initialize;
|
|
|
|
accessible_private_data_quark = g_quark_from_static_string ("icon-canvas-item-accessible-private-data");
|
2002-03-26 19:24:11 +00:00
|
|
|
}
|
|
|
|
|
2002-03-27 15:23:57 +00:00
|
|
|
|
|
|
|
static G_CONST_RETURN gchar *
|
|
|
|
nautilus_icon_canvas_item_accessible_get_image_description
|
|
|
|
(AtkImage *image)
|
|
|
|
{
|
2003-12-03 09:51:56 +00:00
|
|
|
NautilusIconCanvasItemAccessiblePrivate *priv;
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
NautilusIcon *icon;
|
|
|
|
NautilusIconContainer *container;
|
|
|
|
char *description;
|
2002-03-27 15:23:57 +00:00
|
|
|
|
2003-12-03 09:51:56 +00:00
|
|
|
priv = accessible_get_priv (ATK_OBJECT (image));
|
|
|
|
if (priv->image_description) {
|
|
|
|
return priv->image_description;
|
|
|
|
} else {
|
|
|
|
item = eel_accessibility_get_gobject (ATK_OBJECT (image));
|
|
|
|
if (item == NULL) {
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
icon = item->user_data;
|
|
|
|
container = NAUTILUS_ICON_CONTAINER (EEL_CANVAS_ITEM (item)->canvas);
|
|
|
|
description = nautilus_icon_container_get_icon_description (container, icon->data);
|
|
|
|
g_free (priv->description);
|
|
|
|
priv->description = description;
|
|
|
|
return priv->description;
|
|
|
|
}
|
|
|
|
}
|
2002-03-27 15:23:57 +00:00
|
|
|
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_accessible_get_image_size
|
|
|
|
(AtkImage *image,
|
|
|
|
gint *width,
|
|
|
|
gint *height)
|
|
|
|
{
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
|
|
|
|
item = eel_accessibility_get_gobject (ATK_OBJECT (image));
|
|
|
|
|
|
|
|
if (!item || !item->details->pixbuf) {
|
|
|
|
*width = *height = 0;
|
|
|
|
} else {
|
|
|
|
*width = gdk_pixbuf_get_width (item->details->pixbuf);
|
|
|
|
*height = gdk_pixbuf_get_height (item->details->pixbuf);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_accessible_get_image_position
|
|
|
|
(AtkImage *image,
|
|
|
|
gint *x,
|
|
|
|
gint *y,
|
|
|
|
AtkCoordType coord_type)
|
|
|
|
{
|
2003-03-04 10:09:55 +00:00
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
gint x_offset, y_offset, itmp;
|
2002-03-27 15:23:57 +00:00
|
|
|
|
2003-03-04 10:09:55 +00:00
|
|
|
item = eel_accessibility_get_gobject (ATK_OBJECT (image));
|
|
|
|
if (!item) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!item->details->canvas_rect.x0 && !item->details->canvas_rect.x1) {
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
x_offset = 0;
|
|
|
|
y_offset = 0;
|
|
|
|
if (item->details->text_width) {
|
|
|
|
itmp = item->details->canvas_rect.x0 -
|
|
|
|
item->details->text_rect.x0;
|
|
|
|
if (itmp > x_offset) {
|
|
|
|
x_offset = itmp;
|
|
|
|
}
|
|
|
|
itmp = item->details->canvas_rect.y0 -
|
|
|
|
item->details->text_rect.y0;
|
|
|
|
if (itmp > y_offset) {
|
|
|
|
y_offset = itmp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (item->details->emblem_pixbufs) {
|
|
|
|
itmp = item->details->canvas_rect.x0 -
|
|
|
|
item->details->emblem_rect.x0;
|
|
|
|
if (itmp > x_offset) {
|
|
|
|
x_offset = itmp;
|
|
|
|
}
|
|
|
|
itmp = item->details->canvas_rect.y0 -
|
|
|
|
item->details->emblem_rect.y0;
|
|
|
|
if (itmp > y_offset) {
|
|
|
|
y_offset = itmp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
atk_component_get_position (ATK_COMPONENT (image), x, y, coord_type);
|
|
|
|
*x += x_offset;
|
|
|
|
*y += y_offset;
|
2002-03-27 15:23:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
nautilus_icon_canvas_item_accessible_set_image_description
|
|
|
|
(AtkImage *image,
|
|
|
|
const gchar *description)
|
|
|
|
{
|
2003-12-03 09:51:56 +00:00
|
|
|
NautilusIconCanvasItemAccessiblePrivate *priv;
|
|
|
|
|
|
|
|
priv = accessible_get_priv (ATK_OBJECT (image));
|
|
|
|
|
|
|
|
g_free (priv->image_description);
|
|
|
|
priv->image_description = g_strdup (description);
|
|
|
|
|
|
|
|
return TRUE;
|
2002-03-27 15:23:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_accessible_image_interface_init (AtkImageIface *iface)
|
|
|
|
{
|
|
|
|
iface->get_image_description = nautilus_icon_canvas_item_accessible_get_image_description;
|
|
|
|
iface->set_image_description = nautilus_icon_canvas_item_accessible_set_image_description;
|
|
|
|
iface->get_image_size = nautilus_icon_canvas_item_accessible_get_image_size;
|
|
|
|
iface->get_image_position = nautilus_icon_canvas_item_accessible_get_image_position;
|
|
|
|
}
|
|
|
|
|
2003-03-04 10:09:55 +00:00
|
|
|
static gint
|
|
|
|
nautilus_icon_canvas_item_accessible_get_offset_at_point (AtkText *text,
|
|
|
|
gint x,
|
|
|
|
gint y,
|
|
|
|
AtkCoordType coords)
|
|
|
|
{
|
|
|
|
gint real_x, real_y, real_width, real_height;
|
|
|
|
NautilusIconCanvasItem *item;
|
|
|
|
gint editable_height;
|
|
|
|
gint offset = 0;
|
|
|
|
gint index;
|
2006-04-18 16:54:31 +00:00
|
|
|
PangoLayout *layout, *editable_layout, *additional_layout;
|
2003-03-04 10:09:55 +00:00
|
|
|
PangoRectangle rect0;
|
|
|
|
char *icon_text;
|
|
|
|
gboolean have_editable;
|
|
|
|
gboolean have_additional;
|
|
|
|
gint text_offset;
|
|
|
|
|
|
|
|
atk_component_get_extents (ATK_COMPONENT (text), &real_x, &real_y,
|
|
|
|
&real_width, &real_height, coords);
|
|
|
|
|
|
|
|
x -= real_x;
|
|
|
|
y -= real_y;
|
|
|
|
|
|
|
|
item = eel_accessibility_get_gobject (ATK_OBJECT (text));
|
|
|
|
|
|
|
|
if (item->details->pixbuf) {
|
|
|
|
y -= gdk_pixbuf_get_height (item->details->pixbuf);
|
|
|
|
}
|
|
|
|
have_editable = item->details->editable_text != NULL &&
|
|
|
|
item->details->editable_text[0] != '\0';
|
|
|
|
have_additional = item->details->additional_text != NULL &&item->details->additional_text[0] != '\0';
|
2006-04-18 16:54:31 +00:00
|
|
|
|
|
|
|
editable_layout = NULL;
|
|
|
|
additional_layout = NULL;
|
2003-03-04 10:09:55 +00:00
|
|
|
if (have_editable) {
|
2006-04-18 16:54:31 +00:00
|
|
|
editable_layout = get_label_layout (&item->details->editable_text_layout, item, item->details->editable_text);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
prepare_pango_layout_for_draw (item, editable_layout);
|
2006-04-18 16:54:31 +00:00
|
|
|
pango_layout_get_pixel_size (editable_layout, NULL, &editable_height);
|
2003-03-04 10:09:55 +00:00
|
|
|
if (y >= editable_height &&
|
|
|
|
have_additional) {
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
prepare_pango_layout_for_draw (item, editable_layout);
|
2006-04-18 16:54:31 +00:00
|
|
|
additional_layout = get_label_layout (&item->details->additional_text_layout, item, item->details->additional_text);
|
|
|
|
layout = additional_layout;
|
2003-03-04 10:09:55 +00:00
|
|
|
icon_text = item->details->additional_text;
|
|
|
|
y -= editable_height + LABEL_LINE_SPACING;
|
|
|
|
} else {
|
2006-04-18 16:54:31 +00:00
|
|
|
layout = editable_layout;
|
2003-03-04 10:09:55 +00:00
|
|
|
icon_text = item->details->editable_text;
|
|
|
|
}
|
|
|
|
} else if (have_additional) {
|
2006-04-18 16:54:31 +00:00
|
|
|
additional_layout = get_label_layout (&item->details->additional_text_layout, item, item->details->additional_text);
|
Rework large chunks of canvas item text handling. Split text drawing and
2008-08-22 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_invalidate_label_size),
(nautilus_icon_canvas_item_set_property), (compute_text_rectangle),
(nautilus_icon_canvas_item_update_bounds), (layout_get_full_size),
(layout_get_size_for_layout), (prepare_pango_layout_width),
(prepare_pango_layout_for_measure_entire_text),
(prepare_pango_layout_for_draw), (measure_label_text),
(draw_label_text), (create_label_layout),
(nautilus_icon_canvas_item_get_bounds_for_entire_item),
(nautilus_icon_canvas_item_ensure_bounds_up_to_date),
(nautilus_icon_canvas_item_get_text_rectangle),
(nautilus_icon_canvas_item_accessible_get_offset_at_point):
* libnautilus-private/nautilus-icon-canvas-item.h:
* libnautilus-private/nautilus-icon-container.c
(icon_get_bounding_box), (get_icon_bounds_for_canvas_bounds),
(get_all_icon_bounds),
(nautilus_icon_container_update_scroll_region),
(compare_icons_by_position), (placement_grid_mark_icon),
(find_empty_location), (lay_down_icons_vertical_desktop),
(finish_adding_new_icons):
Rework large chunks of canvas item text handling. Split text drawing
and measuring function.
svn path=/trunk/; revision=14514
2008-08-22 12:44:54 +00:00
|
|
|
prepare_pango_layout_for_draw (item, additional_layout);
|
2006-04-18 16:54:31 +00:00
|
|
|
layout = additional_layout;
|
2003-03-04 10:09:55 +00:00
|
|
|
icon_text = item->details->additional_text;
|
|
|
|
} else {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
text_offset = 0;
|
|
|
|
if (have_editable) {
|
2006-04-18 16:54:31 +00:00
|
|
|
pango_layout_index_to_pos (editable_layout, 0, &rect0);
|
2003-03-04 10:09:55 +00:00
|
|
|
text_offset = PANGO_PIXELS (rect0.x);
|
|
|
|
}
|
|
|
|
if (have_additional) {
|
|
|
|
gint itmp;
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
pango_layout_index_to_pos (additional_layout, 0, &rect0);
|
2003-03-04 10:09:55 +00:00
|
|
|
itmp = PANGO_PIXELS (rect0.x);
|
|
|
|
if (itmp < text_offset) {
|
|
|
|
text_offset = itmp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pango_layout_index_to_pos (layout, 0, &rect0);
|
|
|
|
x += text_offset;
|
|
|
|
if (!pango_layout_xy_to_index (layout,
|
|
|
|
x * PANGO_SCALE,
|
|
|
|
y * PANGO_SCALE,
|
|
|
|
&index, NULL)) {
|
|
|
|
if (x < 0 || y < 0) {
|
|
|
|
index = 0;
|
|
|
|
} else {
|
|
|
|
index = -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (index == -1) {
|
|
|
|
offset = g_utf8_strlen (icon_text, -1);
|
|
|
|
} else {
|
|
|
|
offset = g_utf8_pointer_to_offset (icon_text, icon_text + index);
|
|
|
|
}
|
2006-04-18 16:54:31 +00:00
|
|
|
if (layout == additional_layout) {
|
2003-03-04 10:09:55 +00:00
|
|
|
offset += g_utf8_strlen (item->details->editable_text, -1);
|
|
|
|
}
|
2006-04-18 16:54:31 +00:00
|
|
|
|
|
|
|
if (editable_layout != NULL) {
|
|
|
|
g_object_unref (editable_layout);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (additional_layout != NULL) {
|
|
|
|
g_object_unref (additional_layout);
|
|
|
|
}
|
|
|
|
|
2003-03-04 10:09:55 +00:00
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_accessible_get_character_extents (AtkText *text,
|
|
|
|
gint offset,
|
|
|
|
gint *x,
|
|
|
|
gint *y,
|
|
|
|
gint *width,
|
|
|
|
gint *height,
|
|
|
|
AtkCoordType coords)
|
|
|
|
{
|
|
|
|
gint pos_x, pos_y;
|
|
|
|
gint len, byte_offset;
|
|
|
|
gint editable_height;
|
|
|
|
gchar *icon_text;
|
|
|
|
NautilusIconCanvasItem *item;
|
2006-04-18 16:54:31 +00:00
|
|
|
PangoLayout *layout, *editable_layout, *additional_layout;
|
2003-03-04 10:09:55 +00:00
|
|
|
PangoRectangle rect;
|
|
|
|
PangoRectangle rect0;
|
|
|
|
gboolean have_editable;
|
|
|
|
gint text_offset;
|
|
|
|
|
|
|
|
atk_component_get_position (ATK_COMPONENT (text), &pos_x, &pos_y, coords);
|
|
|
|
item = eel_accessibility_get_gobject (ATK_OBJECT (text));
|
|
|
|
|
|
|
|
if (item->details->pixbuf) {
|
|
|
|
pos_y += gdk_pixbuf_get_height (item->details->pixbuf);
|
|
|
|
}
|
|
|
|
|
|
|
|
have_editable = item->details->editable_text != NULL &&
|
|
|
|
item->details->editable_text[0] != '\0';
|
|
|
|
if (have_editable) {
|
|
|
|
len = g_utf8_strlen (item->details->editable_text, -1);
|
|
|
|
} else {
|
|
|
|
len = 0;
|
|
|
|
}
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
editable_layout = get_label_layout (&item->details->editable_text_layout, item, item->details->editable_text);
|
|
|
|
additional_layout = get_label_layout (&item->details->additional_text_layout, item, item->details->additional_text);
|
|
|
|
|
2003-03-04 10:09:55 +00:00
|
|
|
if (offset < len) {
|
|
|
|
icon_text = item->details->editable_text;
|
2006-04-18 16:54:31 +00:00
|
|
|
layout = editable_layout;
|
2003-03-04 10:09:55 +00:00
|
|
|
} else {
|
|
|
|
offset -= len;
|
|
|
|
icon_text = item->details->additional_text;
|
2006-04-18 16:54:31 +00:00
|
|
|
layout = additional_layout;
|
2003-03-04 10:09:55 +00:00
|
|
|
pos_y += LABEL_LINE_SPACING;
|
|
|
|
if (have_editable) {
|
2006-04-18 16:54:31 +00:00
|
|
|
pango_layout_get_pixel_size (editable_layout, NULL, &editable_height);
|
2003-03-04 10:09:55 +00:00
|
|
|
pos_y += editable_height;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
byte_offset = g_utf8_offset_to_pointer (icon_text, offset) - icon_text;
|
|
|
|
pango_layout_index_to_pos (layout, byte_offset, &rect);
|
|
|
|
text_offset = 0;
|
|
|
|
if (have_editable) {
|
2006-04-18 16:54:31 +00:00
|
|
|
pango_layout_index_to_pos (editable_layout, 0, &rect0);
|
2003-03-04 10:09:55 +00:00
|
|
|
text_offset = PANGO_PIXELS (rect0.x);
|
|
|
|
}
|
|
|
|
if (item->details->additional_text != NULL &&
|
|
|
|
item->details->additional_text[0] != '\0') {
|
|
|
|
gint itmp;
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
pango_layout_index_to_pos (additional_layout, 0, &rect0);
|
2003-03-04 10:09:55 +00:00
|
|
|
itmp = PANGO_PIXELS (rect0.x);
|
|
|
|
if (itmp < text_offset) {
|
|
|
|
text_offset = itmp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2006-04-18 16:54:31 +00:00
|
|
|
g_object_unref (editable_layout);
|
|
|
|
g_object_unref (additional_layout);
|
|
|
|
|
2003-03-04 10:09:55 +00:00
|
|
|
*x = pos_x + PANGO_PIXELS (rect.x) - text_offset;
|
|
|
|
*y = pos_y + PANGO_PIXELS (rect.y);
|
|
|
|
*width = PANGO_PIXELS (rect.width);
|
|
|
|
*height = PANGO_PIXELS (rect.height);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_accessible_text_interface_init (AtkTextIface *iface)
|
|
|
|
{
|
|
|
|
iface->get_text = eel_accessibility_text_get_text;
|
|
|
|
iface->get_character_at_offset = eel_accessibility_text_get_character_at_offset;
|
|
|
|
iface->get_text_before_offset = eel_accessibility_text_get_text_before_offset;
|
|
|
|
iface->get_text_at_offset = eel_accessibility_text_get_text_at_offset;
|
|
|
|
iface->get_text_after_offset = eel_accessibility_text_get_text_after_offset;
|
|
|
|
iface->get_character_count = eel_accessibility_text_get_character_count;
|
|
|
|
iface->get_character_extents = nautilus_icon_canvas_item_accessible_get_character_extents;
|
|
|
|
iface->get_offset_at_point = nautilus_icon_canvas_item_accessible_get_offset_at_point;
|
|
|
|
}
|
|
|
|
|
2002-03-26 19:24:11 +00:00
|
|
|
static GType
|
|
|
|
nautilus_icon_canvas_item_accessible_get_type (void)
|
|
|
|
{
|
|
|
|
static GType type = 0;
|
|
|
|
|
|
|
|
if (!type) {
|
2007-01-18 12:26:35 +00:00
|
|
|
const GInterfaceInfo atk_image_info = {
|
2002-03-27 15:23:57 +00:00
|
|
|
(GInterfaceInitFunc)
|
|
|
|
nautilus_icon_canvas_item_accessible_image_interface_init,
|
|
|
|
(GInterfaceFinalizeFunc) NULL,
|
|
|
|
NULL
|
|
|
|
};
|
2003-03-04 10:09:55 +00:00
|
|
|
|
2007-01-18 12:26:35 +00:00
|
|
|
const GInterfaceInfo atk_text_info = {
|
2003-03-04 10:09:55 +00:00
|
|
|
(GInterfaceInitFunc)
|
|
|
|
nautilus_icon_canvas_item_accessible_text_interface_init,
|
|
|
|
(GInterfaceFinalizeFunc) NULL,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
2007-01-18 12:26:35 +00:00
|
|
|
const GInterfaceInfo atk_action_info = {
|
2003-11-19 11:07:46 +00:00
|
|
|
(GInterfaceInitFunc)
|
|
|
|
nautilus_icon_canvas_item_accessible_action_interface_init,
|
|
|
|
(GInterfaceFinalizeFunc) NULL,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
2002-03-26 19:24:11 +00:00
|
|
|
type = eel_accessibility_create_derived_type (
|
|
|
|
"NautilusIconCanvasItemAccessibility",
|
2002-09-26 10:07:47 +00:00
|
|
|
EEL_TYPE_CANVAS_ITEM,
|
2002-03-26 19:24:11 +00:00
|
|
|
nautilus_icon_canvas_item_accessible_class_init);
|
2002-03-27 15:23:57 +00:00
|
|
|
|
2002-04-11 17:13:07 +00:00
|
|
|
if (type != G_TYPE_INVALID) {
|
|
|
|
g_type_add_interface_static (
|
|
|
|
type, ATK_TYPE_IMAGE, &atk_image_info);
|
2002-04-04 11:35:41 +00:00
|
|
|
|
2003-03-04 10:09:55 +00:00
|
|
|
g_type_add_interface_static (
|
|
|
|
type, ATK_TYPE_TEXT, &atk_text_info);
|
|
|
|
|
2003-11-19 11:07:46 +00:00
|
|
|
g_type_add_interface_static (
|
|
|
|
type, ATK_TYPE_ACTION, &atk_action_info);
|
|
|
|
|
2002-04-11 17:13:07 +00:00
|
|
|
}
|
2002-03-26 19:24:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return type;
|
|
|
|
}
|
|
|
|
|
|
|
|
static AtkObject *
|
|
|
|
nautilus_icon_canvas_item_accessible_create (GObject *for_object)
|
|
|
|
{
|
2002-04-11 17:13:07 +00:00
|
|
|
GType type;
|
2002-03-26 19:24:11 +00:00
|
|
|
AtkObject *accessible;
|
|
|
|
NautilusIconCanvasItem *item;
|
2003-03-04 10:09:55 +00:00
|
|
|
GString *item_text;
|
2002-03-26 19:24:11 +00:00
|
|
|
|
|
|
|
item = NAUTILUS_ICON_CANVAS_ITEM (for_object);
|
2008-04-30 04:56:59 +00:00
|
|
|
g_assert (item != NULL);
|
2002-03-26 19:24:11 +00:00
|
|
|
|
2002-04-11 17:13:07 +00:00
|
|
|
type = nautilus_icon_canvas_item_accessible_get_type ();
|
|
|
|
|
|
|
|
if (type == G_TYPE_INVALID) {
|
|
|
|
return atk_no_op_object_new (for_object);
|
|
|
|
}
|
|
|
|
|
2003-03-04 10:09:55 +00:00
|
|
|
item_text = g_string_new (NULL);
|
|
|
|
if (item->details->editable_text) {
|
|
|
|
g_string_append (item_text, item->details->editable_text);
|
|
|
|
}
|
|
|
|
if (item->details->additional_text) {
|
|
|
|
g_string_append (item_text, item->details->additional_text);
|
|
|
|
}
|
2002-04-04 11:35:41 +00:00
|
|
|
item->details->text_util = gail_text_util_new ();
|
|
|
|
gail_text_util_text_setup (item->details->text_util,
|
2003-03-04 10:09:55 +00:00
|
|
|
item_text->str);
|
|
|
|
g_string_free (item_text, TRUE);
|
2002-04-04 11:35:41 +00:00
|
|
|
|
2002-04-11 17:13:07 +00:00
|
|
|
accessible = g_object_new (type, NULL);
|
2003-07-30 07:34:15 +00:00
|
|
|
accessible = eel_accessibility_set_atk_object_return
|
2002-03-26 19:24:11 +00:00
|
|
|
(for_object, accessible);
|
2003-07-30 07:34:15 +00:00
|
|
|
atk_object_set_role (accessible, ATK_ROLE_ICON);
|
|
|
|
return accessible;
|
2002-03-26 19:24:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
EEL_ACCESSIBLE_FACTORY (nautilus_icon_canvas_item_accessible_get_type (),
|
2002-03-27 14:12:45 +00:00
|
|
|
"NautilusIconCanvasItemAccessibilityFactory",
|
2002-03-26 19:24:11 +00:00
|
|
|
nautilus_icon_canvas_item_accessible,
|
2004-01-27 13:31:49 +00:00
|
|
|
nautilus_icon_canvas_item_accessible_create)
|
2002-03-26 19:24:11 +00:00
|
|
|
|
2002-04-04 11:35:41 +00:00
|
|
|
|
|
|
|
static GailTextUtil *
|
|
|
|
nautilus_icon_canvas_item_get_text (GObject *text)
|
|
|
|
{
|
|
|
|
return NAUTILUS_ICON_CANVAS_ITEM (text)->details->text_util;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_text_interface_init (EelAccessibleTextIface *iface)
|
|
|
|
{
|
|
|
|
iface->get_text = nautilus_icon_canvas_item_get_text;
|
|
|
|
}
|
|
|
|
|
2008-08-18 23:06:36 +00:00
|
|
|
void
|
|
|
|
nautilus_icon_canvas_item_set_entire_text (NautilusIconCanvasItem *item,
|
|
|
|
gboolean entire_text)
|
|
|
|
{
|
|
|
|
if (item->details->entire_text != entire_text) {
|
|
|
|
item->details->entire_text = entire_text;
|
|
|
|
|
|
|
|
nautilus_icon_canvas_item_invalidate_label_size (item);
|
|
|
|
eel_canvas_item_request_update (EEL_CANVAS_ITEM (item));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-11-06 20:43:44 +00:00
|
|
|
/* Class initialization function for the icon canvas item. */
|
|
|
|
static void
|
|
|
|
nautilus_icon_canvas_item_class_init (NautilusIconCanvasItemClass *class)
|
|
|
|
{
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
GObjectClass *object_class;
|
2002-09-26 10:07:47 +00:00
|
|
|
EelCanvasItemClass *item_class;
|
2001-11-06 20:43:44 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
object_class = G_OBJECT_CLASS (class);
|
2002-09-26 10:07:47 +00:00
|
|
|
item_class = EEL_CANVAS_ITEM_CLASS (class);
|
2001-11-06 20:43:44 +00:00
|
|
|
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
object_class->finalize = nautilus_icon_canvas_item_finalize;
|
|
|
|
object_class->set_property = nautilus_icon_canvas_item_set_property;
|
|
|
|
object_class->get_property = nautilus_icon_canvas_item_get_property;
|
|
|
|
|
|
|
|
g_object_class_install_property (
|
|
|
|
object_class,
|
|
|
|
PROP_EDITABLE_TEXT,
|
|
|
|
g_param_spec_string ("editable_text",
|
2005-06-03 07:48:01 +00:00
|
|
|
"editable text",
|
|
|
|
"the editable label",
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
"", G_PARAM_READWRITE));
|
|
|
|
|
|
|
|
g_object_class_install_property (
|
|
|
|
object_class,
|
|
|
|
PROP_ADDITIONAL_TEXT,
|
|
|
|
g_param_spec_string ("additional_text",
|
2005-06-03 07:48:01 +00:00
|
|
|
"additional text",
|
|
|
|
"some more text",
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
"", G_PARAM_READWRITE));
|
|
|
|
|
|
|
|
g_object_class_install_property (
|
|
|
|
object_class,
|
|
|
|
PROP_HIGHLIGHTED_FOR_SELECTION,
|
|
|
|
g_param_spec_boolean ("highlighted_for_selection",
|
2005-06-03 07:48:01 +00:00
|
|
|
"highlighted for selection",
|
|
|
|
"whether we are highlighted for a selection",
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
FALSE, G_PARAM_READWRITE));
|
|
|
|
|
|
|
|
g_object_class_install_property (
|
|
|
|
object_class,
|
|
|
|
PROP_HIGHLIGHTED_AS_KEYBOARD_FOCUS,
|
|
|
|
g_param_spec_boolean ("highlighted_as_keyboard_focus",
|
2005-06-03 07:48:01 +00:00
|
|
|
"highlighted as keyboard focus",
|
|
|
|
"whether we are highlighted to render keyboard focus",
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
FALSE, G_PARAM_READWRITE));
|
|
|
|
|
|
|
|
|
|
|
|
g_object_class_install_property (
|
|
|
|
object_class,
|
|
|
|
PROP_HIGHLIGHTED_FOR_DROP,
|
|
|
|
g_param_spec_boolean ("highlighted_for_drop",
|
2005-06-03 07:48:01 +00:00
|
|
|
"highlighted for drop",
|
|
|
|
"whether we are highlighted for a D&D drop",
|
setup both the rgba and GdkColor variants. (update_label_color): upd.
2002-02-17 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_theme_changed): setup both
the rgba and GdkColor variants.
(update_label_color): upd. color handling.
(alloc_colors): allocate the colors on realize
2002-02-15 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_get_label_color): return
the colors we need, grab them from the style's text
information though.
2002-02-14 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-canvas-item.c
(nautilus_icon_canvas_item_get_property),
(nautilus_icon_canvas_item_set_property): port to
properties.
(draw_or_measure_label_text): update color handling,
could we re-use the gc here ?
(draw_stretch_handles): upd gc unref.
(nautilus_icon_canvas_item_class_init): upd.
* libnautilus-private/nautilus-theme.c
(nautilus_pixmap_file_may_be_local),
(nautilus_theme_install_user_theme),
(nautilus_theme_make_preview_pixbuf),
(theme_get_property),
(load_theme_document): upd. file tests.
* libnautilus-private/nautilus-monitor.c
(get_event_uri): use g_build_filename.
* libnautilus-private/nautilus-find-icon-image.c
(get_user_emblem_path, make_full_icon_path),
(make_full_icon_path): upd. file test.
* libnautilus-private/nautilus-file-utilities.c
(nautilus_pixmap_file),
(nautilus_get_data_file_path),
(nautilus_get_user_directory),
(nautilus_get_desktop_directory): upd. file tests.
* libnautilus-private/nautilus-directory-metafile.c
(nautilus_directory_get_boolean_file_metadata): use
strcasecmp not ascii_strdown to save yet more malloc
locking penalty.
* libnautilus-private/nautilus-directory-background.c
(nautilus_file_background_receive_root_window_changes),
(desktop_background_destroyed_callback): upd. root
window macro.
(nautilus_connect_background_to_file_metadata),
(initialize_background_from_settings),
(image_loading_done_callback): upd g_signal bits.
* libnautilus-private/nautilus-volume-monitor.c
(nautilus_volume_monitor_class_init): upd file test.
* libnautilus-private/nautilus-undo-signal-handlers.c
(nautilus_undo_tear_down_nautilus_entry_for_undo): upd.
* libnautilus-private/nautilus-undo-manager.c
(nautilus_undo_manager_class_init): upd. signal bits.
* libnautilus-private/nautilus-trash-monitor.c
(nautilus_trash_monitor_class_init): g_cclosureize.
(nautilus_trash_monitor_init): g_signal upds.
* libnautilus-private/nautilus-trash-file.c
(trash_destroy, nautilus_trash_file_init),
(remove_real_file): upd. g_signal bits.
* libnautilus-private/nautilus-trash-directory.c
(nautilus_trash_directory_init): upd. signal connect.
(trash_destroy): upd. signal bits.
* libnautilus-private/nautilus-program-choosing.c
(get_xalf_prefix): upd. find_program_in_path.
* libnautilus-private/nautilus-program-chooser.c
(nautilus_program_chooser_init): upd. window policy
* libnautilus-private/nautilus-merged-directory.c
(merged_remove_real_directory): upd. g_signal.
(nautilus_merged_directory_class_init): upd. g_closure
* libnautilus-private/nautilus-link-desktop-file.c
(nautilus_link_desktop_file_get_link_icon_from_desktop):
upd. pixmap location.
* libnautilus-private/nautilus-icon-factory.c
(nautilus_icon_factory_class_init): upd. marshallers
(is_theme_in_user_directory): upd. file test.
* libnautilus-private/nautilus-icon-dnd.c
(auto_scroll_timeout_callback): do a queue_draw_area
instead of a widget_draw.
* libnautilus-private/nautilus-icon-container.c
(nautilus_icon_container_init),
(set_pending_icon_to_reveal): g_signal updates.
(nautilus_icon_container_new): remove visual
push/pop.
* libnautilus-private/nautilus-file.c
(nautilus_file_fit_date_as_string): upd. julian date get.
(nautilus_file_class_init): upd. marshallers.
* libnautilus-private/nautilus-file-operations.c
(extract_and_ellipsize_file_name_for_dialog): use
get_basename.
(nautilus_file_operations_copy_move): use gtk stock.
* libnautilus-private/nautilus-file-operations-progress.c
(nautilus_file_operations_progress_update): use
progress_bar_set_fraction.
(nautilus_file_operations_progress_init): prune
progress setup - these are the defaults.
* libnautilus-private/nautilus-entry.c
(nautilus_entry_key_press): upd select_region.
* libnautilus-private/nautilus-drag-window.c
(get_ancestor_blocked_by): upd type_is_a.
* libnautilus-private/nautilus-dnd.c
(nautilus_drag_finalize),
(nautilus_drag_init): g_object ref upd.
* libnautilus-private/nautilus-directory.c
(nautilus_directory_class_init): marshaller upd..
(nautilus_directory_schedule_metadata_remove),
(nautilus_directory_schedule_metadata_copy),
(nautilus_directory_schedule_metadata_move):
basename upd.
* libnautilus-private/nautilus-directory-background.c
(desktop_background_realized): g_signal upd.
(theme_image_path_to_uri): file test upd.
(image_loading_done_callback): object unref on gc & pixmap.
(background_changed_callback): g_signal upd.
* libnautilus-private/nautilus-bookmark.c
(nautilus_bookmark_disconnect_file): g_signal upd.
(nautilus_bookmark_uri_known_not_to_exist): upd
file test.
* libnautilus-private/nautilus-authn-manager.c
(authentication_dialog_button_clicked): use
GTK_RESPONSE_OK
* libnautilus-private/Makefile.am: add deprc.
CFLAGS.
* libnautilus/Makefile.am: ditto.
* configure.in (DISABLE_DEPRECATED_CFLAGS): add.
2002-02-13 Michael Meeks <michael@ximian.com>
* libnautilus-private/nautilus-icon-dnd.c
(nautilus_icon_container_free_drag_data):
re-enterancy protection.
2002-02-19 09:11:16 +00:00
|
|
|
FALSE, G_PARAM_READWRITE));
|
2001-11-06 20:43:44 +00:00
|
|
|
|
|
|
|
item_class->update = nautilus_icon_canvas_item_update;
|
|
|
|
item_class->draw = nautilus_icon_canvas_item_draw;
|
|
|
|
item_class->point = nautilus_icon_canvas_item_point;
|
2002-09-26 10:07:47 +00:00
|
|
|
item_class->translate = nautilus_icon_canvas_item_translate;
|
2001-11-06 20:43:44 +00:00
|
|
|
item_class->bounds = nautilus_icon_canvas_item_bounds;
|
2002-03-26 19:24:11 +00:00
|
|
|
item_class->event = nautilus_icon_canvas_item_event;
|
2001-11-06 20:43:44 +00:00
|
|
|
|
2002-03-26 19:24:11 +00:00
|
|
|
EEL_OBJECT_SET_FACTORY (NAUTILUS_TYPE_ICON_CANVAS_ITEM,
|
|
|
|
nautilus_icon_canvas_item_accessible);
|
2006-04-18 16:54:31 +00:00
|
|
|
|
|
|
|
g_type_class_add_private (class, sizeof (NautilusIconCanvasItemDetails));
|
2001-11-06 20:43:44 +00:00
|
|
|
}
|
2002-04-04 11:35:41 +00:00
|
|
|
|
|
|
|
|