Index: src/ephy-tab.c
===================================================================
--- src/ephy-tab.c	(revision 7519)
+++ src/ephy-tab.c	(working copy)
@@ -989,7 +989,7 @@ ephy_tab_set_address (EphyTab *tab,
 
 		g_object_notify (object, "typed-address");
 	}
-
+	g_debug("set the address!");
 	g_object_notify (object, "address");
 }
 
Index: src/ephy-location-action.c
===================================================================
--- src/ephy-location-action.c	(revision 7519)
+++ src/ephy-location-action.c	(working copy)
@@ -48,9 +48,12 @@ struct _EphyLocationActionPrivate
 	GdkPixbuf *icon;
 	char *lock_stock_id;
 	char *lock_tooltip;
+	char *bookmark_tooltip;
 	guint editable : 1;
 	guint show_lock : 1;
 	guint secure : 1;
+	guint show_bookmark : 1;
+	guint bookmark : 1;
 };
 
 static void ephy_location_action_init       (EphyLocationAction *action);
@@ -72,6 +75,9 @@ enum
 	PROP_LOCK_TOOLTIP,
 	PROP_SECURE,
 	PROP_SHOW_LOCK,
+	PROP_BOOKMARK_TOOLTIP,
+	PROP_BOOKMARK,
+	PROP_SHOW_BOOKMARK,
 	PROP_WINDOW
 };
 
@@ -278,6 +284,42 @@ sync_show_lock (GtkAction *gaction,
 	ephy_location_entry_set_show_lock (entry, priv->show_lock);
 }
 
+static void
+sync_bookmark_tooltip (GtkAction *gaction,
+		   GParamSpec *pspec,
+		   GtkWidget *proxy)
+{
+	EphyLocationAction *action = EPHY_LOCATION_ACTION (gaction);
+	EphyLocationActionPrivate *priv = action->priv;
+	EphyLocationEntry *entry = EPHY_LOCATION_ENTRY (proxy);
+
+	ephy_location_entry_set_bookmark_tooltip (entry, priv->bookmark_tooltip);
+}
+
+static void
+sync_bookmark (GtkAction *gaction,
+	     GParamSpec *pspec,
+	     GtkWidget *proxy)
+{
+	EphyLocationAction *action = EPHY_LOCATION_ACTION (gaction);
+	EphyLocationActionPrivate *priv = action->priv;
+	EphyLocationEntry *entry = EPHY_LOCATION_ENTRY (proxy);
+
+	ephy_location_entry_set_bookmark (entry, priv->bookmark);
+}
+
+static void
+sync_show_bookmark (GtkAction *gaction,
+	        GParamSpec *pspec,
+	        GtkWidget *proxy)
+{
+	EphyLocationAction *action = EPHY_LOCATION_ACTION (gaction);
+	EphyLocationActionPrivate *priv = action->priv;
+	EphyLocationEntry *entry = EPHY_LOCATION_ENTRY (proxy);
+	
+	ephy_location_entry_set_show_bookmark (entry, priv->show_bookmark);
+}
+
 static char *
 get_location_cb (EphyLocationEntry *entry,
 		EphyLocationAction *action)
@@ -397,6 +439,15 @@ connect_proxy (GtkAction *action, GtkWid
 		g_signal_connect_object (action, "notify::show-lock",
 					 G_CALLBACK (sync_show_lock), proxy, 0);
 
+		sync_bookmark_tooltip (action, NULL, proxy);
+		g_signal_connect_object (action, "notify::bookmark-tooltip",
+					 G_CALLBACK (sync_bookmark_tooltip), proxy, 0);
+		g_signal_connect_object (action, "notify::bookmark",
+					 G_CALLBACK (sync_bookmark), proxy, 0);
+		sync_show_bookmark (action, NULL, proxy);
+		g_signal_connect_object (action, "notify::show-bookmark",
+					 G_CALLBACK (sync_show_bookmark), proxy, 0);
+
 		entry = ephy_location_entry_get_entry (lentry);
 		g_signal_connect_object (entry, "activate",
 					 G_CALLBACK (entry_activate_cb),
@@ -459,6 +510,7 @@ ephy_location_action_set_property (GObje
 			}
 			priv->icon = GDK_PIXBUF (g_value_dup_object (value));
 			break;
+
 		case PROP_LOCK_STOCK:
 			g_free (priv->lock_stock_id);
 			priv->lock_stock_id = g_value_dup_string (value);
@@ -473,6 +525,18 @@ ephy_location_action_set_property (GObje
 		case PROP_SHOW_LOCK:
 			priv->show_lock = g_value_get_boolean (value);
 			break;
+
+		case PROP_BOOKMARK_TOOLTIP:
+			g_free (priv->bookmark_tooltip);
+			priv->bookmark_tooltip = g_value_dup_string (value);
+			break;
+		case PROP_BOOKMARK:
+			priv->bookmark = g_value_get_boolean (value);
+			break;
+		case PROP_SHOW_BOOKMARK:
+			priv->show_bookmark = g_value_get_boolean (value);
+			break;
+			
 		case PROP_WINDOW:
 			priv->window = EPHY_WINDOW (g_value_get_object (value));
 			break;
@@ -511,6 +575,15 @@ ephy_location_action_get_property (GObje
 		case PROP_SHOW_LOCK:
 			g_value_set_boolean (value, priv->show_lock);
 			break;
+		case PROP_BOOKMARK_TOOLTIP:
+			g_value_set_string (value, priv->bookmark_tooltip);
+			break;
+		case PROP_BOOKMARK:
+			g_value_set_boolean (value, priv->bookmark);
+			break;
+		case PROP_SHOW_BOOKMARK:
+			g_value_set_boolean (value, priv->show_bookmark);
+			break;
 		case PROP_WINDOW:
 			/* not readable */
 			break;
@@ -599,6 +672,30 @@ ephy_location_action_class_init (EphyLoc
 							       G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
 
 	g_object_class_install_property (object_class,
+					 PROP_BOOKMARK_TOOLTIP,
+					 g_param_spec_string  ("bookmark-tooltip",
+							       "Bookmark Tooltip",
+							       "Bookmark Tooltip",
+							       NULL,
+							       G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+	g_object_class_install_property (object_class,
+					 PROP_BOOKMARK,
+					 g_param_spec_boolean ("bookmark",
+							       "Bookmark",
+							       "Bookmark",
+							       FALSE,
+							       G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+	g_object_class_install_property (object_class,
+					 PROP_SHOW_BOOKMARK,
+					 g_param_spec_boolean ("show-bookmark",
+							       "Show Bookmark",
+							       "Show Bookmark",
+							       FALSE,
+							       G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+	g_object_class_install_property (object_class,
 					 PROP_WINDOW,
 					 g_param_spec_object ("window",
 							      "Window",
Index: src/ephy-toolbar.c
===================================================================
--- src/ephy-toolbar.c	(revision 7519)
+++ src/ephy-toolbar.c	(working copy)
@@ -79,6 +79,8 @@ struct _EphyToolbarPrivate
 	guint updating_address : 1;
 	guint show_lock : 1;
 	guint is_secure : 1;
+	guint show_bookmark : 1;
+	guint is_bookmark : 1;
 	guint leave_fullscreen_visible : 1;
 	guint spinning : 1;
 };
@@ -476,6 +478,16 @@ ephy_toolbar_set_navigation_tooltips (Ep
 	g_value_unset (&value);
 }
 
+gboolean
+ephy_toolbar_get_lock_is_shown (EphyToolbar *toolbar)
+{
+	EphyToolbarPrivate *priv = toolbar->priv;
+	gboolean show_lock = FALSE;
+	show_lock = (gboolean) g_object_get_data (G_OBJECT (priv->actions[LOCATION_ACTION]),
+					"show-lock");
+	return show_lock;
+}
+
 void
 ephy_toolbar_set_security_state (EphyToolbar *toolbar,
 				 gboolean is_secure,
@@ -496,6 +508,34 @@ ephy_toolbar_set_security_state (EphyToo
 		      NULL);
 }
 
+gboolean
+ephy_toolbar_get_bookmark_is_shown (EphyToolbar *toolbar)
+{
+	EphyToolbarPrivate *priv = toolbar->priv;
+	gboolean show_bookmark = FALSE;
+	g_object_get (G_OBJECT (priv->actions[LOCATION_ACTION]),
+			"show-bookmark", &show_bookmark, NULL);
+	return show_bookmark;
+}
+
+void
+ephy_toolbar_set_is_bookmark (EphyToolbar *toolbar,
+				 gboolean is_bookmark,
+				 gboolean show_bookmark,
+				 const char *tooltip)
+{
+	EphyToolbarPrivate *priv = toolbar->priv;
+
+	priv->show_bookmark = (show_bookmark != FALSE);
+	priv->is_bookmark = (is_bookmark != FALSE);
+
+	g_object_set (priv->actions[LOCATION_ACTION],
+		      "bookmark-tooltip", tooltip,
+		      "show-bookmark", priv->show_bookmark,
+		      "bookmark", is_bookmark,
+		      NULL);
+}
+
 void
 ephy_toolbar_set_spinning (EphyToolbar *toolbar,
 			   gboolean spinning)
Index: src/ephy-toolbar.h
===================================================================
--- src/ephy-toolbar.h	(revision 7519)
+++ src/ephy-toolbar.h	(working copy)
@@ -96,6 +96,15 @@ void		ephy_toolbar_set_security_state		(
 							 const char *stock_id,
 							 const char *tooltip);
 
+gboolean	ephy_toolbar_get_lock_is_shown		(EphyToolbar *toolbar);
+
+void		ephy_toolbar_set_is_bookmark 		(EphyToolbar *toolbar,
+							 gboolean is_bookmark,
+							 gboolean show_bookmark,
+							 const char *tooltip);
+
+gboolean	ephy_toolbar_get_bookmark_is_shown	(EphyToolbar *toolbar);
+				 
 void		ephy_toolbar_set_spinning		(EphyToolbar *toolbar,
 							 gboolean spinning);
 
Index: src/ephy-window.c
===================================================================
--- src/ephy-window.c	(revision 7519)
+++ src/ephy-window.c	(working copy)
@@ -106,7 +106,9 @@ static void sync_tab_security			(EphyTab
 static void sync_tab_zoom			(EphyTab *tab,
 						 GParamSpec *pspec,
 						 EphyWindow *window);
-
+static void sync_tab_is_bookmark		(EphyTab *tab, 
+						 GParamSpec *pspec, 
+						 EphyWindow *window);
 
 static const GtkActionEntry ephy_menu_entries [] = {
 
@@ -701,6 +703,7 @@ ephy_window_fullscreen (EphyWindow *wind
 				  G_CALLBACK (exit_fullscreen_clicked_cb), window);
 
 	action = gtk_action_group_get_action (priv->action_group, "ViewPageSecurityInfo");
+
 	g_signal_connect_swapped (popup, "lock-clicked",
 				  G_CALLBACK (gtk_action_activate), action);
 
@@ -1378,9 +1381,10 @@ sync_tab_address (EphyTab *tab,
 		  EphyWindow *window)
 {
 	EphyWindowPrivate *priv = window->priv;
-
+	g_debug("blahm!");
+	
 	if (priv->closing) return;
-
+	g_debug("bloohm!");
 	ephy_toolbar_set_location (priv->toolbar,
 				   ephy_tab_get_address (tab),
 				   ephy_tab_get_typed_address (tab));
@@ -1466,6 +1470,40 @@ sync_tab_message (EphyTab *tab, GParamSp
 		gtk_statusbar_push (s, window->priv->tab_message_cid, message);
 	}
 }
+static void
+sync_tab_is_bookmark (EphyTab *tab, 
+		      GParamSpec *pspec, 
+		      EphyWindow *window)
+{	
+	EphyBookmarks *bookmarks;
+	EphyNode *node;
+	gboolean show_bookmark, is_bookmark;
+	const char *location;
+		
+	EphyToolbar *toolbar;
+	
+	show_bookmark = is_bookmark = FALSE;
+	location = ephy_tab_get_address (tab);
+	toolbar = EPHY_TOOLBAR (ephy_window_get_toolbar (window));
+	bookmarks = ephy_shell_get_bookmarks (ephy_shell);
+
+	node = ephy_bookmarks_find_bookmark (bookmarks, location);
+	
+	show_bookmark = ephy_toolbar_get_lock_is_shown (toolbar);
+	
+	if (node != NULL)
+	{
+		is_bookmark = TRUE;
+	}
+	else
+	{
+		is_bookmark = FALSE;
+	}
+	g_debug("is_bookmark: %d; show_bookmark: %d;", is_bookmark, show_bookmark);
+	
+	ephy_toolbar_set_is_bookmark (window->priv->toolbar, is_bookmark,
+					show_bookmark, location);
+}
 
 static void
 sync_tab_navigation (EphyTab *tab,
@@ -1715,7 +1753,7 @@ sync_tab_title (EphyTab *tab,
 	EphyWindowPrivate *priv = window->priv;
 
 	if (priv->closing) return;
-
+	g_debug("blehm1");
 	gtk_window_set_title (GTK_WINDOW(window),
 			      ephy_tab_get_title_composite (tab));
 }
@@ -2218,6 +2256,8 @@ ephy_window_set_active_tab (EphyWindow *
 			(embed, G_CALLBACK (tab_context_menu_cb), window);
 		g_signal_handlers_disconnect_by_func
 			(embed, G_CALLBACK (tab_size_to_cb), window);
+		g_signal_handlers_disconnect_by_func
+			(embed, G_CALLBACK (sync_tab_is_bookmark), window);
 
 	}
 
@@ -2226,6 +2266,8 @@ ephy_window_set_active_tab (EphyWindow *
 	if (new_tab != NULL)
 	{
 		sync_tab_address	(new_tab, NULL, window);
+		sync_tab_is_bookmark	(new_tab, NULL, window);
+		g_debug("bleh!");
 		sync_tab_document_type	(new_tab, NULL, window);
 		sync_tab_icon		(new_tab, NULL, window);
 		sync_tab_load_progress	(new_tab, NULL, window);
@@ -2241,6 +2283,9 @@ ephy_window_set_active_tab (EphyWindow *
 		g_signal_connect_object (new_tab, "notify::address",
 					 G_CALLBACK (sync_tab_address),
 					 window, 0);
+		g_signal_connect_object (new_tab, "notify::address",
+					 G_CALLBACK (sync_tab_is_bookmark),
+					 window, 0);
 		g_signal_connect_object (new_tab, "notify::document-type",
 					 G_CALLBACK (sync_tab_document_type),
 					 window, 0);
Index: lib/ephy-file-chooser.c
===================================================================
--- lib/ephy-file-chooser.c	(revision 7519)
+++ lib/ephy-file-chooser.c	(working copy)
@@ -440,14 +440,14 @@ ephy_file_chooser_new (const char *title
 					     filter[default_filter]);
 	}
 
-	if (parent != NULL)
-	{
-		gtk_window_set_transient_for (GTK_WINDOW (dialog),
-					      GTK_WINDOW (parent));
-		gtk_window_group_add_window (ephy_gui_ensure_window_group (GTK_WINDOW (parent)),
-					     GTK_WINDOW (dialog));
-		gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
-	}
+//	if (parent != NULL)
+//	{
+//		gtk_window_set_transient_for (GTK_WINDOW (dialog),
+//					      GTK_WINDOW (parent));
+//		gtk_window_group_add_window (ephy_gui_ensure_window_group (GTK_WINDOW (parent)),
+//					     GTK_WINDOW (dialog));
+//		gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
+//	}
 
 	return dialog;
 }
Index: lib/widgets/ephy-location-entry.c
===================================================================
--- lib/widgets/ephy-location-entry.c	(revision 7519)
+++ lib/widgets/ephy-location-entry.c	(working copy)
@@ -64,7 +64,9 @@ struct _EphyLocationEntryPrivate
 	GtkWidget *icon_ebox;
 	GtkWidget *icon;
 	GtkWidget *lock_ebox;
+	GtkWidget *bookmark_ebox;
 	GtkWidget *lock;
+	GtkWidget *bookmark;
 	GdkPixbuf *favicon;
 	GdkColor secure_bg_colour;
 	GdkColor secure_fg_colour;
@@ -911,6 +913,16 @@ ephy_location_entry_construct_contents (
 
 	ephy_icon_entry_pack_widget (priv->icon_entry, priv->icon_ebox, TRUE);
 
+	priv->bookmark_ebox = gtk_event_box_new ();
+	gtk_container_set_border_width (GTK_CONTAINER (priv->bookmark_ebox), 2);
+	gtk_event_box_set_visible_window (GTK_EVENT_BOX (priv->bookmark_ebox), FALSE);
+
+	priv->bookmark = gtk_image_new_from_stock (EPHY_STOCK_BOOKMARK,
+						   GTK_ICON_SIZE_MENU);
+	gtk_container_add (GTK_CONTAINER (priv->bookmark_ebox), priv->bookmark);
+
+	ephy_icon_entry_pack_widget (priv->icon_entry, priv->bookmark_ebox, FALSE);
+	
 	priv->lock_ebox = gtk_event_box_new ();
 	gtk_container_set_border_width (GTK_CONTAINER (priv->lock_ebox), 2);
 	gtk_widget_add_events (priv->lock_ebox, GDK_BUTTON_PRESS_MASK);
@@ -1320,3 +1332,27 @@ ephy_location_entry_set_lock_tooltip (Ep
 
 	gtk_widget_set_tooltip_text (priv->lock_ebox, tooltip);
 }
+
+void
+ephy_location_entry_set_bookmark (EphyLocationEntry *entry,
+				gboolean bookmark)
+{
+	return;
+}
+
+void
+ephy_location_entry_set_show_bookmark (EphyLocationEntry *entry,
+				   gboolean show_bookmark)
+{
+	EphyLocationEntryPrivate *priv = entry->priv;
+	g_object_set (priv->bookmark_ebox, "visible", show_bookmark, NULL);
+}
+
+void
+ephy_location_entry_set_bookmark_tooltip (EphyLocationEntry *entry,
+				      const char *tooltip)
+{
+	EphyLocationEntryPrivate *priv = entry->priv;
+
+	gtk_widget_set_tooltip_text (priv->bookmark_ebox, tooltip);
+}
Index: lib/widgets/ephy-location-entry.h
===================================================================
--- lib/widgets/ephy-location-entry.h	(revision 7519)
+++ lib/widgets/ephy-location-entry.h	(working copy)
@@ -102,6 +102,15 @@ void		ephy_location_entry_set_lock_stock
 
 void		ephy_location_entry_set_lock_tooltip	(EphyLocationEntry *entry,
 							 const char *tooltip);
+							 
+void		ephy_location_entry_set_bookmark	(EphyLocationEntry *entry,
+							 gboolean bookmark);
+
+void		ephy_location_entry_set_show_bookmark	(EphyLocationEntry *entry,
+							 gboolean show_bookmark);
+
+void		ephy_location_entry_set_bookmark_tooltip (EphyLocationEntry *entry,
+							  const char *tooltip);
 
 G_END_DECLS
 
Index: embed/xulrunner/components/FilePicker.cpp
===================================================================
--- embed/xulrunner/components/FilePicker.cpp	(revision 7519)
+++ embed/xulrunner/components/FilePicker.cpp	(working copy)
@@ -112,11 +112,11 @@ NS_IMETHODIMP GFilePicker::Init(nsIDOMWi
 					 CONF_STATE_UPLOAD_DIR,
 					 EPHY_FILE_FILTER_NONE);
 
-	if (parent)
-	{
-		gtk_window_group_add_window (ephy_gui_ensure_window_group (GTK_WINDOW (gtkparent)),
-					     GTK_WINDOW (mDialog));
-	}
+//	if (parent)
+//	{
+//		gtk_window_group_add_window (ephy_gui_ensure_window_group (GTK_WINDOW (gtkparent)),
+//					     GTK_WINDOW (mDialog));
+//	}
 
 	if (mode == nsIFilePicker::modeOpenMultiple)
 	{
