summaryrefslogtreecommitdiff
path: root/src/nautilus-object-window.c
diff options
context:
space:
mode:
authorMaciej Stachowiak <mstachow@src.gnome.org>1999-12-17 01:03:09 +0000
committerMaciej Stachowiak <mstachow@src.gnome.org>1999-12-17 01:03:09 +0000
commit7048ea0af4039b73f73cb86b7b8e7565369edd1e (patch)
tree797ac776782937bcaef5c766725e9a5ce9fa2f80 /src/nautilus-object-window.c
parentb7dd3b28a6d0cabe0ed7ba80e0a278496d20f0a0 (diff)
downloadnautilus-7048ea0af4039b73f73cb86b7b8e7565369edd1e.tar.gz
Enabled multiple main windows and new window menu entry. In the
process replaced url with uri where appropriate and added nautilus_window_get_requested_uri accessor.
Diffstat (limited to 'src/nautilus-object-window.c')
-rw-r--r--src/nautilus-object-window.c58
1 files changed, 43 insertions, 15 deletions
diff --git a/src/nautilus-object-window.c b/src/nautilus-object-window.c
index 9774adfa1..3e6ab5656 100644
--- a/src/nautilus-object-window.c
+++ b/src/nautilus-object-window.c
@@ -30,6 +30,8 @@
#include "explorer-location-bar.h"
#include "ntl-window-private.h"
+static int window_count = 0;
+
/* Stuff for handling the CORBA interface */
typedef struct {
POA_Nautilus_ViewWindow servant;
@@ -52,6 +54,7 @@ static POA_Nautilus_ViewWindow__vepv impl_Nautilus_ViewWindow_vepv =
&impl_Nautilus_ViewWindow_epv
};
+
static void
impl_Nautilus_ViewWindow__destroy(GnomeObject *obj, impl_POA_Nautilus_ViewWindow *servant)
{
@@ -67,6 +70,7 @@ impl_Nautilus_ViewWindow__destroy(GnomeObject *obj, impl_POA_Nautilus_ViewWindow
POA_Nautilus_ViewWindow__fini((PortableServer_Servant) servant, &ev);
g_free(servant);
+
CORBA_exception_free(&ev);
}
@@ -103,8 +107,8 @@ static void nautilus_window_set_arg (GtkObject *object,
static void nautilus_window_get_arg (GtkObject *object,
GtkArg *arg,
guint arg_id);
-static void nautilus_window_goto_url_cb (GtkWidget *widget,
- const char *url,
+static void nautilus_window_goto_uri_cb (GtkWidget *widget,
+ const char *uri,
GtkWidget *window);
#undef CONTENTS_AS_HBOX
@@ -128,8 +132,17 @@ static void
file_menu_new_window_cb (GtkWidget *widget,
gpointer data)
{
- // FIXME: create & open a new window, with a URI either of
- // Home or the current URI
+ GtkWidget *current_mainwin;
+ GtkWidget *new_mainwin;
+
+ current_mainwin = (GtkWidget *)(data);
+
+ new_mainwin = gtk_widget_new(nautilus_window_get_type(), "app_id", "nautilus", NULL);
+
+ nautilus_window_goto_uri(NAUTILUS_WINDOW(new_mainwin),
+ nautilus_window_get_requested_uri(NAUTILUS_WINDOW(current_mainwin)));
+
+ gtk_widget_show(new_mainwin);
}
static void
@@ -330,12 +343,12 @@ nautilus_window_set_status(NautilusWindow *window, const char *txt)
}
void
-nautilus_window_goto_url(NautilusWindow *window, const char *url)
+nautilus_window_goto_uri(NautilusWindow *window, const char *uri)
{
Nautilus_NavigationRequestInfo navinfo;
memset(&navinfo, 0, sizeof(navinfo));
- navinfo.requested_uri = (char *)url;
+ navinfo.requested_uri = (char *)uri;
navinfo.new_window_default = navinfo.new_window_suggested = Nautilus_V_FALSE;
navinfo.new_window_enforced = Nautilus_V_UNKNOWN;
@@ -343,13 +356,20 @@ nautilus_window_goto_url(NautilusWindow *window, const char *url)
}
static void
-nautilus_window_goto_url_cb (GtkWidget *widget,
- const char *url,
+nautilus_window_goto_uri_cb (GtkWidget *widget,
+ const char *uri,
GtkWidget *window)
{
- nautilus_window_goto_url(NAUTILUS_WINDOW(window), url);
+ nautilus_window_goto_uri(NAUTILUS_WINDOW(window), uri);
}
+const char *
+nautilus_window_get_requested_uri (NautilusWindow *window)
+{
+ return window->ni->requested_uri;
+}
+
+
static void
gtk_option_menu_do_resize(GtkWidget *widget, GtkWidget *child, GtkWidget *optmenu)
{
@@ -365,6 +385,8 @@ nautilus_window_constructed(NautilusWindow *window)
GnomeApp *app;
GtkWidget *location_bar_box, *statusbar;
+ g_message("XXX Constructed.\n");
+
app = GNOME_APP(window);
// set up menu bar
@@ -374,7 +396,7 @@ nautilus_window_constructed(NautilusWindow *window)
// FIXME: these all need to be implemented. I'm using hardwired numbers
// rather than enum symbols here just 'cuz the enums aren't needed (I think)
// once we've implemented things. If it turns out they are, we'll define 'em.
- gtk_widget_set_sensitive(file_menu_info[0].widget, FALSE); // New Window
+ // gtk_widget_set_sensitive(file_menu_info[0].widget, FALSE); // New Window
gtk_widget_set_sensitive(edit_menu_info[0].widget, FALSE); // Undo
gtk_widget_set_sensitive(edit_menu_info[2].widget, FALSE); // Cut
@@ -404,11 +426,11 @@ nautilus_window_constructed(NautilusWindow *window)
location_bar_box = gtk_hbox_new(FALSE, GNOME_PAD);
gtk_container_set_border_width(GTK_CONTAINER(location_bar_box), GNOME_PAD_SMALL);
- window->ent_url = explorer_location_bar_new();
- gtk_signal_connect(GTK_OBJECT(window->ent_url), "location_changed",
- nautilus_window_goto_url_cb, window);
- gtk_box_pack_start(GTK_BOX(location_bar_box), window->ent_url, TRUE, TRUE, GNOME_PAD);
- gnome_app_add_docked(app, location_bar_box, "url-entry",
+ window->ent_uri = explorer_location_bar_new();
+ gtk_signal_connect(GTK_OBJECT(window->ent_uri), "location_changed",
+ nautilus_window_goto_uri_cb, window);
+ gtk_box_pack_start(GTK_BOX(location_bar_box), window->ent_uri, TRUE, TRUE, GNOME_PAD);
+ gnome_app_add_docked(app, location_bar_box, "uri-entry",
GNOME_DOCK_ITEM_BEH_LOCKED|GNOME_DOCK_ITEM_BEH_EXCLUSIVE|GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL,
GNOME_DOCK_TOP, 2, 0, 0);
@@ -536,6 +558,7 @@ nautilus_window_get_arg (GtkObject *object,
static void
nautilus_window_init (NautilusWindow *window)
{
+ window_count++;
}
static void nautilus_window_destroy (NautilusWindow *window)
@@ -550,6 +573,11 @@ static void nautilus_window_destroy (NautilusWindow *window)
if(window->statusbar_clear_id)
g_source_remove(window->statusbar_clear_id);
+
+ if(--window_count <= 0)
+ {
+ gtk_main_quit();
+ }
}
GtkWidget *