Show close icons in the tab panel, if enabled

This commit is contained in:
Christian Dywan 2009-07-27 23:54:26 +02:00
parent 2f3204f61a
commit a905219267

View file

@ -19,6 +19,11 @@ tab_panel_app_add_browser_cb (MidoriApp* app,
MidoriBrowser* browser, MidoriBrowser* browser,
MidoriExtension* extension); MidoriExtension* extension);
static void
tab_panel_settings_notify_cb (MidoriWebSettings* settings,
GParamSpec* pspec,
GtkTreeModel* model);
static void static void
tab_panel_deactivate_cb (MidoriExtension* extension, tab_panel_deactivate_cb (MidoriExtension* extension,
GtkWidget* panel) GtkWidget* panel)
@ -37,6 +42,8 @@ tab_panel_deactivate_cb (MidoriExtension* extension,
extension, tab_panel_deactivate_cb, panel); extension, tab_panel_deactivate_cb, panel);
g_signal_handlers_disconnect_by_func ( g_signal_handlers_disconnect_by_func (
app, tab_panel_app_add_browser_cb, extension); app, tab_panel_app_add_browser_cb, extension);
g_signal_handlers_disconnect_by_func (
browser, tab_panel_settings_notify_cb, model);
} }
static void static void
@ -167,7 +174,13 @@ midori_extension_button_release_event_cb (GtkWidget* widget,
if (event->button == 1) if (event->button == 1)
{ {
MidoriBrowser* browser = midori_browser_get_for_widget (widget); MidoriBrowser* browser = midori_browser_get_for_widget (widget);
midori_browser_set_current_tab (browser, view); GtkTreeViewColumn* column;
if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget),
event->x, event->y, NULL, &column, NULL, NULL)
&& column == gtk_tree_view_get_column (GTK_TREE_VIEW (widget), 1))
gtk_widget_destroy (view);
else
midori_browser_set_current_tab (browser, view);
} }
else if (event->button == 2) else if (event->button == 2)
gtk_widget_destroy (view); gtk_widget_destroy (view);
@ -207,6 +220,20 @@ midori_extension_popup_menu_cb (GtkWidget* widget,
} }
} }
static void
tab_panel_settings_notify_cb (MidoriWebSettings* settings,
GParamSpec* pspec,
GtkTreeModel* model)
{
gboolean buttons = katze_object_get_boolean (settings, "close-buttons-on-tabs");
guint i;
GtkTreeIter iter;
i = 0;
while (gtk_tree_model_iter_nth_child (model, &iter, NULL, i++))
gtk_tree_store_set (GTK_TREE_STORE (model), &iter, 2, buttons, -1);
}
static void static void
tab_panel_browser_add_tab_cb (MidoriBrowser* browser, tab_panel_browser_add_tab_cb (MidoriBrowser* browser,
GtkWidget* view, GtkWidget* view,
@ -216,9 +243,16 @@ tab_panel_browser_add_tab_cb (MidoriBrowser* browser,
GtkTreeIter iter; GtkTreeIter iter;
GtkWidget* notebook = katze_object_get_object (browser, "notebook"); GtkWidget* notebook = katze_object_get_object (browser, "notebook");
gint page = gtk_notebook_page_num (GTK_NOTEBOOK (notebook), view); gint page = gtk_notebook_page_num (GTK_NOTEBOOK (notebook), view);
g_object_unref (notebook); MidoriWebSettings* settings = katze_object_get_object (browser, "settings");
gboolean buttons = katze_object_get_boolean (settings, "close-buttons-on-tabs");
gtk_tree_store_insert_with_values (GTK_TREE_STORE (model), gtk_tree_store_insert_with_values (GTK_TREE_STORE (model),
&iter, NULL, page, 0, view, -1); &iter, NULL, page, 0, view, 1, GTK_STOCK_CLOSE, 2, buttons, -1);
g_signal_connect (settings, "notify::close-buttons-on-tabs",
G_CALLBACK (tab_panel_settings_notify_cb), model);
g_object_unref (notebook);
g_object_unref (settings);
} }
static void static void
@ -295,6 +329,13 @@ tab_panel_app_add_browser_cb (MidoriApp* app,
gtk_tree_view_column_set_cell_data_func (column, renderer_text, gtk_tree_view_column_set_cell_data_func (column, renderer_text,
(GtkTreeCellDataFunc)midori_extension_treeview_render_text_cb, (GtkTreeCellDataFunc)midori_extension_treeview_render_text_cb,
treeview, NULL); treeview, NULL);
gtk_tree_view_column_set_expand (column, TRUE);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
column = gtk_tree_view_column_new ();
renderer_pixbuf = gtk_cell_renderer_pixbuf_new ();
gtk_tree_view_column_pack_start (column, renderer_pixbuf, FALSE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (column), renderer_pixbuf,
"stock-id", 1, "follow-state", 2, "visible", 2, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
g_object_connect (treeview, g_object_connect (treeview,
"signal::row-activated", "signal::row-activated",
@ -350,7 +391,8 @@ tab_panel_activate_cb (MidoriExtension* extension,
MidoriBrowser* browser; MidoriBrowser* browser;
guint i; guint i;
model = gtk_tree_store_new (2, MIDORI_TYPE_VIEW, G_TYPE_STRING); model = gtk_tree_store_new (3, MIDORI_TYPE_VIEW,
G_TYPE_STRING, G_TYPE_BOOLEAN);
g_object_set_data (G_OBJECT (extension), "treemodel", model); g_object_set_data (G_OBJECT (extension), "treemodel", model);
browsers = katze_object_get_object (app, "browsers"); browsers = katze_object_get_object (app, "browsers");