diff options
57 files changed, 689 insertions, 382 deletions
@@ -1,3 +1,130 @@ +2001-02-27 Darin Adler <darin@eazel.com> + + reviewed by: John Sullivan <sullivan@eazel.com> + + Did most of the work for bug 5779, separating out the Eazel logos + so they won't be used by non-Eazel folks making changes to + Nautilus if they choose to do "non-approved" changes (allowed by + GPL of course). + + * nautilus.spec.in: Add new logos. + * configure.in: Add eazel-logos and eazel-logos/throbber. + * Makefile.am: Add the eazel-logos subdirectory. + * eazel-logos/Makefile.am: Created. + * eazel-logos/throbber/Makefile.am: Created. + + * components/services/nautilus-dependent-shared/icons/eazel-logo-right-side-logo.png: + * icons/About_Image.png: + * icons/about_background.png: + * icons/default.xml: + * icons/druid_header.png: + * icons/throbber/001.png: + * icons/throbber/002.png: + * icons/throbber/003.png: + * icons/throbber/004.png: + * icons/throbber/005.png: + * icons/throbber/006.png: + * icons/throbber/007.png: + * icons/throbber/008.png: + * icons/throbber/009.png: + * icons/throbber/010.png: + * icons/throbber/011.png: + * icons/throbber/012.png: + * icons/throbber/013.png: + * icons/throbber/014.png: + * icons/throbber/015.png: + * icons/throbber/016.png: + * icons/throbber/017.png: + * icons/throbber/018.png: + * icons/throbber/019.png: + * icons/throbber/020.png: + * icons/throbber/021.png: + * icons/throbber/022.png: + * icons/throbber/023.png: + * icons/throbber/024.png: + * icons/throbber/025.png: + * icons/throbber/026.png: + * icons/throbber/027.png: + * icons/throbber/028.png: + * icons/throbber/029.png: + * icons/throbber/030.png: + * icons/throbber/Makefile.am: + * icons/throbber/rest.png: + Updated with non-logo versions. + + Did 90% of the work for bug 6950 (need new report_redirect call in + addition to report_location_change). While working on that, I also + moved the deferral of outgoing calls that is done in the Mozilla + component so that it is done by the NautilusView class instead. + + * libnautilus/nautilus-view-component.idl: Added report_redirect. + * libnautilus/nautilus-view.h: Added report_redirect. + * libnautilus/nautilus-view.c: (queue_outgoing_call): Added + queing for the outgoing side. + (nautilus_view_initialize): Allocate queue. + (nautilus_view_destroy): Deallocate queue. + (str_list_copy): Utility needed here because we can't use + libnautilus-extensions. + (list_free_deep_callback): New. Used in queuing code. + (free_location_plus_callback): New. Used in queueing code. + (call_open_location_in_this_window), + (call_open_location_prefer_existing_window), + (call_open_location_force_new_window), + (call_report_location_change), (call_report_redirect), + (call_report_selection_change), (call_report_status), + (call_report_load_underway), (call_report_load_progress), + (call_report_load_complete), (call_report_load_failed), + (call_set_title), (call_go_back): Functions that get queued. + These have the bulk of the code to do work. + (nautilus_view_open_location_in_this_window), + (nautilus_view_open_location_prefer_existing_window), + (nautilus_view_open_location_force_new_window), + (nautilus_view_report_location_change), + (nautilus_view_report_redirect), + (nautilus_view_report_selection_change), + (nautilus_view_report_status), + (nautilus_view_report_load_underway), + (nautilus_view_report_load_progress), + (nautilus_view_report_load_complete), + (nautilus_view_report_load_failed), (nautilus_view_set_title), + (nautilus_view_go_back): These functions now simply queue the work + that needs to be done. + + * src/nautilus-view-frame-corba.c: (free_location_plus_callback): + Add a new field for the "from_location" needed for redirect. + (report_redirect): The actual function to do the work. + (impl_Nautilus_ViewFrame_report_redirect): Queue function. + * src/nautilus-view-frame.h: + * src/nautilus-view-frame-private.h: + * src/nautilus-view-frame.c: + (nautilus_view_frame_initialize_class): Create report_redirect + signal. + (nautilus_view_frame_report_redirect): Emit the signal. + * src/nautilus-window-manage-views.c: (report_redirect_callback): + Code to implement the redirect. For now this does the exact same + thing as report_location_change. This is where all the remaining + work to fix the bug goes. + + * components/mozilla/nautilus-mozilla-content-view.c: + (view_load_location_callback), (mozilla_title_changed_callback), + (mozilla_net_start_callback), (mozilla_net_stop_callback), + (mozilla_link_message_callback), (mozilla_progress_callback), + (mozilla_dom_mouse_click_callback), + (navigate_mozilla_to_nautilus_uri), (update_nautilus_uri), + (eazel_services_scheme_from_http): Remove the "async" calls that + defer calls until timeout time now that NautilusView itself does + that for all components. + + * libnautilus-extensions/nautilus-gtk-extensions.h: + * libnautilus-extensions/nautilus-gtk-extensions.c: + (nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER_POINTER): + Added new marshal function needed for report_redirect. + + Other changes. + + * THANKS: Add some more contributors, after running the script + to detect new ChangeLog entries. + 2001-02-27 John Harper <jsh@eazel.com> * cut-n-paste-code/widgets/e-paned/README.changes: updated this diff --git a/Makefile.am b/Makefile.am index a26588a17..2224d1615 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,6 +12,7 @@ endif SUBDIRS = \ data \ icons \ + eazel-logos \ intl \ cut-n-paste-code \ librsvg \ @@ -14,6 +14,7 @@ Fatih Demir <kabalak@kabalak.net> - bug fixes Gregory S. Hayes <ghayes@syncomm.org> - bug fixes Havoc Pennington <hp@redhat.com> - various contributions JP Rosevear <jpr@arcavia.com> - bug fixes +Jason Leach <jasonleach@usa.net> - Solaris fix Jim Garrison <garrison@users.sourceforge.net> - bug fixes Joe Shaw <joe@ximian.com> - installer code, bug fixes John Fleck <jfleck@inkstain.net> - help browser work @@ -25,12 +26,13 @@ Martin Baulig <martin@home-of-linux.org> - added PersistFile support Matt Bissiri <bissiri@eecs.umich.edu> - list widget improvements Michael Meeks <michael@ximian.com> - bonobo fixes Morten Welinder <terra@diku.dk> - check-fixme suggestions +Richard Boulton <richard@tartarus.org> - build fixes Richard Hult <rhult@hem.passagen.se> - bug reporting Robert Brady <rwb197@zepler.org> - bug fixes Shane Butlers <sbutle@deakin.edu.au> - IDE in hardware view patch for showing IDE Stanislav Brabec <utx@penguin.cz> - bug fixes Vera Horiuchi <vera@eazel.com> - documentation -Victor Lecha <victor@eazel.com> - build fixes. +Victor Lecha <victor@eazel.com> - build fixes The following people who did testing work: @@ -48,8 +50,6 @@ Tim Tan <tim@eazel.com> Victor Lecha <victor@eazel.com> Will LaShell <will@lashell.net> - - As well as the following people who contributed translations: Akira TAGOH <tagoh@gnome.gr.jp> @@ -61,9 +61,11 @@ Benedikt Roth <Benedikt.Roth@gmx.net> Carlos Perelló Marín <carlos@hispalinux.es> Christian Meyer <linux@chrisime.de> Christian Rose <menthos@menthos.com> +Christophe Merlet <redfox@eikonex.org> Christopher R. Gabriel <cgabriel@softwarelibero.org> Eric Brayeur <eb@ibelgique.com> Fatih Demir <kabalak@gmx.net> +Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br> Jarkko Ranta <jjranta@cc.joensuu.fi> Jean-Michel Ardantz <jmardantz@ifrance.com> Jesus Bravo Alvarez <jba@pobox.com> @@ -72,7 +74,9 @@ Kjenneth Christiansen <kenneth@gnu.org> Manuel de Vega Barreiro <barreiro@arrakis.es> Martin Norbäck <d95mback@dtek.chalmers.se> Matthias Warkus <mawarkus@gnome.org> +Pablo Gonzalo del Campo <pablodc@bigfoot.com> Pablo Saratxaga <pablo@mandrakesoft.com> +Pauli Virtanen <pauli.virtanen@saunalahti.fi> Robert Brady <robert@suse.co.uk> Simos Xenitellis <simos@hellug.gr> Stanislav Visnovsky <visnovsky@nenya.ms.mff.cuni.cz> diff --git a/components/mozilla/nautilus-mozilla-content-view.c b/components/mozilla/nautilus-mozilla-content-view.c index dd5a0d5d8..48dcbc2d9 100644 --- a/components/mozilla/nautilus-mozilla-content-view.c +++ b/components/mozilla/nautilus-mozilla-content-view.c @@ -1,7 +1,7 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* - * Copyright (C) 2000 Eazel, Inc. + * Copyright (C) 2000, 2001 Eazel, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -103,23 +103,6 @@ struct NautilusMozillaContentViewDetails { gboolean user_initiated_navigation; BonoboUIComponent *ui; - - /* For async NautilusView messages */ - char *pending_title; /*for set_title*/ - char *pending_report_uri; /*for report_location_change*/ - char *pending_link_message; /*for report_status*/ - double pending_load_progress; /*for load_progress*/ - char *pending_open_uri; /*for open_location*/ - - gboolean is_pending_set_title :1; - gboolean is_pending_report_load_failed :1; - gboolean is_pending_report_load_underway :1; - gboolean is_pending_report_load_complete :1; - gboolean is_pending_report_location_change :1; - gboolean is_pending_report_status :1; - gboolean is_pending_report_load_progress :1; - gboolean is_pending_open_location :1; - }; /* GTK Type System */ @@ -141,7 +124,7 @@ static void vfs_read_callback (GnomeVFSAsyncHandle *handle, gpointer data); /* NautilusView callback functions */ -static void view_load_location_callback (NautilusView *nautilus_view, +static void view_load_location_callback (NautilusView *nautilus_view, const char *location, gpointer data); @@ -236,34 +219,10 @@ static void post_widget_initialize (void); static char * eazel_services_scheme_to_http (NautilusMozillaContentView *view, const char *uri); -static char * eazel_services_scheme_from_http (NautilusMozillaContentView *view, +static char * eazel_services_scheme_from_http (NautilusMozillaContentView *view, const char *uri); #endif /* EAZEL_SERVICES */ -/* - * Async NautilusView message dispatchers - */ - -static void async_set_title (NautilusMozillaContentView *view, - const char *title); -static void async_report_load_failed (NautilusMozillaContentView *view); - -static void async_report_load_underway (NautilusMozillaContentView *view); - -static void async_report_load_complete (NautilusMozillaContentView *view); - -static void async_report_location_change (NautilusMozillaContentView *view, - const char *report_uri); -static void async_report_status (NautilusMozillaContentView *view, - const char *link_message); - -static void async_report_load_progress (NautilusMozillaContentView *view, - double load_progress); - -static void async_open_location (NautilusMozillaContentView *view, - const char *open_uri); - - /* BonoboControl callbacks */ static void bonobo_control_activate_callback (BonoboObject *control, gboolean state, gpointer callback_data); @@ -490,7 +449,7 @@ try_transform_nautilus_uri_to_file_scheme (const char *uri) } static void -view_load_location_callback (NautilusView *nautilus_view, +view_load_location_callback (NautilusView *nautilus_view, const char *location, gpointer data) { @@ -812,7 +771,7 @@ mozilla_title_changed_callback (GtkMozEmbed *mozilla, gpointer user_data) DEBUG_MSG (("=%s : new title='%s'\n", __FUNCTION__, new_title)); if (new_title != NULL && strcmp (new_title, "") != 0) { - async_set_title (view, new_title); + nautilus_view_set_title (view->details->nautilus_view, new_title); } g_free (new_title); @@ -1008,7 +967,7 @@ mozilla_net_start_callback (GtkMozEmbed *mozilla, g_assert (GTK_MOZ_EMBED (mozilla) == GTK_MOZ_EMBED (view->details->mozilla)); - async_report_load_underway (view); + nautilus_view_report_load_underway (view->details->nautilus_view); DEBUG_MSG (("-%s\n", __FUNCTION__)); } @@ -1025,7 +984,7 @@ mozilla_net_stop_callback (GtkMozEmbed *mozilla, g_assert (GTK_MOZ_EMBED (mozilla) == view->details->mozilla); - async_report_load_complete (view); + nautilus_view_report_load_complete (view->details->nautilus_view); DEBUG_MSG (("-%s\n", __FUNCTION__)); } @@ -1057,7 +1016,7 @@ mozilla_link_message_callback (GtkMozEmbed *mozilla, gpointer user_data) /* DEBUG_MSG (("=%s new link message '%s'\n", __FUNCTION__, translated_link_message)); */ - async_report_status (view, translated_link_message); + nautilus_view_report_status (view->details->nautilus_view, translated_link_message); g_free (translated_link_message); g_free (link_message); @@ -1085,11 +1044,11 @@ mozilla_progress_callback (GtkMozEmbed *mozilla, */ if (max_progress == -1 || max_progress == 0) { - async_report_load_progress (view, 0); + nautilus_view_report_load_progress (view->details->nautilus_view, 0); } else if (max_progress < current_progress) { - async_report_load_progress (view, 1.0); + nautilus_view_report_load_progress (view->details->nautilus_view, 1.0); } else { - async_report_load_progress (view, current_progress / max_progress); + nautilus_view_report_load_progress (view->details->nautilus_view, current_progress / max_progress); } } @@ -1203,7 +1162,7 @@ mozilla_dom_mouse_click_callback (GtkMozEmbed *mozilla, * Right now, we report a load error. But we * could tell ammonite to prompt for login */ - async_report_load_failed (view); + nautilus_view_report_load_failed (view->details->nautilus_view); ret = NS_DOM_EVENT_CONSUMED; } else if (href[0] == '#') { /* a navigation to an anchor within the same page */ @@ -1260,7 +1219,7 @@ mozilla_dom_mouse_click_callback (GtkMozEmbed *mozilla, } else { /* With some schemes, navigation needs to be funneled through nautilus. */ DEBUG_MSG (("=%s : funnelling navigation through nautilus\n", __FUNCTION__)); - async_open_location (view, href_full); + nautilus_view_open_location_in_this_window (view->details->nautilus_view, href_full); ret = NS_DOM_EVENT_CONSUMED; } @@ -1458,7 +1417,7 @@ navigate_mozilla_to_nautilus_uri (NautilusMozillaContentView *view, cancel_pending_vfs_operation (view); if (mozilla_uri == NULL) { - async_report_load_failed (view); + nautilus_view_report_load_failed (view->details->nautilus_view); goto error; } @@ -1525,7 +1484,10 @@ update_nautilus_uri (NautilusMozillaContentView *view, const char *nautilus_uri) DEBUG_MSG (("=%s current URI is now '%s'\n", __FUNCTION__, view->details->uri)); - async_report_location_change (view, view->details->uri); + nautilus_view_report_location_change (view->details->nautilus_view, + nautilus_uri, + NULL, + nautilus_uri); } /***********************************************************************************/ @@ -2054,7 +2016,7 @@ eazel_services_scheme_to_http (NautilusMozillaContentView *view, } static char * -eazel_services_scheme_from_http (NautilusMozillaContentView *view, +eazel_services_scheme_from_http (NautilusMozillaContentView *view, const char *uri) { AmmoniteError err; @@ -2072,227 +2034,3 @@ eazel_services_scheme_from_http (NautilusMozillaContentView *view, } #endif /* EAZEL_SERVICES */ - - -/***********************************************************************************/ -/***********************************************************************************/ - -/* - * What's going on here? - * - * Below are wrapper functions that delay outbound NautilusViewFrame callbacks - * until we return to the GTK idle loop. The problem is this: - * - * o Any outbound ORBit call, including oneway calls, may result in a - * pending inbound call being dispatched - * o Some inbound calls, particularly Bonobo::Control::realize, cannot safely - * be handled away from the event loop. Indeed, if Bonobo::Control::realize - * gets called during a callback from Mozilla, the mozilla view will deadlock. - * - * By postponing all outbound ORBit calls invoked as a result of mozilla callback - * to the event loop, we eliminated the possibility that inbound calls can occur - * during callbacks from Mozilla - * - * Note: outbound ORBit calls that do not occur as a result of a mozilla callback - * do not need to be so wrapped - * - * FIXME: We want to move this type of thing into libnautilus - */ - -/* - * Note that the "unref" in the calls below matches the "ref" in the async_ - * calls below - */ - -#define DISPATCH_NOARG_TMPL(FUNCNAME) \ - static int /* GtkFunction */ \ - dispatch_##FUNCNAME (gpointer data) \ - { \ - NautilusMozillaContentView *view; \ - \ - view = NAUTILUS_MOZILLA_CONTENT_VIEW (data); \ - \ - view->details->is_pending_##FUNCNAME = FALSE; \ - \ - if (!GTK_OBJECT_DESTROYED (view)) { \ - DEBUG_MSG ((">>nautilus_view_" #FUNCNAME "\n")); \ - nautilus_view_##FUNCNAME (view->details->nautilus_view); \ - } \ - gtk_object_unref (GTK_OBJECT (view)); \ - \ - return 0; \ - } - -#define DISPATCH_STRING_TMPL(FUNCNAME, REALFUNCNAME, ARGNAME) \ - static int /* GtkFunction */ \ - dispatch_##FUNCNAME (gpointer data) \ - { \ - NautilusMozillaContentView *view; \ - \ - view = NAUTILUS_MOZILLA_CONTENT_VIEW (data); \ - \ - view->details->is_pending_##FUNCNAME = FALSE; \ - \ - if (!GTK_OBJECT_DESTROYED (view)) { \ - DEBUG_MSG ((">>nautilus_view_" #REALFUNCNAME " '%s'\n", view->details->pending_##ARGNAME)); \ - nautilus_view_##REALFUNCNAME (view->details->nautilus_view, view->details->pending_##ARGNAME); \ - g_free (view->details->pending_##ARGNAME); \ - view->details->pending_##ARGNAME = NULL; \ - } \ - gtk_object_unref (GTK_OBJECT (view)); \ - \ - return 0; \ - } - -#define DISPATCH_STRING_NO_DEBUG_TMPL(FUNCNAME, REALFUNCNAME, ARGNAME) \ - static int /* GtkFunction */ \ - dispatch_##FUNCNAME (gpointer data) \ - { \ - NautilusMozillaContentView *view; \ - \ - view = NAUTILUS_MOZILLA_CONTENT_VIEW (data); \ - \ - view->details->is_pending_##FUNCNAME = FALSE; \ - \ - if (!GTK_OBJECT_DESTROYED (view)) { \ - nautilus_view_##REALFUNCNAME (view->details->nautilus_view, view->details->pending_##ARGNAME); \ - g_free (view->details->pending_##ARGNAME); \ - view->details->pending_##ARGNAME = NULL; \ - } \ - gtk_object_unref (GTK_OBJECT (view)); \ - \ - return 0; \ - } - -DISPATCH_NOARG_TMPL (report_load_failed) - -DISPATCH_NOARG_TMPL (report_load_underway) - -DISPATCH_NOARG_TMPL (report_load_complete) - -DISPATCH_STRING_TMPL (set_title, set_title, title) - -DISPATCH_STRING_NO_DEBUG_TMPL (report_status, report_status, link_message) - -DISPATCH_STRING_TMPL (open_location, open_location_in_this_window, open_uri) - -static int /* GtkFunction */ -dispatch_report_location_change (gpointer data) -{ - NautilusMozillaContentView *view; - - view = NAUTILUS_MOZILLA_CONTENT_VIEW (data); - - view->details->is_pending_report_location_change = FALSE; - - if (!GTK_OBJECT_DESTROYED (view)) { - nautilus_view_report_location_change (view->details->nautilus_view, view->details->pending_report_uri, NULL, view->details->pending_report_uri); - DEBUG_MSG ((">>nautilus_view_report_location_change\n")); - - g_free (view->details->pending_report_uri); - view->details->pending_report_uri = NULL; - } - - gtk_object_unref (GTK_OBJECT (view)); - - return 0; -} - -static int /* GtkFunction */ -dispatch_report_load_progress (gpointer data) -{ - NautilusMozillaContentView *view; - - view = NAUTILUS_MOZILLA_CONTENT_VIEW (data); - - view->details->is_pending_report_load_progress = FALSE; - - if (!GTK_OBJECT_DESTROYED (view)) { - DEBUG_MSG ((">>nautilus_view_report_load_progress %f\n", - view->details->pending_load_progress)); - nautilus_view_report_load_progress (view->details->nautilus_view, view->details->pending_load_progress); - } - - gtk_object_unref (GTK_OBJECT (view)); - - return 0; -} - -/* - * These async_ functions delay CORBA calls by registering a gtk_timeout - * with the callbacks being the dispatch functions above. - * - * Note that a gtk reference is kept across the timeout callbacks - * to ensure the object is still valid - */ - -#define ASYNC_NOARG_WRAPPER_TMPL(FUNCNAME) \ - static void \ - async_##FUNCNAME (NautilusMozillaContentView *view) \ - { \ - DEBUG_MSG (("~" #FUNCNAME "\n")); \ - \ - if (!view->details->is_pending_##FUNCNAME) { \ - view->details->is_pending_##FUNCNAME = TRUE; \ - gtk_object_ref (GTK_OBJECT (view)); \ - gtk_timeout_add (0, dispatch_##FUNCNAME, view); \ - } \ - } - -#define ASYNC_STRING_WRAPPER_TMPL(FUNCNAME, ARGNAME) \ - static void \ - async_##FUNCNAME (NautilusMozillaContentView *view, const char *ARGNAME) \ - { \ - g_free (view->details->pending_##ARGNAME); \ - view->details->pending_##ARGNAME = g_strdup (ARGNAME); \ - \ - DEBUG_MSG (("~" #FUNCNAME " '%s'\n", view->details->pending_##ARGNAME)); \ - \ - if (!view->details->is_pending_##FUNCNAME) { \ - view->details->is_pending_##FUNCNAME = TRUE; \ - gtk_object_ref (GTK_OBJECT (view)); \ - gtk_timeout_add (0, dispatch_##FUNCNAME, view); \ - } \ - } - -#define ASYNC_STRING_WRAPPER_NO_DEBUG_TMPL(FUNCNAME, ARGNAME) \ - static void \ - async_##FUNCNAME (NautilusMozillaContentView *view, const char *ARGNAME) \ - { \ - g_free (view->details->pending_##ARGNAME); \ - view->details->pending_##ARGNAME = g_strdup (ARGNAME); \ - \ - if (!view->details->is_pending_##FUNCNAME) { \ - view->details->is_pending_##FUNCNAME = TRUE; \ - gtk_object_ref (GTK_OBJECT (view)); \ - gtk_timeout_add (0, dispatch_##FUNCNAME, view); \ - } \ - } - -ASYNC_NOARG_WRAPPER_TMPL (report_load_failed) - -ASYNC_NOARG_WRAPPER_TMPL (report_load_underway) - -ASYNC_NOARG_WRAPPER_TMPL (report_load_complete) - -ASYNC_STRING_WRAPPER_TMPL (set_title, title) - -ASYNC_STRING_WRAPPER_TMPL (report_location_change, report_uri) - -ASYNC_STRING_WRAPPER_NO_DEBUG_TMPL (report_status, link_message) - -ASYNC_STRING_WRAPPER_TMPL (open_location, open_uri) - -static void -async_report_load_progress (NautilusMozillaContentView *view, double load_progress) -{ - view->details->pending_load_progress = load_progress; - - if (!view->details->is_pending_report_load_progress) { - DEBUG_MSG (("~report_load_progress %f\n", - view->details->pending_load_progress)); - view->details->is_pending_report_load_progress = TRUE; - gtk_object_ref (GTK_OBJECT (view)); - gtk_timeout_add (0, dispatch_report_load_progress, view); - } -} diff --git a/components/services/nautilus-dependent-shared/icons/eazel-logo-right-side-logo.png b/components/services/nautilus-dependent-shared/icons/eazel-logo-right-side-logo.png Binary files differindex ff76d7d2f..5b14dce6e 100644 --- a/components/services/nautilus-dependent-shared/icons/eazel-logo-right-side-logo.png +++ b/components/services/nautilus-dependent-shared/icons/eazel-logo-right-side-logo.png diff --git a/configure.in b/configure.in index c4b8f5c2b..a786142a2 100644 --- a/configure.in +++ b/configure.in @@ -839,6 +839,8 @@ data/emblems/Makefile data/linksets/Makefile data/fonts/Makefile data/fonts/urw/Makefile +eazel-logos/Makefile +eazel-logos/throbber/Makefile cut-n-paste-code/Makefile cut-n-paste-code/widgets/Makefile cut-n-paste-code/widgets/e-paned/Makefile diff --git a/eazel-logos/Makefile.am b/eazel-logos/Makefile.am new file mode 100644 index 000000000..d4e849241 --- /dev/null +++ b/eazel-logos/Makefile.am @@ -0,0 +1,15 @@ +NULL= + +SUBDIRS = throbber + +icondir = $(datadir)/pixmaps/nautilus/eazel-logos + +icon_DATA =\ + About_Image.png \ + about_background.png \ + default.xml \ + druid_header.png \ + eazel-logo-right-side-logo.png \ + $(NULL) + +EXTRA_DIST = $(icon_DATA) diff --git a/eazel-logos/throbber/Makefile.am b/eazel-logos/throbber/Makefile.am new file mode 100644 index 000000000..3d5bd8c77 --- /dev/null +++ b/eazel-logos/throbber/Makefile.am @@ -0,0 +1,24 @@ +NULL= + +throbberdir = $(datadir)/pixmaps/nautilus/eazel-logos/throbber + +throbber_DATA = \ + 001.png \ + 002.png \ + 003.png \ + 004.png \ + 005.png \ + 006.png \ + 007.png \ + 008.png \ + 009.png \ + 010.png \ + 011.png \ + 012.png \ + 013.png \ + 014.png \ + 015.png \ + rest.png \ + $(NULL) + +EXTRA_DIST = $(throbber_DATA) diff --git a/icons/About_Image.png b/icons/About_Image.png Binary files differindex eb3a9ff9e..ff27f6791 100644 --- a/icons/About_Image.png +++ b/icons/About_Image.png diff --git a/icons/about_background.png b/icons/about_background.png Binary files differindex a96d69598..6929b4fbd 100644 --- a/icons/about_background.png +++ b/icons/about_background.png diff --git a/icons/default.xml b/icons/default.xml index f424f46ab..136126878 100644 --- a/icons/default.xml +++ b/icons/default.xml @@ -23,7 +23,7 @@ <thumbnails frame_offsets="3,3,6,6"/> - <throbber frame_count="15" url="http://www.eazel.com" delay="75"/> + <throbber frame_count="30" url="http://www.eazel.com" delay="75"/> <zoom_control number_v_offset="-6" number_h_offset="-2" digit_width="6"/> diff --git a/icons/druid_header.png b/icons/druid_header.png Binary files differindex e34a2f14a..b7fbe8221 100644 --- a/icons/druid_header.png +++ b/icons/druid_header.png diff --git a/icons/throbber/001.png b/icons/throbber/001.png Binary files differindex 187bcd7c4..ec2eacdf1 100644 --- a/icons/throbber/001.png +++ b/icons/throbber/001.png diff --git a/icons/throbber/002.png b/icons/throbber/002.png Binary files differindex 8acae28b4..0c77b8536 100644 --- a/icons/throbber/002.png +++ b/icons/throbber/002.png diff --git a/icons/throbber/003.png b/icons/throbber/003.png Binary files differindex 00342738e..c490ee8da 100644 --- a/icons/throbber/003.png +++ b/icons/throbber/003.png diff --git a/icons/throbber/004.png b/icons/throbber/004.png Binary files differindex 49a9271ba..3b5afada7 100644 --- a/icons/throbber/004.png +++ b/icons/throbber/004.png diff --git a/icons/throbber/005.png b/icons/throbber/005.png Binary files differindex a6c518661..f65486fa8 100644 --- a/icons/throbber/005.png +++ b/icons/throbber/005.png diff --git a/icons/throbber/006.png b/icons/throbber/006.png Binary files differindex b45bfcd76..d5124079b 100644 --- a/icons/throbber/006.png +++ b/icons/throbber/006.png diff --git a/icons/throbber/007.png b/icons/throbber/007.png Binary files differindex 58004a43a..8471e34ab 100644 --- a/icons/throbber/007.png +++ b/icons/throbber/007.png diff --git a/icons/throbber/008.png b/icons/throbber/008.png Binary files differindex 1702ced20..2197674db 100644 --- a/icons/throbber/008.png +++ b/icons/throbber/008.png diff --git a/icons/throbber/009.png b/icons/throbber/009.png Binary files differindex a2830eaad..94227746b 100644 --- a/icons/throbber/009.png +++ b/icons/throbber/009.png diff --git a/icons/throbber/010.png b/icons/throbber/010.png Binary files differindex 483d3c6ac..e3984b649 100644 --- a/icons/throbber/010.png +++ b/icons/throbber/010.png diff --git a/icons/throbber/011.png b/icons/throbber/011.png Binary files differindex 00fe8457e..83407f9e8 100644 --- a/icons/throbber/011.png +++ b/icons/throbber/011.png diff --git a/icons/throbber/012.png b/icons/throbber/012.png Binary files differindex 2daaa4680..3c6aeaa8f 100644 --- a/icons/throbber/012.png +++ b/icons/throbber/012.png diff --git a/icons/throbber/013.png b/icons/throbber/013.png Binary files differindex cf9745eb3..728214a57 100644 --- a/icons/throbber/013.png +++ b/icons/throbber/013.png diff --git a/icons/throbber/014.png b/icons/throbber/014.png Binary files differindex 54954fa52..83cf1b380 100644 --- a/icons/throbber/014.png +++ b/icons/throbber/014.png diff --git a/icons/throbber/015.png b/icons/throbber/015.png Binary files differindex e5aabdadc..59e333fcc 100644 --- a/icons/throbber/015.png +++ b/icons/throbber/015.png diff --git a/icons/throbber/016.png b/icons/throbber/016.png Binary files differnew file mode 100644 index 000000000..d5124079b --- /dev/null +++ b/icons/throbber/016.png diff --git a/icons/throbber/017.png b/icons/throbber/017.png Binary files differnew file mode 100644 index 000000000..8471e34ab --- /dev/null +++ b/icons/throbber/017.png diff --git a/icons/throbber/018.png b/icons/throbber/018.png Binary files differnew file mode 100644 index 000000000..2197674db --- /dev/null +++ b/icons/throbber/018.png diff --git a/icons/throbber/019.png b/icons/throbber/019.png Binary files differnew file mode 100644 index 000000000..94227746b --- /dev/null +++ b/icons/throbber/019.png diff --git a/icons/throbber/020.png b/icons/throbber/020.png Binary files differnew file mode 100644 index 000000000..e3984b649 --- /dev/null +++ b/icons/throbber/020.png diff --git a/icons/throbber/021.png b/icons/throbber/021.png Binary files differnew file mode 100644 index 000000000..83407f9e8 --- /dev/null +++ b/icons/throbber/021.png diff --git a/icons/throbber/022.png b/icons/throbber/022.png Binary files differnew file mode 100644 index 000000000..3c6aeaa8f --- /dev/null +++ b/icons/throbber/022.png diff --git a/icons/throbber/023.png b/icons/throbber/023.png Binary files differnew file mode 100644 index 000000000..728214a57 --- /dev/null +++ b/icons/throbber/023.png diff --git a/icons/throbber/024.png b/icons/throbber/024.png Binary files differnew file mode 100644 index 000000000..83cf1b380 --- /dev/null +++ b/icons/throbber/024.png diff --git a/icons/throbber/025.png b/icons/throbber/025.png Binary files differnew file mode 100644 index 000000000..59e333fcc --- /dev/null +++ b/icons/throbber/025.png diff --git a/icons/throbber/026.png b/icons/throbber/026.png Binary files differnew file mode 100644 index 000000000..7f8a0d0fc --- /dev/null +++ b/icons/throbber/026.png diff --git a/icons/throbber/027.png b/icons/throbber/027.png Binary files differnew file mode 100644 index 000000000..6db040eab --- /dev/null +++ b/icons/throbber/027.png diff --git a/icons/throbber/028.png b/icons/throbber/028.png Binary files differnew file mode 100644 index 000000000..62c412070 --- /dev/null +++ b/icons/throbber/028.png diff --git a/icons/throbber/029.png b/icons/throbber/029.png Binary files differnew file mode 100644 index 000000000..c732b9821 --- /dev/null +++ b/icons/throbber/029.png diff --git a/icons/throbber/030.png b/icons/throbber/030.png Binary files differnew file mode 100644 index 000000000..1bed97a6e --- /dev/null +++ b/icons/throbber/030.png diff --git a/icons/throbber/Makefile.am b/icons/throbber/Makefile.am index 218cd6aa1..5b9ad1a0e 100644 --- a/icons/throbber/Makefile.am +++ b/icons/throbber/Makefile.am @@ -2,23 +2,38 @@ NULL= throbberdir = $(datadir)/pixmaps/nautilus/throbber -throbber_DATA = \ - 001.png \ - 002.png \ - 003.png \ - 004.png \ - 005.png \ - 006.png \ - 007.png \ - 008.png \ - 009.png \ - 010.png \ - 011.png \ - 012.png \ - 013.png \ - 014.png \ - 015.png \ - rest.png \ +throbber_DATA = \ + 001.png \ + 002.png \ + 003.png \ + 004.png \ + 005.png \ + 006.png \ + 007.png \ + 008.png \ + 009.png \ + 010.png \ + 011.png \ + 012.png \ + 013.png \ + 014.png \ + 015.png \ + 016.png \ + 017.png \ + 018.png \ + 019.png \ + 020.png \ + 021.png \ + 022.png \ + 023.png \ + 024.png \ + 025.png \ + 026.png \ + 027.png \ + 028.png \ + 029.png \ + 030.png \ + rest.png \ $(NULL) - + EXTRA_DIST = $(throbber_DATA) diff --git a/icons/throbber/rest.png b/icons/throbber/rest.png Binary files differindex 785bf3f4a..70bf5c52d 100644 --- a/icons/throbber/rest.png +++ b/icons/throbber/rest.png diff --git a/libnautilus-extensions/nautilus-gtk-extensions.c b/libnautilus-extensions/nautilus-gtk-extensions.c index 2a53af788..940e587a8 100644 --- a/libnautilus-extensions/nautilus-gtk-extensions.c +++ b/libnautilus-extensions/nautilus-gtk-extensions.c @@ -1021,16 +1021,17 @@ nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER (GtkObject *object, } void -nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER (GtkObject *object, - GtkSignalFunc func, - gpointer func_data, - GtkArg *args) +nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER_POINTER (GtkObject *object, + GtkSignalFunc func, + gpointer func_data, + GtkArg *args) { - (* (void (*)(GtkObject *, gpointer, gpointer, gpointer, gpointer)) func) + (* (void (*)(GtkObject *, gpointer, gpointer, gpointer, gpointer, gpointer)) func) (object, GTK_VALUE_POINTER (args[0]), GTK_VALUE_POINTER (args[1]), GTK_VALUE_POINTER (args[2]), + GTK_VALUE_POINTER (args[3]), func_data); } diff --git a/libnautilus-extensions/nautilus-gtk-extensions.h b/libnautilus-extensions/nautilus-gtk-extensions.h index 5b148ca8e..a219dbb2f 100644 --- a/libnautilus-extensions/nautilus-gtk-extensions.h +++ b/libnautilus-extensions/nautilus-gtk-extensions.h @@ -175,20 +175,21 @@ GList *nautilus_get_window_list_ordered_front_to_back (void); /* marshals */ +#define nautilus_gtk_marshal_BOOL__POINTER_POINTER nautilus_gtk_marshal_INT__POINTER_POINTER +#define nautilus_gtk_marshal_INT__POINTER_STRING nautilus_gtk_marshal_INT__POINTER_POINTER #define nautilus_gtk_marshal_NONE__BOXED_BOXED gtk_marshal_NONE__POINTER_POINTER -#define nautilus_gtk_marshal_NONE__POINTER_STRING_STRING nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER +#define nautilus_gtk_marshal_NONE__POINTER_STRING_STRING gtk_marshal_NONE__POINTER_POINTER_POINTER #define nautilus_gtk_marshal_NONE__STRING_POINTER gtk_marshal_NONE__POINTER_POINTER #define nautilus_gtk_marshal_NONE__STRING_POINTER_STRING gtk_marshal_NONE__POINTER_POINTER_POINTER -#define nautilus_gtk_marshal_BOOL__POINTER_POINTER nautilus_gtk_marshal_INT__POINTER_POINTER -#define nautilus_gtk_marshal_INT__POINTER_STRING nautilus_gtk_marshal_INT__POINTER_POINTER -#define nautilus_gtk_marshal_POINTER__POINTER_STRING_POINTER nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER +#define nautilus_gtk_marshal_NONE__STRING_STRING_POINTER_STRING nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER_POINTER #define nautilus_gtk_marshal_POINTER__POINTER_INT_INT_STRING_POINTER nautilus_gtk_marshal_POINTER__POINTER_INT_INT_POINTER_POINTER +#define nautilus_gtk_marshal_POINTER__POINTER_STRING_POINTER nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER #define nautilus_gtk_marshal_STRING__NONE nautilus_gtk_marshal_POINTER__NONE #define nautilus_gtk_marshal_STRING__POINTER nautilus_gtk_marshal_POINTER__POINTER #define nautilus_gtk_marshal_STRING__POINTER_POINTER nautilus_gtk_marshal_POINTER__POINTER_POINTER -#define nautilus_gtk_marshal_STRING__POINTER_STRING nautilus_gtk_marshal_POINTER__POINTER_POINTER #define nautilus_gtk_marshal_STRING__POINTER_POINTER_POINTER nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER #define nautilus_gtk_marshal_STRING__POINTER_POINTER_STRING nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER +#define nautilus_gtk_marshal_STRING__POINTER_STRING nautilus_gtk_marshal_POINTER__POINTER_POINTER void nautilus_gtk_marshal_INT__NONE (GtkObject *object, GtkSignalFunc func, @@ -226,7 +227,7 @@ void nautilus_gtk_marshal_NONE__INT_POINTER_INT_INT_UINT GtkSignalFunc func, gpointer func_data, GtkArg *args); -void nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER (GtkObject *object, +void nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER_POINTER (GtkObject *object, GtkSignalFunc func, gpointer func_data, GtkArg *args); diff --git a/libnautilus-private/nautilus-gtk-extensions.c b/libnautilus-private/nautilus-gtk-extensions.c index 2a53af788..940e587a8 100644 --- a/libnautilus-private/nautilus-gtk-extensions.c +++ b/libnautilus-private/nautilus-gtk-extensions.c @@ -1021,16 +1021,17 @@ nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER (GtkObject *object, } void -nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER (GtkObject *object, - GtkSignalFunc func, - gpointer func_data, - GtkArg *args) +nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER_POINTER (GtkObject *object, + GtkSignalFunc func, + gpointer func_data, + GtkArg *args) { - (* (void (*)(GtkObject *, gpointer, gpointer, gpointer, gpointer)) func) + (* (void (*)(GtkObject *, gpointer, gpointer, gpointer, gpointer, gpointer)) func) (object, GTK_VALUE_POINTER (args[0]), GTK_VALUE_POINTER (args[1]), GTK_VALUE_POINTER (args[2]), + GTK_VALUE_POINTER (args[3]), func_data); } diff --git a/libnautilus-private/nautilus-gtk-extensions.h b/libnautilus-private/nautilus-gtk-extensions.h index 5b148ca8e..a219dbb2f 100644 --- a/libnautilus-private/nautilus-gtk-extensions.h +++ b/libnautilus-private/nautilus-gtk-extensions.h @@ -175,20 +175,21 @@ GList *nautilus_get_window_list_ordered_front_to_back (void); /* marshals */ +#define nautilus_gtk_marshal_BOOL__POINTER_POINTER nautilus_gtk_marshal_INT__POINTER_POINTER +#define nautilus_gtk_marshal_INT__POINTER_STRING nautilus_gtk_marshal_INT__POINTER_POINTER #define nautilus_gtk_marshal_NONE__BOXED_BOXED gtk_marshal_NONE__POINTER_POINTER -#define nautilus_gtk_marshal_NONE__POINTER_STRING_STRING nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER +#define nautilus_gtk_marshal_NONE__POINTER_STRING_STRING gtk_marshal_NONE__POINTER_POINTER_POINTER #define nautilus_gtk_marshal_NONE__STRING_POINTER gtk_marshal_NONE__POINTER_POINTER #define nautilus_gtk_marshal_NONE__STRING_POINTER_STRING gtk_marshal_NONE__POINTER_POINTER_POINTER -#define nautilus_gtk_marshal_BOOL__POINTER_POINTER nautilus_gtk_marshal_INT__POINTER_POINTER -#define nautilus_gtk_marshal_INT__POINTER_STRING nautilus_gtk_marshal_INT__POINTER_POINTER -#define nautilus_gtk_marshal_POINTER__POINTER_STRING_POINTER nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER +#define nautilus_gtk_marshal_NONE__STRING_STRING_POINTER_STRING nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER_POINTER #define nautilus_gtk_marshal_POINTER__POINTER_INT_INT_STRING_POINTER nautilus_gtk_marshal_POINTER__POINTER_INT_INT_POINTER_POINTER +#define nautilus_gtk_marshal_POINTER__POINTER_STRING_POINTER nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER #define nautilus_gtk_marshal_STRING__NONE nautilus_gtk_marshal_POINTER__NONE #define nautilus_gtk_marshal_STRING__POINTER nautilus_gtk_marshal_POINTER__POINTER #define nautilus_gtk_marshal_STRING__POINTER_POINTER nautilus_gtk_marshal_POINTER__POINTER_POINTER -#define nautilus_gtk_marshal_STRING__POINTER_STRING nautilus_gtk_marshal_POINTER__POINTER_POINTER #define nautilus_gtk_marshal_STRING__POINTER_POINTER_POINTER nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER #define nautilus_gtk_marshal_STRING__POINTER_POINTER_STRING nautilus_gtk_marshal_POINTER__POINTER_POINTER_POINTER +#define nautilus_gtk_marshal_STRING__POINTER_STRING nautilus_gtk_marshal_POINTER__POINTER_POINTER void nautilus_gtk_marshal_INT__NONE (GtkObject *object, GtkSignalFunc func, @@ -226,7 +227,7 @@ void nautilus_gtk_marshal_NONE__INT_POINTER_INT_INT_UINT GtkSignalFunc func, gpointer func_data, GtkArg *args); -void nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER (GtkObject *object, +void nautilus_gtk_marshal_NONE__POINTER_POINTER_POINTER_POINTER (GtkObject *object, GtkSignalFunc func, gpointer func_data, GtkArg *args); diff --git a/libnautilus/nautilus-view-component.idl b/libnautilus/nautilus-view-component.idl index ba8e515df..89173ab20 100644 --- a/libnautilus/nautilus-view-component.idl +++ b/libnautilus/nautilus-view-component.idl @@ -103,11 +103,17 @@ module Nautilus { * also it treats the load as "already underway" and * does not send a "load_location", * "selection_changed", or "title_changed" to the view - * that initiates this. + * that initiates this. The redirect version should be + * used when the location change does not deserve its + * own element in history. */ oneway void report_location_change (in URI location, in URIList selection, in string title); + oneway void report_redirect (in URI from_location, + in URI to_location, + in URIList selection, + in string title); /* Called by a view component to announce a change in the * selection. This selection change will be reported back diff --git a/libnautilus/nautilus-view.c b/libnautilus/nautilus-view.c index 7f661a6c9..55c9089ff 100644 --- a/libnautilus/nautilus-view.c +++ b/libnautilus/nautilus-view.c @@ -56,7 +56,8 @@ static guint signals[LAST_SIGNAL]; struct NautilusViewDetails { BonoboControl *control; - NautilusIdleQueue *idle_queue; + NautilusIdleQueue *incoming_queue; + NautilusIdleQueue *outgoing_queue; }; typedef struct { @@ -68,10 +69,11 @@ typedef void (* ViewFunction) (NautilusView *view, gpointer callback_data); typedef struct { - ViewFunction call; - gpointer callback_data; - GDestroyNotify destroy_callback_data; -} IncomingCall; + char *from_location; + char *location; + GList *selection; + char *title; +} LocationPlus; static void impl_Nautilus_View_load_location (PortableServer_Servant servant, CORBA_char *location, @@ -121,7 +123,20 @@ queue_incoming_call (PortableServer_Servant servant, view = ((impl_POA_Nautilus_View *) servant)->bonobo_object; - nautilus_idle_queue_add (view->details->idle_queue, + nautilus_idle_queue_add (view->details->incoming_queue, + (GFunc) call, + view, + callback_data, + destroy_callback_data); +} + +static void +queue_outgoing_call (NautilusView *view, + ViewFunction call, + gpointer callback_data, + GDestroyNotify destroy_callback_data) +{ + nautilus_idle_queue_add (view->details->outgoing_queue, (GFunc) call, view, callback_data, @@ -389,7 +404,8 @@ nautilus_view_initialize (NautilusView *view) view->details = g_new0 (NautilusViewDetails, 1); - view->details->idle_queue = nautilus_idle_queue_new (); + view->details->incoming_queue = nautilus_idle_queue_new (); + view->details->outgoing_queue = nautilus_idle_queue_new (); CORBA_exception_init (&ev); bonobo_object_construct @@ -442,7 +458,8 @@ nautilus_view_destroy (GtkObject *object) view = NAUTILUS_VIEW (object); - nautilus_idle_queue_destroy (view->details->idle_queue); + nautilus_idle_queue_destroy (view->details->incoming_queue); + nautilus_idle_queue_destroy (view->details->outgoing_queue); g_free (view->details); @@ -473,15 +490,47 @@ static void view_frame_call_end (Nautilus_ViewFrame frame, CORBA_Environment *ev) { if (frame != CORBA_OBJECT_NIL) { - bonobo_object_release_unref (frame, ev); + bonobo_object_release_unref (frame, NULL); } CORBA_exception_free (ev); } -void -nautilus_view_open_location_in_this_window (NautilusView *view, - const char *location) +/* Can't use the one in libnautilus-extensions. */ +static GList * +str_list_copy (GList *original) +{ + GList *copy, *node; + + copy = NULL; + for (node = original; node != NULL; node = node->next) { + copy = g_list_prepend (copy, g_strdup (node->data)); + } + return g_list_reverse (copy); +} + +static void +list_free_deep_callback (gpointer callback_data) +{ + gnome_vfs_list_deep_free (callback_data); +} + +static void +free_location_plus_callback (gpointer callback_data) +{ + LocationPlus *location_plus; + + location_plus = callback_data; + g_free (location_plus->from_location); + g_free (location_plus->location); + gnome_vfs_list_deep_free (location_plus->selection); + g_free (location_plus->title); + g_free (location_plus); +} + +static void +call_open_location_in_this_window (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; @@ -489,14 +538,14 @@ nautilus_view_open_location_in_this_window (NautilusView *view, view_frame = view_frame_call_begin (view, &ev); if (view_frame != CORBA_OBJECT_NIL) { Nautilus_ViewFrame_open_location_in_this_window - (view_frame, (CORBA_char *) location, &ev); + (view_frame, callback_data, &ev); } view_frame_call_end (view_frame, &ev); } -void -nautilus_view_open_location_prefer_existing_window (NautilusView *view, - const char *location) +static void +call_open_location_prefer_existing_window (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; @@ -504,53 +553,86 @@ nautilus_view_open_location_prefer_existing_window (NautilusView *view, view_frame = view_frame_call_begin (view, &ev); if (view_frame != CORBA_OBJECT_NIL) { Nautilus_ViewFrame_open_location_prefer_existing_window - (view_frame, (CORBA_char *) location, &ev); + (view_frame, callback_data, &ev); } view_frame_call_end (view_frame, &ev); } -void -nautilus_view_open_location_force_new_window (NautilusView *view, - const char *location, - GList *selection) +static void +call_open_location_force_new_window (NautilusView *view, + gpointer callback_data) { + LocationPlus *location_plus; CORBA_Environment ev; Nautilus_ViewFrame view_frame; Nautilus_URIList *uri_list; + + location_plus = callback_data; view_frame = view_frame_call_begin (view, &ev); if (view_frame != CORBA_OBJECT_NIL) { - uri_list = nautilus_uri_list_from_g_list (selection); + uri_list = nautilus_uri_list_from_g_list (location_plus->selection); Nautilus_ViewFrame_open_location_force_new_window - (view_frame, (CORBA_char *) location, uri_list, &ev); + (view_frame, location_plus->location, uri_list, &ev); CORBA_free (uri_list); } view_frame_call_end (view_frame, &ev); } -void -nautilus_view_report_location_change (NautilusView *view, - const char *location, - GList *selection, - const char *title) +static void +call_report_location_change (NautilusView *view, + gpointer callback_data) { + LocationPlus *location_plus; CORBA_Environment ev; Nautilus_ViewFrame view_frame; Nautilus_URIList *uri_list; + + location_plus = callback_data; view_frame = view_frame_call_begin (view, &ev); if (view_frame != CORBA_OBJECT_NIL) { - uri_list = nautilus_uri_list_from_g_list (selection); + uri_list = nautilus_uri_list_from_g_list (location_plus->selection); Nautilus_ViewFrame_report_location_change - (view_frame, (CORBA_char *) location, uri_list, (CORBA_char *) title, &ev); + (view_frame, + location_plus->location, + uri_list, + location_plus->title, + &ev); CORBA_free (uri_list); } view_frame_call_end (view_frame, &ev); } -void -nautilus_view_report_selection_change (NautilusView *view, - GList *selection) +static void +call_report_redirect (NautilusView *view, + gpointer callback_data) +{ + LocationPlus *location_plus; + CORBA_Environment ev; + Nautilus_ViewFrame view_frame; + Nautilus_URIList *uri_list; + + location_plus = callback_data; + + view_frame = view_frame_call_begin (view, &ev); + if (view_frame != CORBA_OBJECT_NIL) { + uri_list = nautilus_uri_list_from_g_list (location_plus->selection); + Nautilus_ViewFrame_report_redirect + (view_frame, + location_plus->from_location, + location_plus->location, + uri_list, + location_plus->title, + &ev); + CORBA_free (uri_list); + } + view_frame_call_end (view_frame, &ev); +} + +static void +call_report_selection_change (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; @@ -558,29 +640,30 @@ nautilus_view_report_selection_change (NautilusView *view, view_frame = view_frame_call_begin (view, &ev); if (view_frame != CORBA_OBJECT_NIL) { - uri_list = nautilus_uri_list_from_g_list (selection); + uri_list = nautilus_uri_list_from_g_list (callback_data); Nautilus_ViewFrame_report_selection_change (view_frame, uri_list, &ev); CORBA_free (uri_list); } view_frame_call_end (view_frame, &ev); } -void -nautilus_view_report_status (NautilusView *view, - const char *status) +static void +call_report_status (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; view_frame = view_frame_call_begin (view, &ev); if (view_frame != CORBA_OBJECT_NIL) { - Nautilus_ViewFrame_report_status (view_frame, status, &ev); + Nautilus_ViewFrame_report_status (view_frame, callback_data, &ev); } view_frame_call_end (view_frame, &ev); } -void -nautilus_view_report_load_underway (NautilusView *view) +static void +call_report_load_underway (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; @@ -592,22 +675,24 @@ nautilus_view_report_load_underway (NautilusView *view) view_frame_call_end (view_frame, &ev); } -void -nautilus_view_report_load_progress (NautilusView *view, - double fraction_done) +static void +call_report_load_progress (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; view_frame = view_frame_call_begin (view, &ev); if (view_frame != CORBA_OBJECT_NIL) { - Nautilus_ViewFrame_report_load_progress (view_frame, fraction_done, &ev); + Nautilus_ViewFrame_report_load_progress + (view_frame, * (double *) callback_data, &ev); } view_frame_call_end (view_frame, &ev); } -void -nautilus_view_report_load_complete (NautilusView *view) +static void +call_report_load_complete (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; @@ -619,8 +704,9 @@ nautilus_view_report_load_complete (NautilusView *view) view_frame_call_end (view_frame, &ev); } -void -nautilus_view_report_load_failed (NautilusView *view) +static void +call_report_load_failed (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; @@ -632,22 +718,23 @@ nautilus_view_report_load_failed (NautilusView *view) view_frame_call_end (view_frame, &ev); } -void -nautilus_view_set_title (NautilusView *view, - const char *title) +static void +call_set_title (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; view_frame = view_frame_call_begin (view, &ev); if (view_frame != CORBA_OBJECT_NIL) { - Nautilus_ViewFrame_set_title (view_frame, title, &ev); + Nautilus_ViewFrame_set_title (view_frame, callback_data, &ev); } view_frame_call_end (view_frame, &ev); } -void -nautilus_view_go_back (NautilusView *view) +static void +call_go_back (NautilusView *view, + gpointer callback_data) { CORBA_Environment ev; Nautilus_ViewFrame view_frame; @@ -659,6 +746,159 @@ nautilus_view_go_back (NautilusView *view) view_frame_call_end (view_frame, &ev); } +void +nautilus_view_open_location_in_this_window (NautilusView *view, + const char *location) +{ + queue_outgoing_call (view, + call_open_location_in_this_window, + g_strdup (location), + g_free); +} + +void +nautilus_view_open_location_prefer_existing_window (NautilusView *view, + const char *location) +{ + queue_outgoing_call (view, + call_open_location_prefer_existing_window, + g_strdup (location), + g_free); +} + +void +nautilus_view_open_location_force_new_window (NautilusView *view, + const char *location, + GList *selection) +{ + LocationPlus *location_plus; + + location_plus = g_new0 (LocationPlus, 1); + location_plus->location = g_strdup (location); + location_plus->selection = str_list_copy (selection); + + queue_outgoing_call (view, + call_open_location_force_new_window, + location_plus, + free_location_plus_callback); +} + +void +nautilus_view_report_location_change (NautilusView *view, + const char *location, + GList *selection, + const char *title) +{ + LocationPlus *location_plus; + + location_plus = g_new0 (LocationPlus, 1); + location_plus->location = g_strdup (location); + location_plus->selection = str_list_copy (selection); + location_plus->title = g_strdup (title); + + queue_outgoing_call (view, + call_report_location_change, + location_plus, + free_location_plus_callback); +} + +void +nautilus_view_report_redirect (NautilusView *view, + const char *from_location, + const char *to_location, + GList *selection, + const char *title) +{ + LocationPlus *location_plus; + + location_plus = g_new0 (LocationPlus, 1); + location_plus->from_location = g_strdup (from_location); + location_plus->location = g_strdup (to_location); + location_plus->selection = str_list_copy (selection); + location_plus->title = g_strdup (title); + + queue_outgoing_call (view, + call_report_redirect, + location_plus, + free_location_plus_callback); +} + +void +nautilus_view_report_selection_change (NautilusView *view, + GList *selection) +{ + queue_outgoing_call (view, + call_report_selection_change, + str_list_copy (selection), + list_free_deep_callback); +} + +void +nautilus_view_report_status (NautilusView *view, + const char *status) +{ + queue_outgoing_call (view, + call_report_status, + g_strdup (status), + g_free); +} + +void +nautilus_view_report_load_underway (NautilusView *view) +{ + queue_outgoing_call (view, + call_report_load_underway, + NULL, + NULL); +} + +void +nautilus_view_report_load_progress (NautilusView *view, + double fraction_done) +{ + queue_outgoing_call (view, + call_report_load_progress, + g_memdup (&fraction_done, sizeof (double)), + g_free); +} + +void +nautilus_view_report_load_complete (NautilusView *view) +{ + queue_outgoing_call (view, + call_report_load_complete, + NULL, + NULL); +} + +void +nautilus_view_report_load_failed (NautilusView *view) +{ + queue_outgoing_call (view, + call_report_load_failed, + NULL, + NULL); +} + +void +nautilus_view_set_title (NautilusView *view, + const char *title) +{ + queue_outgoing_call (view, + call_set_title, + g_strdup (title), + g_free); +} + +void +nautilus_view_go_back (NautilusView *view) +{ + queue_outgoing_call (view, + call_go_back, + NULL, + NULL); +} + BonoboControl * nautilus_view_get_bonobo_control (NautilusView *view) { diff --git a/libnautilus/nautilus-view.h b/libnautilus/nautilus-view.h index adf0c0b81..05ce52fc5 100644 --- a/libnautilus/nautilus-view.h +++ b/libnautilus/nautilus-view.h @@ -78,6 +78,11 @@ void nautilus_view_report_location_change (NautilusV const char *location_uri, GList *selection, /* list of URI char *s */ const char *title); +void nautilus_view_report_redirect (NautilusView *view, + const char *from_location_uri, + const char *to_location_uri, + GList *selection, /* list of URI char *s */ + const char *title); void nautilus_view_report_selection_change (NautilusView *view, GList *selection); /* list of URI char *s */ void nautilus_view_report_status (NautilusView *view, diff --git a/nautilus.spec.in b/nautilus.spec.in index 8a15e3b4a..d6ef0cd66 100644 --- a/nautilus.spec.in +++ b/nautilus.spec.in @@ -234,6 +234,9 @@ scrollkeeper-update %{prefix}/share/pixmaps/nautilus/crux_eggplant/*.xml %{prefix}/share/pixmaps/nautilus/crux_eggplant/backgrounds/*.png %{prefix}/share/pixmaps/nautilus/crux_eggplant/sidebar_tab_pieces/*.png +%{prefix}/share/pixmaps/nautilus/eazel-logos/*.png +%{prefix}/share/pixmaps/nautilus/eazel-logos/*.xml +%{prefix}/share/pixmaps/nautilus/eazel-logos/throbber/*.png %{prefix}/share/pixmaps/nautilus/gnome/*.png %{prefix}/share/pixmaps/nautilus/gnome/*.xml %{prefix}/share/pixmaps/nautilus/gnome/throbber/*.png diff --git a/src/nautilus-view-frame-corba.c b/src/nautilus-view-frame-corba.c index 8c0020ec9..d4b1208d4 100644 --- a/src/nautilus-view-frame-corba.c +++ b/src/nautilus-view-frame-corba.c @@ -39,6 +39,7 @@ #include <libnautilus-extensions/nautilus-gtk-extensions.h> typedef struct { + char *from_location; char *location; GList *selection; char *title; @@ -59,6 +60,12 @@ static void impl_Nautilus_ViewFrame_report_location_change (Portab const Nautilus_URIList *selection, const CORBA_char *title, CORBA_Environment *ev); +static void impl_Nautilus_ViewFrame_report_redirect (PortableServer_Servant servant, + Nautilus_URI from_location, + Nautilus_URI to_location, + const Nautilus_URIList *selection, + const CORBA_char *title, + CORBA_Environment *ev); static void impl_Nautilus_ViewFrame_report_selection_change (PortableServer_Servant servant, const Nautilus_URIList *selection, CORBA_Environment *ev); @@ -87,6 +94,7 @@ POA_Nautilus_ViewFrame__epv impl_Nautilus_ViewFrame_epv = &impl_Nautilus_ViewFrame_open_location_prefer_existing_window, &impl_Nautilus_ViewFrame_open_location_force_new_window, &impl_Nautilus_ViewFrame_report_location_change, + &impl_Nautilus_ViewFrame_report_redirect, &impl_Nautilus_ViewFrame_report_selection_change, &impl_Nautilus_ViewFrame_report_status, &impl_Nautilus_ViewFrame_report_load_underway, @@ -161,6 +169,7 @@ free_location_plus_callback (gpointer callback_data) LocationPlus *location_plus; location_plus = callback_data; + g_free (location_plus->from_location); g_free (location_plus->location); nautilus_g_list_free_deep (location_plus->selection); g_free (location_plus->title); @@ -209,6 +218,21 @@ report_location_change (NautilusViewFrame *view, } static void +report_redirect (NautilusViewFrame *view, + gpointer callback_data) +{ + LocationPlus *location_plus; + + location_plus = callback_data; + nautilus_view_frame_report_redirect + (view, + location_plus->from_location, + location_plus->location, + location_plus->selection, + location_plus->title); +} + +static void report_selection_change (NautilusViewFrame *view, gpointer callback_data) { @@ -329,6 +353,29 @@ impl_Nautilus_ViewFrame_report_location_change (PortableServer_Servant servant, } static void +impl_Nautilus_ViewFrame_report_redirect (PortableServer_Servant servant, + Nautilus_URI from_location, + Nautilus_URI to_location, + const Nautilus_URIList *selection, + const CORBA_char *title, + CORBA_Environment *ev) +{ + LocationPlus *location_plus; + + location_plus = g_new0 (LocationPlus, 1); + location_plus->from_location = g_strdup (from_location); + location_plus->location = g_strdup (to_location); + location_plus->selection = nautilus_g_list_from_uri_list (selection); + location_plus->title = g_strdup (title); + + nautilus_view_frame_queue_incoming_call + (servant, + report_redirect, + location_plus, + free_location_plus_callback); +} + +static void impl_Nautilus_ViewFrame_report_selection_change (PortableServer_Servant servant, const Nautilus_URIList *selection, CORBA_Environment *ev) diff --git a/src/nautilus-view-frame-private.h b/src/nautilus-view-frame-private.h index b51e34824..eebfe88a3 100644 --- a/src/nautilus-view-frame-private.h +++ b/src/nautilus-view-frame-private.h @@ -64,6 +64,11 @@ void nautilus_view_frame_report_location_change (Nautilus const char *location, GList *selection, const char *title); +void nautilus_view_frame_report_redirect (NautilusViewFrame *view, + const char *from_location, + const char *to_location, + GList *selection, + const char *title); void nautilus_view_frame_report_selection_change (NautilusViewFrame *view, GList *selection); void nautilus_view_frame_report_status (NautilusViewFrame *view, diff --git a/src/nautilus-view-frame.c b/src/nautilus-view-frame.c index 129736083..4122ce48e 100644 --- a/src/nautilus-view-frame.c +++ b/src/nautilus-view-frame.c @@ -66,6 +66,7 @@ enum { OPEN_LOCATION_IN_THIS_WINDOW, OPEN_LOCATION_PREFER_EXISTING_WINDOW, REPORT_LOCATION_CHANGE, + REPORT_REDIRECT, TITLE_CHANGED, VIEW_LOADED, ZOOM_LEVEL_CHANGED, @@ -253,6 +254,14 @@ nautilus_view_frame_initialize_class (NautilusViewFrameClass *klass) report_location_change), nautilus_gtk_marshal_NONE__STRING_POINTER_STRING, GTK_TYPE_NONE, 3, GTK_TYPE_STRING, GTK_TYPE_POINTER, GTK_TYPE_STRING); + signals[REPORT_REDIRECT] = gtk_signal_new + ("report_redirect", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (NautilusViewFrameClass, + report_redirect), + nautilus_gtk_marshal_NONE__STRING_STRING_POINTER_STRING, + GTK_TYPE_NONE, 4, GTK_TYPE_STRING, GTK_TYPE_STRING, GTK_TYPE_POINTER, GTK_TYPE_STRING); signals[TITLE_CHANGED] = gtk_signal_new ("title_changed", GTK_RUN_LAST, @@ -1147,6 +1156,28 @@ nautilus_view_frame_report_location_change (NautilusViewFrame *view, } void +nautilus_view_frame_report_redirect (NautilusViewFrame *view, + const char *from_location, + const char *to_location, + GList *selection, + const char *title) +{ + g_return_if_fail (NAUTILUS_IS_VIEW_FRAME (view)); + + if (view->details->state == VIEW_FRAME_FAILED) { + return; + } + + g_free (view->details->title); + view->details->title = g_strdup (title); + + view_frame_wait_is_over (view); + gtk_signal_emit (GTK_OBJECT (view), + signals[REPORT_REDIRECT], + from_location, to_location, selection, title); +} + +void nautilus_view_frame_report_selection_change (NautilusViewFrame *view, GList *selection) { diff --git a/src/nautilus-view-frame.h b/src/nautilus-view-frame.h index a4670a8c3..45ef8328f 100644 --- a/src/nautilus-view-frame.h +++ b/src/nautilus-view-frame.h @@ -77,6 +77,11 @@ typedef struct { const char *location, GList *selection, /* list of char * */ const char *title); + void (* report_redirect) (NautilusViewFrame *view, + const char *from_location, + const char *to_location, + GList *selection, /* list of char * */ + const char *title); void (* change_selection) (NautilusViewFrame *view, GList *selection); /* list of char * */ void (* change_status) (NautilusViewFrame *view, diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c index bc56896ab..06928d696 100644 --- a/src/nautilus-window-manage-views.c +++ b/src/nautilus-window-manage-views.c @@ -1808,7 +1808,7 @@ report_location_change_callback (NautilusViewFrame *view, g_assert (NAUTILUS_IS_WINDOW (window)); if (view != window->content_view) { - /* Do we need to do anything in this case. */ + /* Do we need to do anything in this case? */ return; } @@ -1819,13 +1819,47 @@ report_location_change_callback (NautilusViewFrame *view, selection, view); - /* Setting the change type to reload here is a hack. */ window->details->location_change_type = NAUTILUS_LOCATION_CHANGE_STANDARD; window->details->pending_location = g_strdup (location); update_for_new_location (window); } static void +report_redirect_callback (NautilusViewFrame *view, + const char *from_location, + const char *to_location, + GList *selection, + const char *title, + NautilusWindow *window) +{ + g_assert (NAUTILUS_IS_WINDOW (window)); + + if (view != window->content_view) { + /* Do we need to do anything in this case? */ + return; + } + + /* FIXME bugzilla.eazel.com 6950: Ignore redirect if we aren't + * at "from_location". + */ + + end_location_change (window); + + load_new_location_in_all_views (window, + to_location, + selection, + view); + + window->details->location_change_type = NAUTILUS_LOCATION_CHANGE_STANDARD; + window->details->pending_location = g_strdup (to_location); + update_for_new_location (window); + + /* FIXME bugzilla.eazel.com 6950: Make the history element for + * this location overwrite the old one. + */ +} + +static void title_changed_callback (NautilusViewFrame *view, NautilusWindow *window) { @@ -1870,6 +1904,7 @@ view_loaded_callback (NautilusViewFrame *view, macro (open_location_in_this_window) \ macro (open_location_prefer_existing_window) \ macro (report_location_change) \ + macro (report_redirect) \ macro (title_changed) \ macro (view_loaded) \ macro (zoom_level_changed) \ |