[Kazehakase-cvs] CVS update: kazehakase/src

Zurück zum Archiv-Index

Hiroyuki Ikezoe ikezo****@users*****
Thu Jan 4 09:24:43 JST 2007


Index: kazehakase/src/kz-notebook.c
diff -u kazehakase/src/kz-notebook.c:1.4 kazehakase/src/kz-notebook.c:1.5
--- kazehakase/src/kz-notebook.c:1.4	Wed Jan  3 22:41:42 2007
+++ kazehakase/src/kz-notebook.c	Thu Jan  4 09:24:43 2007
@@ -52,6 +52,9 @@
 typedef struct _KzNotebookPrivate	KzNotebookPrivate;
 struct _KzNotebookPrivate
 {
+	/* tabs */
+	GList *open_hist;
+	GList *view_hist;
 };
 
 #define KZ_NOTEBOOK_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), KZ_TYPE_NOTEBOOK, KzNotebookPrivate))
@@ -126,9 +129,14 @@
 static void
 kz_notebook_init (KzNotebook *notebook)
 {
+	KzNotebookPrivate *priv = KZ_NOTEBOOK_GET_PRIVATE(notebook);
+
 	/* widgets */
 	notebook->kz = NULL;
 
+	priv->open_hist    = NULL;
+	priv->view_hist    = NULL;
+
 	gtk_drag_dest_set(GTK_WIDGET(notebook),
 			  GTK_DEST_DEFAULT_ALL,
 			  url_drag_types, G_N_ELEMENTS(url_drag_types),
@@ -321,6 +329,7 @@
 {
 	KzTabLabel *tab;
 	gchar *title;
+	KzNotebookPrivate *priv = KZ_NOTEBOOK_GET_PRIVATE(notebook);
 	KzEmbed *kzembed = KZ_EMBED(gtk_notebook_get_nth_page(notebook, page_num));
 
 	title = kz_embed_ensure_title(kzembed);
@@ -334,6 +343,9 @@
 		gtk_window_set_title(GTK_WINDOW(KZ_NOTEBOOK(notebook)->kz), _("Kazehakase"));
 	}
 
+	priv->view_hist = g_list_remove(priv->view_hist, kzembed);
+	priv->view_hist = g_list_prepend(priv->view_hist, kzembed);
+
 	tab = KZ_TAB_LABEL(gtk_notebook_get_tab_label(notebook, GTK_WIDGET(kzembed)));
 	g_return_if_fail(tab);
 
@@ -401,21 +413,38 @@
 }
 
 KzTabLabel *
+kz_notebook_open_new_tab_at_tail (KzNotebook *notebook, KzEmbed *embed, KzTabLabel *label)
+{
+	KzNotebookPrivate *priv = KZ_NOTEBOOK_GET_PRIVATE(notebook);
+
+	gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+			GTK_WIDGET(embed),
+			GTK_WIDGET(label));
+	/* add to this notebook's history */
+	priv->open_hist = g_list_prepend(priv->open_hist, embed);
+
+	return NULL;
+}
+
+KzTabLabel *
 kz_notebook_open_new_tab (KzNotebook *notebook, KzEmbed *embed, KzTabLabel *label)
 {
 	gint pos;
 	GtkWidget *sibembed;
-	KzTabLabel *sibtab;
+	KzTabLabel *sibtab = NULL;
+	KzNotebookPrivate *priv = KZ_NOTEBOOK_GET_PRIVATE(notebook);
 
 	pos = get_insert_tab_position (notebook);
 
 	gtk_notebook_insert_page(GTK_NOTEBOOK(notebook),
-				 GTK_WIDGET(embed),
-				 GTK_WIDGET(label),
-				 pos);			
+			GTK_WIDGET(embed),
+			GTK_WIDGET(label),
+			pos);
 	sibembed = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), pos);
 	sibtab = KZ_TAB_LABEL(gtk_notebook_get_tab_label(GTK_NOTEBOOK(notebook),
-			      sibembed));
+				sibembed));
+	/* add to this notebook's history */
+	priv->open_hist = g_list_prepend(priv->open_hist, embed);
 
 	return sibtab;
 }
@@ -427,6 +456,7 @@
 	KzTabLabel *kztab = NULL;
 	KzWindow *kz = notebook->kz;
 	GtkWidget *next = NULL;
+	KzNotebookPrivate *priv = KZ_NOTEBOOK_GET_PRIVATE(notebook);
 	kztab = KZ_TAB_LABEL(gtk_notebook_get_tab_label(GTK_NOTEBOOK(notebook),
 							widget));
 	GtkWidget *current = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
@@ -447,20 +477,17 @@
 	if (ret_page && !strcmp(ret_page, "last_shown"))
 	{
 		GList *node;
-		const GList *list;
 		
-		list = kz_window_get_view_history(kz);
-		if (list &&
-		    (node = g_list_next(list)))
+		if (priv->view_hist &&
+		    (node = g_list_next(priv->view_hist)))
 		{
 			next = node->data;
 		}
 	}
 	else if (ret_page && !strcmp(ret_page, "last_created"))
 	{
-		const GList *node;
+		GList *node = priv->open_hist;
 
-		node = kz_window_get_open_history(kz);
 		for (; node && !next; node = g_list_next(node))
 		{
 			if (current != node->data)
@@ -503,9 +530,39 @@
 	n_pages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook));
 	for (i = n_pages - 1; i >= 0; i--)
 	{
-		GtkWidget *widget = gtk_notebook_get_nth_page(notebook, i);
+		GtkWidget *widget = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), i);
 		gtk_widget_destroy(widget);
 	}
 	return TRUE;
 }
 
+gboolean
+kz_notebook_move_tab (KzNotebook *src_notebook, KzNotebook *dest_notebook, GtkWidget *widget)
+{
+	KzTabLabel *new_kztab;
+	KzNotebookPrivate *dest_priv, *src_priv;
+
+	/* create new tab label */
+	new_kztab = KZ_TAB_LABEL(kz_tab_label_new(dest_notebook->kz, KZ_EMBED(widget)));
+
+	/* move the page to this window */
+	g_object_ref(widget);
+	gtk_container_remove(GTK_CONTAINER(src_notebook), widget);
+	gtk_notebook_prepend_page(GTK_NOTEBOOK(dest_notebook),
+				  widget,
+				  GTK_WIDGET(new_kztab));
+	g_object_unref(widget);
+
+	dest_priv = KZ_NOTEBOOK_GET_PRIVATE(dest_notebook);
+	src_priv = KZ_NOTEBOOK_GET_PRIVATE(src_notebook);
+	/* remove view_hist */
+	src_priv->view_hist = g_list_remove(src_priv->view_hist,
+						widget);
+	/* move open_hist */
+	src_priv->open_hist = g_list_remove(src_priv->open_hist,
+						widget);
+	dest_priv->open_hist = g_list_prepend(dest_priv->open_hist,
+					      widget);
+	return TRUE;
+}
+
Index: kazehakase/src/kz-notebook.h
diff -u kazehakase/src/kz-notebook.h:1.2 kazehakase/src/kz-notebook.h:1.3
--- kazehakase/src/kz-notebook.h:1.2	Wed Jan  3 22:41:42 2007
+++ kazehakase/src/kz-notebook.h	Thu Jan  4 09:24:43 2007
@@ -33,8 +33,10 @@
 GType       kz_notebook_get_type          (void) G_GNUC_CONST;
 GtkWidget  *kz_notebook_new               (KzWindow *kz);
 KzTabLabel *kz_notebook_open_new_tab	  (KzNotebook *notebook, KzEmbed *embed, KzTabLabel *label);
+KzTabLabel *kz_notebook_open_new_tab_at_tail(KzNotebook *notebook, KzEmbed *embed, KzTabLabel *label);
 gboolean    kz_notebook_close_tab	  (KzNotebook *notebook, GtkWidget *widget);
 gboolean    kz_notebook_close_all_tab     (KzNotebook *notebook);
+gboolean    kz_notebook_move_tab          (KzNotebook *src_notebook, KzNotebook *dest_notebook, GtkWidget *widget);
 
 G_END_DECLS
 
Index: kazehakase/src/kz-tab-label.c
diff -u kazehakase/src/kz-tab-label.c:1.84 kazehakase/src/kz-tab-label.c:1.85
--- kazehakase/src/kz-tab-label.c:1.84	Mon Jan  1 22:22:00 2007
+++ kazehakase/src/kz-tab-label.c	Thu Jan  4 09:24:43 2007
@@ -30,6 +30,7 @@
 #include "kz-icons.h"
 #include "kz-favicon.h"
 #include "kz-bookmark-file.h"
+#include "kz-notebook.h"
 
 enum {
 	PROP_0,
Index: kazehakase/src/kz-window.c
diff -u kazehakase/src/kz-window.c:1.293 kazehakase/src/kz-window.c:1.294
--- kazehakase/src/kz-window.c:1.293	Wed Jan  3 22:41:42 2007
+++ kazehakase/src/kz-window.c	Thu Jan  4 09:24:43 2007
@@ -90,10 +90,6 @@
 	
 	/* sidebar */
 	gboolean sidebar_was_shown;
-
-	/* tabs */
-	GList *open_hist;
-	GList *view_hist;
 	GNode *tab_tree;
 };
 #define KZ_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), KZ_TYPE_WINDOW, KzWindowPrivate))
@@ -432,8 +428,6 @@
 	
 	priv->sidebar_was_shown = FALSE;
 
-	priv->open_hist    = NULL;
-	priv->view_hist    = NULL;
 	priv->tab_tree     = NULL;
 
 	kz->tabs            = kz_bookmark_pure_folder_new();
@@ -873,14 +867,9 @@
 
 	gtk_widget_show(GTK_WIDGET(kzembed));
 	gtk_widget_show(GTK_WIDGET(kztab));
-	gtk_notebook_append_page(GTK_NOTEBOOK(kz->notebook),
-				 GTK_WIDGET(kzembed),
-				 GTK_WIDGET(kztab));
+	kz_notebook_open_new_tab_at_tail(KZ_NOTEBOOK(kz->notebook), kzembed, kztab);
 	kz_window_set_embed_callbacks(kz, kzembed);
 
-	/* add to this window's history */
-	priv->open_hist = g_list_prepend(priv->open_hist, kzembed);
-
 	/* root node */
 	if (!priv->tab_tree)
 		priv->tab_tree = g_node_new(NULL);
@@ -925,9 +914,6 @@
 
 	kz_window_set_embed_callbacks(kz, kzembed);
 
-	/* add to this window's history */
-	priv->open_hist = g_list_prepend(priv->open_hist, kzembed);
-
 	/* root node */
 	if (!priv->tab_tree)
 		priv->tab_tree = g_node_new(NULL);
@@ -1015,7 +1001,6 @@
 		      0, widget, pos);
 }
 
-
 /* FIXME!! It's a hacky way. */
 void
 kz_window_move_tab (KzWindow *kz, GtkWidget *widget)
@@ -1055,23 +1040,12 @@
 	/* move the page to this window */
 	kz_window_unset_cur_embed_callbacks(src_kz, kzembed);
 	kz_window_unset_embed_callbacks(src_kz, kzembed);
-	g_object_ref(widget);
-	gtk_container_remove(GTK_CONTAINER(src_kz->notebook), widget);
-	gtk_notebook_prepend_page(GTK_NOTEBOOK(kz->notebook),
-				  widget,
-				  GTK_WIDGET(new_kztab));
+
+	kz_notebook_move_tab(KZ_NOTEBOOK(kz->notebook), KZ_NOTEBOOK(src_kz->notebook), widget);
+
 	kz_bookmark_prepend(kz->tabs, new_kztab->history);
 	kz_window_set_embed_callbacks(kz, kzembed);
 
-	/* remove view_hist */
-	src_priv->view_hist = g_list_remove(src_priv->view_hist,
-						kzembed);
-	/* move open_hist */
-	src_priv->open_hist = g_list_remove(src_priv->open_hist,
-						kzembed);
-	priv->open_hist = g_list_prepend(priv->open_hist,
-					     kzembed);
-
 	/* move tab tree */
 	node = g_node_find(src_priv->tab_tree,
 			   G_IN_ORDER, G_TRAVERSE_ALL, widget);
@@ -1200,46 +1174,7 @@
 			return handled;
 		}
 	}
-#if 0
-	/* Handle accelerators that we want bound, but aren't associated with
-	 * an action */
-	for (i = 0; i < G_N_ELEMENTS (extra_keybindings); i++)
-	{
-		if (modifier == extra_keybindings[i].modifier &&
-		    event->keyval == extra_keybindings[i].keyval)
-		{
-			GtkAction *action;
-			action = gtk_action_group_get_action 
-				(kz->actions, 
-				 extra_keybindings[i].action);
-			gtk_action_activate(action);
-			return TRUE;
-		}
-	}
-#endif
-#if 0
-	if (event->keyval == GDK_F10 && modifier == 0 &&
-	    priv->menubar && priv->menubar->parent &&
-	    !GTK_WIDGET_VISIBLE(priv->menubar->parent))
-	{
-		/* When F10 is pressed gtk+ automatically opens the menu if the
-		 * menubar is visible, but when the menubar is not visible
-		 * (think fullscreen or popup windows) we show it manually and
-		 * hide again when the user activates or otherwise dismisses
-		 * the menu.
-		 */
-
-		gulong *handler_id = g_new(gulong, 1);
-
-		*handler_id = g_signal_connect_data (priv->menubar, "deactivate",
-						     G_CALLBACK(menubar_deactivate_cb),
-						     handler_id, (GClosureNotify)g_free, 0);
-		gtk_widget_show (GTK_WIDGET(priv->menubar->parent));
-		gtk_menu_shell_select_first (GTK_MENU_SHELL(priv->menubar),
-				             FALSE);
-		return TRUE;
-	}
-#endif
+
 	return GTK_WIDGET_CLASS(kz_window_parent_class)->key_press_event(widget, event);
 }
 
@@ -2073,7 +2008,6 @@
 	GtkAction *action;
 	KzTabLabel *tab;
 	gboolean focus;
-	KzWindowPrivate *priv = KZ_WINDOW_GET_PRIVATE (kz);
 
 	g_return_if_fail(KZ_IS_EMBED(cur));
 	g_return_if_fail(KZ_IS_EMBED(kzembed));
@@ -2130,9 +2064,6 @@
 	kz_actions_set_sensitive(kz, kzembed);
 	kz_actions_set_tab_sensitive(kz, kzembed);
 
-	priv->view_hist = g_list_remove(priv->view_hist, kzembed);
-	priv->view_hist = g_list_prepend(priv->view_hist, kzembed);
-
 	/* set current_position in history */
 	kz_bookmark_set_current(kz->tabs, page_num);
 }
@@ -2356,9 +2287,7 @@
 	kz_window_unset_cur_embed_callbacks(kz, kzembed);
 	kz_window_unset_embed_callbacks(kz, kzembed);
 
-	priv->view_hist = g_list_remove(priv->view_hist, kzembed);
-	priv->open_hist = g_list_remove(priv->open_hist, kzembed);
-
+	kz_notebook_close_tab(KZ_NOTEBOOK(kz->notebook), GTK_WIDGET(obj));
 	kz_statusbar_set_link_text(KZ_STATUSBAR(kz->statusbar), NULL);
 
 	node = g_node_find(priv->tab_tree,
@@ -2378,7 +2307,6 @@
 	
 	/* FIXME! should move to specifing tab like kz_window_close_tab() */
 	g_node_destroy(node);
-	gtk_widget_destroy(GTK_WIDGET(kzembed));
 	g_signal_emit(kz, kz_window_signals[REMOVE_TAB_SIGNAL],
 		      0, kzembed);
 }
@@ -2813,14 +2741,3 @@
 	}
 }
 
-const GList *
-kz_window_get_view_history (KzWindow *kz)
-{
-	return KZ_WINDOW_GET_PRIVATE(kz)->view_hist;
-}
-
-const GList *
-kz_window_get_open_history (KzWindow *kz)
-{
-	return KZ_WINDOW_GET_PRIVATE(kz)->open_hist;
-}
Index: kazehakase/src/kz-window.h
diff -u kazehakase/src/kz-window.h:1.74 kazehakase/src/kz-window.h:1.75
--- kazehakase/src/kz-window.h:1.74	Wed Jan  3 22:41:42 2007
+++ kazehakase/src/kz-window.h	Thu Jan  4 09:24:43 2007
@@ -111,7 +111,7 @@
 void              kz_window_reorder_tab              (KzWindow    *kz,
 						      GtkWidget   *widget,
 						      gint         position);
-void              kz_window_move_tab                 (KzWindow    *kz,
+void		  kz_window_move_tab 		     (KzWindow    *kz,
 						      GtkWidget   *widget);
 void              kz_window_load_url                 (KzWindow    *kz,
 						      const gchar *url);
@@ -136,8 +136,6 @@
 						      const gchar *name);
 gboolean          kz_window_activate_tabpop_action   (KzWindow    *kz,
 						      const gchar *name);
-const GList      *kz_window_get_view_history	     (KzWindow    *kz);
-const GList      *kz_window_get_open_history	     (KzWindow    *kz);
 
 const KzEmbedEventMouse *
 		  kz_window_get_mouse_event_info     (KzWindow    *kz);


More information about the Kazehakase-cvs mailing list
Zurück zum Archiv-Index