summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Arne Petersen <jpetersen@uni-bonn.de>2002-11-06 14:40:26 +0000
committerAlexander Larsson <alexl@src.gnome.org>2002-11-06 14:40:26 +0000
commit4881e9cb3642dd384dc445969775f2f2433c5995 (patch)
treee2c2a4339443c096d30852e4ba3394eff3634524
parent7668905a111527b6132321e3ca694506b4511793 (diff)
downloadnautilus-4881e9cb3642dd384dc445969775f2f2433c5995.tar.gz
In single click mode use a hand cursor instead of underlining.
2002-11-07 Jan Arne Petersen <jpetersen@uni-bonn.de> * libnautilus-private/nautilus-icon-canvas-item.c: (draw_or_measure_label_text), (create_label_layout), (get_label_layout), (nautilus_icon_canvas_item_event): In single click mode use a hand cursor instead of underlining. * src/nautilus-window.c: (create_view_as_menu_item): * src/Nautilus_shell.server.in: Add mnemonics to the 'View as List' and 'View as Icons' entries. * icons/Makefile.am: * src/nautilus-window-manage-views.c: (compute_title), (nautilus_window_update_icon), (set_displayed_location), (viewed_file_changed_callback), (location_has_really_changed), (title_changed_callback): * src/nautilus-window-private.h: * src/nautilus-window.c: (icons_changed_callback), (nautilus_window_instance_init): Use the real file icons as window border icons in the nautilus window and file properties dialog. Use a special desktop icon and title in the Ctrl-Alt-Tab window.
-rw-r--r--ChangeLog26
-rw-r--r--icons/Makefile.am1
-rw-r--r--icons/nautilus-desktop.pngbin0 -> 3002 bytes
-rw-r--r--libnautilus-private/nautilus-icon-canvas-item.c39
-rw-r--r--src/Nautilus_shell.server.in4
-rw-r--r--src/nautilus-navigation-window.c16
-rw-r--r--src/nautilus-object-window.c16
-rw-r--r--src/nautilus-spatial-window.c16
-rw-r--r--src/nautilus-window-manage-views.c46
-rw-r--r--src/nautilus-window-private.h1
-rw-r--r--src/nautilus-window.c16
11 files changed, 147 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index b36788d4b..8af688aa4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+2002-11-07 Jan Arne Petersen <jpetersen@uni-bonn.de>
+
+ * libnautilus-private/nautilus-icon-canvas-item.c:
+ (draw_or_measure_label_text), (create_label_layout),
+ (get_label_layout), (nautilus_icon_canvas_item_event):
+
+ In single click mode use a hand cursor instead of underlining.
+
+ * src/nautilus-window.c: (create_view_as_menu_item):
+ * src/Nautilus_shell.server.in:
+
+ Add mnemonics to the 'View as List' and 'View as Icons' entries.
+
+ * icons/Makefile.am:
+ * src/nautilus-window-manage-views.c: (compute_title),
+ (nautilus_window_update_icon), (set_displayed_location),
+ (viewed_file_changed_callback), (location_has_really_changed),
+ (title_changed_callback):
+ * src/nautilus-window-private.h:
+ * src/nautilus-window.c: (icons_changed_callback),
+ (nautilus_window_instance_init):
+
+ Use the real file icons as window border icons in the nautilus window
+ and file properties dialog. Use a special desktop icon and title in
+ the Ctrl-Alt-Tab window.
+
2002-11-06 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-program-chooser.c:
diff --git a/icons/Makefile.am b/icons/Makefile.am
index 974fd00ca..8d2a1c838 100644
--- a/icons/Makefile.am
+++ b/icons/Makefile.am
@@ -22,6 +22,7 @@ icon_DATA =\
emblems.png \
increment.png \
knob.png \
+ nautilus-desktop.png \
nautilus-launch-icon.png \
nautilus-mini-logo.png \
nautilus-server-connect.png \
diff --git a/icons/nautilus-desktop.png b/icons/nautilus-desktop.png
new file mode 100644
index 000000000..e3107a6e0
--- /dev/null
+++ b/icons/nautilus-desktop.png
Binary files differ
diff --git a/libnautilus-private/nautilus-icon-canvas-item.c b/libnautilus-private/nautilus-icon-canvas-item.c
index 6f9aae6a1..6e29a2a7a 100644
--- a/libnautilus-private/nautilus-icon-canvas-item.c
+++ b/libnautilus-private/nautilus-icon-canvas-item.c
@@ -178,7 +178,6 @@ static void draw_label_layout (NautilusIconCanvasItem
static gboolean hit_test_stretch_handle (NautilusIconCanvasItem *item,
ArtIRect canvas_rect);
-static void update_label_layouts (NautilusIconCanvasItem *item);
static void clear_rounded_corners (GdkPixbuf *destination_pixbuf,
GdkPixbuf *corner_pixbuf,
int corner_size);
@@ -1241,23 +1240,6 @@ nautilus_icon_canvas_item_draw (EelCanvasItem *item, GdkDrawable *drawable,
draw_label_text (icon_item, drawable, icon_rect.x0, icon_rect.y1);
}
-static void
-update_label_layouts (NautilusIconCanvasItem *item)
-{
- PangoUnderline underline;
-
- underline = (item->details->is_prelit && in_single_click_mode ()) ?
- PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE;
-
- if (item->details->editable_text_layout != NULL) {
- eel_pango_layout_set_underline (item->details->editable_text_layout, underline);
- }
-
- if (item->details->additional_text_layout != NULL) {
- eel_pango_layout_set_underline (item->details->additional_text_layout, underline);
- }
-}
-
static PangoLayout *
create_label_layout (NautilusIconCanvasItem *item,
const char *text)
@@ -1292,11 +1274,6 @@ create_label_layout (NautilusIconCanvasItem *item,
pango_layout_set_font_description (layout, desc);
pango_font_description_free (desc);
- /* if it's prelit, and we're in click-to-activate mode, underline the text */
- if (item->details->is_prelit && in_single_click_mode ()) {
- eel_pango_layout_set_underline (layout, PANGO_UNDERLINE_SINGLE);
- }
-
return layout;
}
@@ -1307,8 +1284,6 @@ get_label_layout (PangoLayout **layout,
{
if (*layout == NULL) {
*layout = create_label_layout (item, text);
-
- update_label_layouts (item);
}
g_object_ref (*layout);
@@ -1395,6 +1370,7 @@ static int
nautilus_icon_canvas_item_event (EelCanvasItem *item, GdkEvent *event)
{
NautilusIconCanvasItem *icon_item;
+ GdkCursor *cursor;
icon_item = NAUTILUS_ICON_CANVAS_ITEM (item);
@@ -1402,8 +1378,15 @@ nautilus_icon_canvas_item_event (EelCanvasItem *item, GdkEvent *event)
case GDK_ENTER_NOTIFY:
if (!icon_item->details->is_prelit) {
icon_item->details->is_prelit = TRUE;
- update_label_layouts (icon_item);
eel_canvas_item_request_update (item);
+ /* 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);
+ }
+
/* FIXME bugzilla.gnome.org 42473:
* We should emit our own signal here,
* not one from the container; it could hook
@@ -1443,8 +1426,10 @@ nautilus_icon_canvas_item_event (EelCanvasItem *item, GdkEvent *event)
icon_item->details->is_prelit = FALSE;
icon_item->details->is_active = 0;
icon_item->details->is_highlighted_for_drop = FALSE;
- update_label_layouts (icon_item);
eel_canvas_item_request_update (item);
+
+ /* show default cursor */
+ gdk_window_set_cursor (((GdkEventAny *)event)->window, NULL);
}
return TRUE;
diff --git a/src/Nautilus_shell.server.in b/src/Nautilus_shell.server.in
index 80397dc0d..48a4e930b 100644
--- a/src/Nautilus_shell.server.in
+++ b/src/Nautilus_shell.server.in
@@ -27,7 +27,7 @@
<item value="trash"/>
</oaf_attribute>
<oaf_attribute name="nautilus:view_as_name" type="string" _value="Icons"/>
- <oaf_attribute name="nautilus:view_as_label" type="string" _value="View as Icons"/>
+ <oaf_attribute name="nautilus:view_as_label" type="string" _value="View as _Icons"/>
<oaf_attribute name="nautilus:viewer_label" type="string" _value="Icons Viewer"/>
</oaf_server>
@@ -62,7 +62,7 @@
<item value="trash"/>
</oaf_attribute>
<oaf_attribute name="nautilus:view_as_name" type="string" _value="List"/>
- <oaf_attribute name="nautilus:view_as_label" type="string" _value="View as List"/>
+ <oaf_attribute name="nautilus:view_as_label" type="string" _value="View as _List"/>
<oaf_attribute name="nautilus:viewer_label" type="string" _value="List Viewer"/>
</oaf_server>
diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c
index af87078b6..b0177d68e 100644
--- a/src/nautilus-navigation-window.c
+++ b/src/nautilus-navigation-window.c
@@ -155,6 +155,14 @@ set_up_default_icon_list (void)
}
static void
+icons_changed_callback (GObject *factory, NautilusWindow *window)
+{
+ g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+
+ nautilus_window_update_icon (window);
+}
+
+static void
nautilus_window_instance_init (NautilusWindow *window)
{
window->details = g_new0 (NautilusWindowDetails, 1);
@@ -179,6 +187,12 @@ nautilus_window_instance_init (NautilusWindow *window)
nautilus_window_get_ui_container (window),
NULL);
+ /* Register IconFactory callback to update the window border icon
+ * when the icon-theme is changed.
+ */
+ g_signal_connect (nautilus_icon_factory_get (), "icons_changed",
+ G_CALLBACK (icons_changed_callback), window);
+
/* Create a separate component so when we remove the status
* we don't loose the status bar
*/
@@ -1124,7 +1138,7 @@ create_view_as_menu_item (NautilusWindow *window,
char *menu_label;
menu_label = g_strdup (_(identifier->view_as_label));
- menu_item = gtk_menu_item_new_with_label (menu_label);
+ menu_item = gtk_menu_item_new_with_mnemonic (menu_label);
g_free (menu_label);
g_signal_connect_object (menu_item, "activate",
diff --git a/src/nautilus-object-window.c b/src/nautilus-object-window.c
index af87078b6..b0177d68e 100644
--- a/src/nautilus-object-window.c
+++ b/src/nautilus-object-window.c
@@ -155,6 +155,14 @@ set_up_default_icon_list (void)
}
static void
+icons_changed_callback (GObject *factory, NautilusWindow *window)
+{
+ g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+
+ nautilus_window_update_icon (window);
+}
+
+static void
nautilus_window_instance_init (NautilusWindow *window)
{
window->details = g_new0 (NautilusWindowDetails, 1);
@@ -179,6 +187,12 @@ nautilus_window_instance_init (NautilusWindow *window)
nautilus_window_get_ui_container (window),
NULL);
+ /* Register IconFactory callback to update the window border icon
+ * when the icon-theme is changed.
+ */
+ g_signal_connect (nautilus_icon_factory_get (), "icons_changed",
+ G_CALLBACK (icons_changed_callback), window);
+
/* Create a separate component so when we remove the status
* we don't loose the status bar
*/
@@ -1124,7 +1138,7 @@ create_view_as_menu_item (NautilusWindow *window,
char *menu_label;
menu_label = g_strdup (_(identifier->view_as_label));
- menu_item = gtk_menu_item_new_with_label (menu_label);
+ menu_item = gtk_menu_item_new_with_mnemonic (menu_label);
g_free (menu_label);
g_signal_connect_object (menu_item, "activate",
diff --git a/src/nautilus-spatial-window.c b/src/nautilus-spatial-window.c
index af87078b6..b0177d68e 100644
--- a/src/nautilus-spatial-window.c
+++ b/src/nautilus-spatial-window.c
@@ -155,6 +155,14 @@ set_up_default_icon_list (void)
}
static void
+icons_changed_callback (GObject *factory, NautilusWindow *window)
+{
+ g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+
+ nautilus_window_update_icon (window);
+}
+
+static void
nautilus_window_instance_init (NautilusWindow *window)
{
window->details = g_new0 (NautilusWindowDetails, 1);
@@ -179,6 +187,12 @@ nautilus_window_instance_init (NautilusWindow *window)
nautilus_window_get_ui_container (window),
NULL);
+ /* Register IconFactory callback to update the window border icon
+ * when the icon-theme is changed.
+ */
+ g_signal_connect (nautilus_icon_factory_get (), "icons_changed",
+ G_CALLBACK (icons_changed_callback), window);
+
/* Create a separate component so when we remove the status
* we don't loose the status bar
*/
@@ -1124,7 +1138,7 @@ create_view_as_menu_item (NautilusWindow *window,
char *menu_label;
menu_label = g_strdup (_(identifier->view_as_label));
- menu_item = gtk_menu_item_new_with_label (menu_label);
+ menu_item = gtk_menu_item_new_with_mnemonic (menu_label);
g_free (menu_label);
g_signal_connect_object (menu_item, "activate",
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index 923bfbdcb..34562b9e3 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -185,7 +185,11 @@ compute_title (NautilusWindow *window)
char *title;
title = NULL;
- if (window->new_content_view != NULL) {
+
+ if (NAUTILUS_IS_DESKTOP_WINDOW (window)) {
+ /* Special Desktop window title (displayed in the Ctrl-Alt-Tab window) */
+ title = g_strdup(_("Desktop"));
+ } else if (window->new_content_view != NULL) {
title = nautilus_view_frame_get_title (window->new_content_view);
} else if (window->content_view != NULL) {
title = nautilus_view_frame_get_title (window->content_view);
@@ -258,6 +262,42 @@ update_title (NautilusWindow *window)
g_free (title);
}
+/* nautilus_window_update_icon:
+ *
+ * Update the non-NautilusViewFrame objects that use the location's user-displayable
+ * icon in some way. Called when the location or icon-theme has changed.
+ * @window: The NautilusWindow in question.
+ *
+ */
+void
+nautilus_window_update_icon (NautilusWindow *window)
+{
+ char *path;
+ GdkPixbuf *pixbuf;
+
+ pixbuf = NULL;
+
+ /* Desktop window special icon */
+ if (NAUTILUS_IS_DESKTOP_WINDOW (window)) {
+ path = nautilus_pixmap_file ("nautilus-desktop.png");
+
+ if (path != NULL) {
+ pixbuf = gdk_pixbuf_new_from_file (path, NULL);
+
+ g_free (path);
+ }
+ } else {
+ pixbuf = nautilus_icon_factory_get_pixbuf_for_file (window->details->viewed_file,
+ "open",
+ NAUTILUS_ICON_SIZE_STANDARD);
+ }
+
+ if (pixbuf != NULL) {
+ gtk_window_set_icon (GTK_WINDOW (window), pixbuf);
+ g_object_unref (pixbuf);
+ }
+}
+
/* set_displayed_location:
*
* Update the non-NautilusViewFrame objects that use the location's user-displayable
@@ -290,6 +330,7 @@ set_displayed_location (NautilusWindow *window, const char *location)
}
update_title (window);
+ nautilus_window_update_icon (window);
}
static void
@@ -501,6 +542,7 @@ viewed_file_changed_callback (NautilusFile *file,
}
update_title (window);
+ nautilus_window_update_icon (window);
}
}
@@ -652,6 +694,7 @@ location_has_really_changed (NautilusWindow *window)
free_location_change (window);
update_title (window);
+ nautilus_window_update_icon (window);
/* The whole window has been finished. Now show it, unless
* we're still waiting for the saved positions from the
@@ -1964,6 +2007,7 @@ title_changed_callback (NautilusViewFrame *view,
g_assert (NAUTILUS_IS_WINDOW (window));
update_title (window);
+ nautilus_window_update_icon (window);
}
static void
diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h
index 5e1803c62..7bf03ca92 100644
--- a/src/nautilus-window-private.h
+++ b/src/nautilus-window-private.h
@@ -172,5 +172,6 @@ void nautilus_window_add_current_location_to_history_list (Nautil
void nautilus_remove_from_history_list_no_notify (const char *location);
GList * nautilus_get_history_list (void);
void nautilus_window_bookmarks_preference_changed_callback (gpointer user_data);
+void nautilus_window_update_icon (NautilusWindow *window);
#endif /* NAUTILUS_WINDOW_PRIVATE_H */
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index af87078b6..b0177d68e 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -155,6 +155,14 @@ set_up_default_icon_list (void)
}
static void
+icons_changed_callback (GObject *factory, NautilusWindow *window)
+{
+ g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+
+ nautilus_window_update_icon (window);
+}
+
+static void
nautilus_window_instance_init (NautilusWindow *window)
{
window->details = g_new0 (NautilusWindowDetails, 1);
@@ -179,6 +187,12 @@ nautilus_window_instance_init (NautilusWindow *window)
nautilus_window_get_ui_container (window),
NULL);
+ /* Register IconFactory callback to update the window border icon
+ * when the icon-theme is changed.
+ */
+ g_signal_connect (nautilus_icon_factory_get (), "icons_changed",
+ G_CALLBACK (icons_changed_callback), window);
+
/* Create a separate component so when we remove the status
* we don't loose the status bar
*/
@@ -1124,7 +1138,7 @@ create_view_as_menu_item (NautilusWindow *window,
char *menu_label;
menu_label = g_strdup (_(identifier->view_as_label));
- menu_item = gtk_menu_item_new_with_label (menu_label);
+ menu_item = gtk_menu_item_new_with_mnemonic (menu_label);
g_free (menu_label);
g_signal_connect_object (menu_item, "activate",