[epiphany] Fix Cannot select previously selected tab on Tabs page
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany] Fix Cannot select previously selected tab on Tabs page
- Date: Wed, 24 Apr 2019 21:39:45 +0000 (UTC)
commit 6efbe67a84377a8d2e7d597681be3896b79930b8
Author: Jan-Michael Brummer <jan brummer tabos org>
Date: Wed Apr 24 18:25:01 2019 +0200
Fix Cannot select previously selected tab on Tabs page
Set tabs page list box to non selection mode and switch to row-activated.
Fixes: https://gitlab.gnome.org/GNOME/epiphany/issues/740
src/ephy-pages-view.c | 37 +++++--------------------------------
src/resources/gtk/pages-view.ui | 2 +-
2 files changed, 6 insertions(+), 33 deletions(-)
---
diff --git a/src/ephy-pages-view.c b/src/ephy-pages-view.c
index 73bc1be60..77b9e8741 100644
--- a/src/ephy-pages-view.c
+++ b/src/ephy-pages-view.c
@@ -66,10 +66,9 @@ create_row (gpointer item,
}
static void
-row_selected_cb (EphyPagesView *self,
- GtkListBoxRow *row)
+row_activated_cb (EphyPagesView *self,
+ GtkListBoxRow *row)
{
- gint current_page;
gint new_page;
EphyWindow *window;
GtkWidget *stack;
@@ -85,10 +84,7 @@ row_selected_cb (EphyPagesView *self,
if (!row)
return;
- current_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (self->notebook));
new_page = gtk_list_box_row_get_index (row);
- if (current_page == new_page)
- return;
gtk_notebook_set_current_page (GTK_NOTEBOOK (self->notebook), new_page);
gtk_stack_set_visible_child_name (GTK_STACK (stack), "content");
@@ -105,23 +101,6 @@ row_closed_cb (EphyPagesView *self,
gtk_list_box_row_get_index (GTK_LIST_BOX_ROW (row)));
}
-static void
-current_page_changed_cb (EphyPagesView *self)
-{
- GtkListBoxRow *current_row, *new_row;
- gint current_page;
-
- g_assert (EPHY_IS_PAGES_VIEW (self));
-
- current_row = gtk_list_box_get_selected_row (self->list_box);
- current_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (self->notebook));
- if (current_row && gtk_list_box_row_get_index (current_row) == current_page)
- return;
-
- new_row = gtk_list_box_get_row_at_index (self->list_box, current_page);
- gtk_list_box_select_row (self->list_box, new_row);
-}
-
static void
items_changed_cb (EphyPagesView *self,
gint position,
@@ -139,8 +118,6 @@ items_changed_cb (EphyPagesView *self,
}
g_list_store_splice (self->list_store, position, removed, (gpointer) items, added);
-
- current_page_changed_cb (self);
}
static void
@@ -174,7 +151,7 @@ ephy_pages_view_class_init (EphyPagesViewClass *klass)
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/epiphany/gtk/pages-view.ui");
gtk_widget_class_bind_template_child (widget_class, EphyPagesView, list_box);
- gtk_widget_class_bind_template_callback (widget_class, row_selected_cb);
+ gtk_widget_class_bind_template_callback (widget_class, row_activated_cb);
}
static void
@@ -201,6 +178,8 @@ ephy_pages_view_init (EphyPagesView *self)
self->list_store = g_list_store_new (EPHY_TYPE_PAGE_ROW);
+ gtk_list_box_set_selection_mode (self->list_box, GTK_SELECTION_NONE);
+
ephy_pages_view_set_adaptive_mode (self, EPHY_ADAPTIVE_MODE_NARROW);
gtk_list_box_bind_model (self->list_box,
G_LIST_MODEL (self->list_store),
@@ -244,18 +223,12 @@ ephy_pages_view_set_notebook (EphyPagesView *self,
items_changed_cb (self, 0, 0,
g_menu_model_get_n_items (G_MENU_MODEL (pages_menu)),
G_MENU_MODEL (pages_menu));
- current_page_changed_cb (self);
g_signal_connect_object (pages_menu,
"items-changed",
G_CALLBACK (items_changed_cb),
self,
G_CONNECT_SWAPPED);
- g_signal_connect_object (notebook,
- "notify::page",
- G_CALLBACK (current_page_changed_cb),
- self,
- G_CONNECT_SWAPPED);
}
void
diff --git a/src/resources/gtk/pages-view.ui b/src/resources/gtk/pages-view.ui
index 1c968d307..ec0a1fd22 100644
--- a/src/resources/gtk/pages-view.ui
+++ b/src/resources/gtk/pages-view.ui
@@ -10,7 +10,7 @@
<property name="selection_mode">single</property>
<property name="visible">True</property>
<property name="width_request">300</property>
- <signal name="row-selected" handler="row_selected_cb" swapped="true"/>
+ <signal name="row-activated" handler="row_activated_cb" swapped="true"/>
</object>
</child>
</template>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]