summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog127
-rw-r--r--Makefile.am1
-rw-r--r--THANKS10
-rw-r--r--components/mozilla/nautilus-mozilla-content-view.c300
-rw-r--r--components/services/nautilus-dependent-shared/icons/eazel-logo-right-side-logo.pngbin8676 -> 885 bytes
-rw-r--r--configure.in2
-rw-r--r--eazel-logos/Makefile.am15
-rw-r--r--eazel-logos/throbber/Makefile.am24
-rw-r--r--icons/About_Image.pngbin63131 -> 57853 bytes
-rw-r--r--icons/about_background.pngbin71703 -> 53172 bytes
-rw-r--r--icons/default.xml2
-rw-r--r--icons/druid_header.pngbin18838 -> 15585 bytes
-rw-r--r--icons/throbber/001.pngbin5765 -> 2220 bytes
-rw-r--r--icons/throbber/002.pngbin5755 -> 2234 bytes
-rw-r--r--icons/throbber/003.pngbin5711 -> 2220 bytes
-rw-r--r--icons/throbber/004.pngbin5614 -> 2339 bytes
-rw-r--r--icons/throbber/005.pngbin5595 -> 2505 bytes
-rw-r--r--icons/throbber/006.pngbin5682 -> 2230 bytes
-rw-r--r--icons/throbber/007.pngbin5660 -> 2241 bytes
-rw-r--r--icons/throbber/008.pngbin5608 -> 2291 bytes
-rw-r--r--icons/throbber/009.pngbin5479 -> 2235 bytes
-rw-r--r--icons/throbber/010.pngbin5351 -> 2306 bytes
-rw-r--r--icons/throbber/011.pngbin5379 -> 2250 bytes
-rw-r--r--icons/throbber/012.pngbin5408 -> 2266 bytes
-rw-r--r--icons/throbber/013.pngbin5491 -> 2313 bytes
-rw-r--r--icons/throbber/014.pngbin5691 -> 2226 bytes
-rw-r--r--icons/throbber/015.pngbin5696 -> 2326 bytes
-rw-r--r--icons/throbber/016.pngbin0 -> 2230 bytes
-rw-r--r--icons/throbber/017.pngbin0 -> 2241 bytes
-rw-r--r--icons/throbber/018.pngbin0 -> 2291 bytes
-rw-r--r--icons/throbber/019.pngbin0 -> 2235 bytes
-rw-r--r--icons/throbber/020.pngbin0 -> 2306 bytes
-rw-r--r--icons/throbber/021.pngbin0 -> 2250 bytes
-rw-r--r--icons/throbber/022.pngbin0 -> 2266 bytes
-rw-r--r--icons/throbber/023.pngbin0 -> 2313 bytes
-rw-r--r--icons/throbber/024.pngbin0 -> 2226 bytes
-rw-r--r--icons/throbber/025.pngbin0 -> 2326 bytes
-rw-r--r--icons/throbber/026.pngbin0 -> 2221 bytes
-rw-r--r--icons/throbber/027.pngbin0 -> 2222 bytes
-rw-r--r--icons/throbber/028.pngbin0 -> 2464 bytes
-rw-r--r--icons/throbber/029.pngbin0 -> 2349 bytes
-rw-r--r--icons/throbber/030.pngbin0 -> 2220 bytes
-rw-r--r--icons/throbber/Makefile.am51
-rw-r--r--icons/throbber/rest.pngbin3858 -> 2234 bytes
-rw-r--r--libnautilus-extensions/nautilus-gtk-extensions.c11
-rw-r--r--libnautilus-extensions/nautilus-gtk-extensions.h13
-rw-r--r--libnautilus-private/nautilus-gtk-extensions.c11
-rw-r--r--libnautilus-private/nautilus-gtk-extensions.h13
-rw-r--r--libnautilus/nautilus-view-component.idl8
-rw-r--r--libnautilus/nautilus-view.c348
-rw-r--r--libnautilus/nautilus-view.h5
-rw-r--r--nautilus.spec.in3
-rw-r--r--src/nautilus-view-frame-corba.c47
-rw-r--r--src/nautilus-view-frame-private.h5
-rw-r--r--src/nautilus-view-frame.c31
-rw-r--r--src/nautilus-view-frame.h5
-rw-r--r--src/nautilus-window-manage-views.c39
57 files changed, 689 insertions, 382 deletions
diff --git a/ChangeLog b/ChangeLog
index 903da3b34..e614a4c08 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 \
diff --git a/THANKS b/THANKS
index 41a3757a6..934b2ea1c 100644
--- a/THANKS
+++ b/THANKS
@@ -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
index 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
Binary files differ
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
index eb3a9ff9e..ff27f6791 100644
--- a/icons/About_Image.png
+++ b/icons/About_Image.png
Binary files differ
diff --git a/icons/about_background.png b/icons/about_background.png
index a96d69598..6929b4fbd 100644
--- a/icons/about_background.png
+++ b/icons/about_background.png
Binary files differ
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
index e34a2f14a..b7fbe8221 100644
--- a/icons/druid_header.png
+++ b/icons/druid_header.png
Binary files differ
diff --git a/icons/throbber/001.png b/icons/throbber/001.png
index 187bcd7c4..ec2eacdf1 100644
--- a/icons/throbber/001.png
+++ b/icons/throbber/001.png
Binary files differ
diff --git a/icons/throbber/002.png b/icons/throbber/002.png
index 8acae28b4..0c77b8536 100644
--- a/icons/throbber/002.png
+++ b/icons/throbber/002.png
Binary files differ
diff --git a/icons/throbber/003.png b/icons/throbber/003.png
index 00342738e..c490ee8da 100644
--- a/icons/throbber/003.png
+++ b/icons/throbber/003.png
Binary files differ
diff --git a/icons/throbber/004.png b/icons/throbber/004.png
index 49a9271ba..3b5afada7 100644
--- a/icons/throbber/004.png
+++ b/icons/throbber/004.png
Binary files differ
diff --git a/icons/throbber/005.png b/icons/throbber/005.png
index a6c518661..f65486fa8 100644
--- a/icons/throbber/005.png
+++ b/icons/throbber/005.png
Binary files differ
diff --git a/icons/throbber/006.png b/icons/throbber/006.png
index b45bfcd76..d5124079b 100644
--- a/icons/throbber/006.png
+++ b/icons/throbber/006.png
Binary files differ
diff --git a/icons/throbber/007.png b/icons/throbber/007.png
index 58004a43a..8471e34ab 100644
--- a/icons/throbber/007.png
+++ b/icons/throbber/007.png
Binary files differ
diff --git a/icons/throbber/008.png b/icons/throbber/008.png
index 1702ced20..2197674db 100644
--- a/icons/throbber/008.png
+++ b/icons/throbber/008.png
Binary files differ
diff --git a/icons/throbber/009.png b/icons/throbber/009.png
index a2830eaad..94227746b 100644
--- a/icons/throbber/009.png
+++ b/icons/throbber/009.png
Binary files differ
diff --git a/icons/throbber/010.png b/icons/throbber/010.png
index 483d3c6ac..e3984b649 100644
--- a/icons/throbber/010.png
+++ b/icons/throbber/010.png
Binary files differ
diff --git a/icons/throbber/011.png b/icons/throbber/011.png
index 00fe8457e..83407f9e8 100644
--- a/icons/throbber/011.png
+++ b/icons/throbber/011.png
Binary files differ
diff --git a/icons/throbber/012.png b/icons/throbber/012.png
index 2daaa4680..3c6aeaa8f 100644
--- a/icons/throbber/012.png
+++ b/icons/throbber/012.png
Binary files differ
diff --git a/icons/throbber/013.png b/icons/throbber/013.png
index cf9745eb3..728214a57 100644
--- a/icons/throbber/013.png
+++ b/icons/throbber/013.png
Binary files differ
diff --git a/icons/throbber/014.png b/icons/throbber/014.png
index 54954fa52..83cf1b380 100644
--- a/icons/throbber/014.png
+++ b/icons/throbber/014.png
Binary files differ
diff --git a/icons/throbber/015.png b/icons/throbber/015.png
index e5aabdadc..59e333fcc 100644
--- a/icons/throbber/015.png
+++ b/icons/throbber/015.png
Binary files differ
diff --git a/icons/throbber/016.png b/icons/throbber/016.png
new file mode 100644
index 000000000..d5124079b
--- /dev/null
+++ b/icons/throbber/016.png
Binary files differ
diff --git a/icons/throbber/017.png b/icons/throbber/017.png
new file mode 100644
index 000000000..8471e34ab
--- /dev/null
+++ b/icons/throbber/017.png
Binary files differ
diff --git a/icons/throbber/018.png b/icons/throbber/018.png
new file mode 100644
index 000000000..2197674db
--- /dev/null
+++ b/icons/throbber/018.png
Binary files differ
diff --git a/icons/throbber/019.png b/icons/throbber/019.png
new file mode 100644
index 000000000..94227746b
--- /dev/null
+++ b/icons/throbber/019.png
Binary files differ
diff --git a/icons/throbber/020.png b/icons/throbber/020.png
new file mode 100644
index 000000000..e3984b649
--- /dev/null
+++ b/icons/throbber/020.png
Binary files differ
diff --git a/icons/throbber/021.png b/icons/throbber/021.png
new file mode 100644
index 000000000..83407f9e8
--- /dev/null
+++ b/icons/throbber/021.png
Binary files differ
diff --git a/icons/throbber/022.png b/icons/throbber/022.png
new file mode 100644
index 000000000..3c6aeaa8f
--- /dev/null
+++ b/icons/throbber/022.png
Binary files differ
diff --git a/icons/throbber/023.png b/icons/throbber/023.png
new file mode 100644
index 000000000..728214a57
--- /dev/null
+++ b/icons/throbber/023.png
Binary files differ
diff --git a/icons/throbber/024.png b/icons/throbber/024.png
new file mode 100644
index 000000000..83cf1b380
--- /dev/null
+++ b/icons/throbber/024.png
Binary files differ
diff --git a/icons/throbber/025.png b/icons/throbber/025.png
new file mode 100644
index 000000000..59e333fcc
--- /dev/null
+++ b/icons/throbber/025.png
Binary files differ
diff --git a/icons/throbber/026.png b/icons/throbber/026.png
new file mode 100644
index 000000000..7f8a0d0fc
--- /dev/null
+++ b/icons/throbber/026.png
Binary files differ
diff --git a/icons/throbber/027.png b/icons/throbber/027.png
new file mode 100644
index 000000000..6db040eab
--- /dev/null
+++ b/icons/throbber/027.png
Binary files differ
diff --git a/icons/throbber/028.png b/icons/throbber/028.png
new file mode 100644
index 000000000..62c412070
--- /dev/null
+++ b/icons/throbber/028.png
Binary files differ
diff --git a/icons/throbber/029.png b/icons/throbber/029.png
new file mode 100644
index 000000000..c732b9821
--- /dev/null
+++ b/icons/throbber/029.png
Binary files differ
diff --git a/icons/throbber/030.png b/icons/throbber/030.png
new file mode 100644
index 000000000..1bed97a6e
--- /dev/null
+++ b/icons/throbber/030.png
Binary files differ
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
index 785bf3f4a..70bf5c52d 100644
--- a/icons/throbber/rest.png
+++ b/icons/throbber/rest.png
Binary files differ
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) \