diff options
author | Jan Arne Petersen <jpetersen@uni-bonn.de> | 2002-11-06 14:40:26 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2002-11-06 14:40:26 +0000 |
commit | 4881e9cb3642dd384dc445969775f2f2433c5995 (patch) | |
tree | e2c2a4339443c096d30852e4ba3394eff3634524 | |
parent | 7668905a111527b6132321e3ca694506b4511793 (diff) | |
download | nautilus-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-- | ChangeLog | 26 | ||||
-rw-r--r-- | icons/Makefile.am | 1 | ||||
-rw-r--r-- | icons/nautilus-desktop.png | bin | 0 -> 3002 bytes | |||
-rw-r--r-- | libnautilus-private/nautilus-icon-canvas-item.c | 39 | ||||
-rw-r--r-- | src/Nautilus_shell.server.in | 4 | ||||
-rw-r--r-- | src/nautilus-navigation-window.c | 16 | ||||
-rw-r--r-- | src/nautilus-object-window.c | 16 | ||||
-rw-r--r-- | src/nautilus-spatial-window.c | 16 | ||||
-rw-r--r-- | src/nautilus-window-manage-views.c | 46 | ||||
-rw-r--r-- | src/nautilus-window-private.h | 1 | ||||
-rw-r--r-- | src/nautilus-window.c | 16 |
11 files changed, 147 insertions, 34 deletions
@@ -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 Binary files differnew file mode 100644 index 000000000..e3107a6e0 --- /dev/null +++ b/icons/nautilus-desktop.png 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", |