[gnome-notes] window-base: re-populate the notebooks selection menu when needed
- From: Isaque Galdino de Araujo <igaldino src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-notes] window-base: re-populate the notebooks selection menu when needed
- Date: Tue, 4 May 2021 13:10:21 +0000 (UTC)
commit 1dccd621a8fef4111aa3f8a77aa3ec86619fed36
Author: Jonathan Kang <jonathankang gnome org>
Date: Tue Feb 2 17:44:23 2021 +0800
window-base: re-populate the notebooks selection menu when needed
In previous commit, signal display-notebooks-changed was added. This
means that we can re-populate the notebooks menu when a notebook is
added/removed.
src/bjb-window-base.c | 32 ++++++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/src/bjb-window-base.c b/src/bjb-window-base.c
index 5dfaf38..8291cc5 100644
--- a/src/bjb-window-base.c
+++ b/src/bjb-window-base.c
@@ -45,6 +45,7 @@ struct _BjbWindowBase
BjbController *controller;
gchar *entry; // FIXME, remove this
+ gulong display_notebooks_changed;
GtkStack *stack;
BjbWindowViewType current_view;
@@ -83,6 +84,9 @@ struct _BjbWindowBase
/* Gobject */
G_DEFINE_TYPE (BjbWindowBase, bjb_window_base, HDY_TYPE_APPLICATION_WINDOW)
+static void get_all_notebooks_cb (GList *notebooks,
+ gpointer user_data);
+
static void
destroy_note_if_needed (BjbWindowBase *self)
{
@@ -176,11 +180,29 @@ on_title_changed (BjbWindowBase *self,
biji_note_obj_set_title (self->note, str);
}
+static void
+on_display_notebooks_changed (BjbController *controller,
+ gboolean items_to_show,
+ gboolean remaining_items,
+ BjbWindowBase *self)
+{
+ BijiManager *manager;
+
+ gtk_container_foreach (GTK_CONTAINER (self->notebooks_box),
+ (GtkCallback) gtk_widget_destroy, NULL);
+
+ manager = bjb_window_base_get_manager (GTK_WIDGET (self));
+ biji_get_all_notebooks_async (manager, NULL, get_all_notebooks_cb, self);
+}
+
static void
bjb_window_base_finalize (GObject *object)
{
BjbWindowBase *self = BJB_WINDOW_BASE (object);
+ if (self->display_notebooks_changed != 0)
+ g_signal_handler_disconnect (self->controller, self->display_notebooks_changed);
+
g_clear_object (&self->controller);
G_OBJECT_CLASS (bjb_window_base_parent_class)->finalize (object);
@@ -558,7 +580,7 @@ append_notebook (BijiItem *notebook,
gtk_label_set_xalign (GTK_LABEL (label), 0);
gtk_widget_show (button);
- gtk_box_pack_end (GTK_BOX (self->notebooks_box), button, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (self->notebooks_box), button, TRUE, TRUE, 0);
}
static int
@@ -664,8 +686,14 @@ bjb_window_base_constructed (GObject *obj)
manager = bjb_window_base_get_manager (GTK_WIDGET (self));
biji_get_all_notebooks_async (manager, NULL, get_all_notebooks_cb, self);
- /* Connection to window signals */
+ if (self->display_notebooks_changed != 0)
+ g_signal_handler_disconnect (self->controller, self->display_notebooks_changed);
+ self->display_notebooks_changed = g_signal_connect (self->controller,
+ "display-notebooks-changed",
+ G_CALLBACK (on_display_notebooks_changed),
+ self);
+ /* Connection to window signals */
g_signal_connect (GTK_WIDGET (self),
"destroy",
G_CALLBACK (bjb_window_base_destroy),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]