diff options
-rw-r--r-- | src/tab-label.c | 127 |
1 files changed, 1 insertions, 126 deletions
diff --git a/src/tab-label.c b/src/tab-label.c index 01b866b..318c551 100644 --- a/src/tab-label.c +++ b/src/tab-label.c @@ -77,97 +77,6 @@ new_window_clicked_cb(GtkWidget G_GNUC_UNUSED *button, MqTabLabel *tab_label) gtk_widget_hide(tab_label->popover); } -static void -tab_list_button_toggled_cb(GtkToggleButton *toggle_button, GtkWidget *tab_list) -{ - if (gtk_toggle_button_get_active(toggle_button)) { - gtk_widget_show(tab_list); - } else { - gtk_widget_hide(tab_list); - } -} - -static void -create_tree_model_recurse(MqTabPage *node, GtkTreeStore *tree_store, - GtkTreeIter *parent_tree_iter) -{ - GtkTreeIter tree_iter; - - for (; node; node = mq_tab_page_next(node)) { - gtk_tree_store_append(tree_store, &tree_iter, parent_tree_iter); - gtk_tree_store_set(tree_store, &tree_iter, 0, - mq_tab_page_get_title(node), -1); - create_tree_model_recurse(mq_tab_page_first_child(node), - tree_store, &tree_iter); - } -} - -static GtkTreeModel * -create_tree_model(MqTabLabel *tab_label) -{ - GtkTreeStore *tree_store; - - tree_store = gtk_tree_store_new(1, G_TYPE_STRING); - - create_tree_model_recurse(mq_tab_page_root(tab_label->tab_page), - tree_store, NULL); - - return GTK_TREE_MODEL(tree_store); -} - -static void -row_activated_cb(GtkTreeView G_GNUC_UNUSED *tree_view, GtkTreePath *tree_path, - GtkTreeViewColumn G_GNUC_UNUSED *tree_view_column, - MqTabLabel *tab_label) -{ - gint *indices; - gint depth; - - indices = gtk_tree_path_get_indices_with_depth(tree_path, &depth); - g_assert(depth == 1); - mq_window_set_current_tab(mq_tab_page_get_window(tab_label->tab_page), - indices[0] + 1); - gtk_widget_hide(tab_label->popover); -} - -static GtkWidget * -create_tab_list(MqTabLabel *tab_label) -{ - GtkWidget *tree_view; - GtkTreeSelection *tree_selection; - GtkCellRenderer *cell_renderer; - GtkWidget *scrolled_window; - - tree_view = gtk_tree_view_new_with_model(create_tree_model(tab_label)); - tree_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view)); - gtk_tree_selection_set_mode(tree_selection, GTK_SELECTION_BROWSE); - gtk_tree_selection_select_path(tree_selection, - gtk_tree_path_new_from_indices( - mq_window_get_current_tab(mq_tab_page_get_window( - tab_label->tab_page)) - 1, -1)); - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree_view), FALSE); - gtk_tree_view_set_activate_on_single_click(GTK_TREE_VIEW(tree_view), - TRUE); - gtk_tree_view_expand_all(GTK_TREE_VIEW(tree_view)); - gtk_tree_view_set_reorderable(GTK_TREE_VIEW(tree_view), TRUE); - gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(tree_view), TRUE); - g_signal_connect(tree_view, "row-activated", - G_CALLBACK(row_activated_cb), tab_label); - - cell_renderer = gtk_cell_renderer_text_new(); - gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(tree_view), - -1, NULL, cell_renderer, "text", 0, NULL); - - scrolled_window = gtk_scrolled_window_new(NULL, NULL); - gtk_scrolled_window_set_min_content_width( - GTK_SCROLLED_WINDOW(scrolled_window), 400); - gtk_scrolled_window_set_min_content_height( - GTK_SCROLLED_WINDOW(scrolled_window), 200); - gtk_container_add(GTK_CONTAINER(scrolled_window), tree_view); - - return scrolled_window; -} - #define BUTTON_ROWS 2 #define BUTTON_COLS 4 #define NEW_BUTTON(Y, X, ICON, TOOLTIP) \ @@ -200,9 +109,6 @@ create_tab_popover(GtkWidget *widget, MqTabLabel *tab_label) { GtkWidget *button_grid; GtkWidget *buttons[BUTTON_ROWS * BUTTON_COLS]; - GtkWidget *tab_list; - GtkWidget *tab_list_scrolled_window; - GtkWidget *box; /* Set up button grid. */ button_grid = gtk_grid_new(); @@ -216,48 +122,17 @@ create_tab_popover(GtkWidget *widget, MqTabLabel *tab_label) NEW_BUTTON(1, 0, "tab-new-symbolic", "New tab"); NEW_BUTTON(1, 1, "window-new", "New window"); NEW_BUTTON(1, 2, "edit-undo", "Undo close tab"); - NEW_TOGGLE(1, 3, "view-list-symbolic", "Tab list..."); CLICKED_CB(0, 0, G_CALLBACK(reload_tab_clicked_cb)); CLICKED_CB(1, 0, G_CALLBACK(new_tab_clicked_cb)); CLICKED_CB(1, 1, G_CALLBACK(new_window_clicked_cb)); - /* Set up the tab list. */ - tab_list = create_tab_list(tab_label); - - /* Set up the tab list scrolled window. - * - * The following GtkScrolledWindow widget has a hardcoded minimum size, - * because there seems to be (in GTK+ versions before 3.22) no way to - * set the natural size of GtkScrolledWindow and its GtkViewport. - * - * See tab-chrome.c for more information. */ - tab_list_scrolled_window = gtk_scrolled_window_new(NULL, NULL); - gtk_scrolled_window_set_min_content_width( - GTK_SCROLLED_WINDOW(tab_list_scrolled_window), 400); - gtk_scrolled_window_set_min_content_height( - GTK_SCROLLED_WINDOW(tab_list_scrolled_window), 200); - gtk_container_add(GTK_CONTAINER(tab_list_scrolled_window), tab_list); - - /* Add tab list toggle button handler. */ - g_signal_connect(buttons[1 * BUTTON_COLS + 3], "toggled", - G_CALLBACK(tab_list_button_toggled_cb), - tab_list_scrolled_window); - - /* Set up the button rows box. */ - box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); - gtk_box_pack_start(GTK_BOX(box), button_grid, - TRUE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(box), tab_list_scrolled_window, - TRUE, FALSE, 0); - /* Set up the popover. */ tab_label->popover = gtk_popover_new(widget); - gtk_container_add(GTK_CONTAINER(tab_label->popover), box); + gtk_container_add(GTK_CONTAINER(tab_label->popover), button_grid); /* NB: gtk_popover_popup() is new in GTK+ 3.22. */ gtk_widget_show_all(tab_label->popover); - gtk_widget_hide(tab_list_scrolled_window); } #undef BUTTON_ROWS |