Ehm... in fact I don't remember why I put this option in the preferences window :P. By the way, here's a simplified version without the preference key. A. Il giorno dom, 23/03/2008 alle 12.39 +0100, Cosimo Cecchi ha scritto: > Also, why do you think we need a preference key to control this > behavior? > > Cheers (and happy Easter!) thank you (a little too late :) ) > > Cosimo -- Amos Brocco | Ph.D Student | Computer Science Department - DIUF | University of Fribourg | A406 Pérolles 21 | Bd. Pérolles 90 | CH-1700 Fribourg | http://diuf.unifr.ch/pai/people/broccoa
diff -rupN nautilus-2.22.0-orig/src/nautilus-information-panel.c nautilus-2.22.0/src/nautilus-information-panel.c --- nautilus-2.22.0-orig/src/nautilus-information-panel.c 2008-03-07 16:28:03.000000000 +0100 +++ nautilus-2.22.0/src/nautilus-information-panel.c 2008-03-24 02:20:41.000000000 +0100 @@ -51,6 +51,8 @@ #include <libnautilus-private/nautilus-program-choosing.h> #include <libnautilus-private/nautilus-sidebar-provider.h> #include <libnautilus-private/nautilus-module.h> +#include <gio/gio.h> + struct NautilusInformationPanelDetails { GtkVBox *container; @@ -1094,6 +1096,32 @@ nautilus_information_panel_style_set (Gt } static void +selection_changed_callback (NautilusWindowInfo *window, + NautilusInformationPanel *panel) +{ + int selection_count = nautilus_window_info_get_selection_count (window); + + if (selection_count == 1) { + /* One selected, show detailed info */ + GList* selection = nautilus_window_info_get_selection (window); + GFile* selected = selection->data; + + nautilus_information_panel_set_uri (panel, + g_file_get_uri (selected), g_file_get_basename (selected)); + + g_object_unref (selected); + g_list_free (selection); + } else { + /* Nothing or more than one selected, show directory info */ + char* uri = nautilus_window_info_get_current_location (window); + char* title = nautilus_window_info_get_title (window); + nautilus_information_panel_set_uri (panel, uri, title); + g_free (title); + g_free (uri); + } +} + +static void loading_uri_callback (NautilusWindowInfo *window, char *uri, NautilusInformationPanel *panel) @@ -1119,6 +1147,8 @@ nautilus_information_panel_set_parent_wi G_CALLBACK (loading_uri_callback), panel, 0); g_signal_connect_object (window, "title_changed", G_CALLBACK (title_changed_callback), panel, 0); + g_signal_connect_object (window, "selection_changed", + G_CALLBACK (selection_changed_callback), panel, 0); title = nautilus_window_info_get_title (window); location = nautilus_window_info_get_current_location (window); diff -rupN nautilus-2.22.0-orig/src/nautilus-notes-viewer.c nautilus-2.22.0/src/nautilus-notes-viewer.c --- nautilus-2.22.0-orig/src/nautilus-notes-viewer.c 2008-03-07 16:28:03.000000000 +0100 +++ nautilus-2.22.0/src/nautilus-notes-viewer.c 2008-03-24 02:20:21.000000000 +0100 @@ -279,6 +279,39 @@ notes_load_metainfo (NautilusNotesViewer } static void +selection_changed_callback (NautilusWindowInfo *window, + NautilusNotesViewer *notes) +{ + int selection_count = nautilus_window_info_get_selection_count (window); + + if (selection_count == 1) { + /* One selected, show notes of selected file */ + GList* selection = nautilus_window_info_get_selection (window); + GFile* selected = selection->data; + char* location = g_file_get_uri (selected); + if (strcmp (notes->details->uri, location) != 0) { + notes_save_metainfo (notes); + g_free (notes->details->uri); + notes->details->uri = g_strdup (location); + notes_load_metainfo (notes); + } + g_free (location); + g_object_unref (selected); + g_list_free (selection); + } else { + /* Nothing or more than one selected, show directory notes */ + char* location = nautilus_window_info_get_current_location (window); + if (strcmp (notes->details->uri, location) != 0) { + notes_save_metainfo (notes); + g_free (notes->details->uri); + notes->details->uri = g_strdup (location); + notes_load_metainfo (notes); + } + g_free (location); + } +} + +static void loading_uri_callback (NautilusSidebar *sidebar, const char *location, NautilusNotesViewer *notes) @@ -432,6 +465,9 @@ nautilus_notes_viewer_set_parent_window { g_signal_connect_object (window, "loading_uri", G_CALLBACK (loading_uri_callback), sidebar, 0); + + g_signal_connect_object (window, "selection_changed", + G_CALLBACK (selection_changed_callback), sidebar, 0); g_free (sidebar->details->uri); sidebar->details->uri = nautilus_window_info_get_current_location (window);
Attachment:
signature.asc
Description: Questa =?ISO-8859-1?Q?=E8?= una parte del messaggio firmata digitalmente