[gnome-notes] editor-toolbar: Set window accels when mapping



commit b6a7439b757d3bd306033005a7756005c1dbc443
Author: Mohammed Sadiq <sadiq sadiqpk org>
Date:   Thu Jun 24 19:13:05 2021 +0530

    editor-toolbar: Set window accels when mapping
    
    So that we don't have to keep window as a property

 src/bjb-editor-toolbar.c | 59 ++++++++++++++++++++++++------------------------
 src/bjb-editor-toolbar.h |  3 +--
 src/bjb-note-view.c      |  2 +-
 3 files changed, 31 insertions(+), 33 deletions(-)
---
diff --git a/src/bjb-editor-toolbar.c b/src/bjb-editor-toolbar.c
index 42b87f25..0cdcd13a 100644
--- a/src/bjb-editor-toolbar.c
+++ b/src/bjb-editor-toolbar.c
@@ -32,7 +32,6 @@ enum
 {
   PROP_0,
   PROP_NOTE,
-  PROP_NOTE_VIEW,
   NUM_PROPERTIES
 };
 
@@ -41,7 +40,6 @@ struct _BjbEditorToolbar
   GtkActionBar   parent_instance;
 
   /* Note provide us the WebKitWebView editor */
-  BjbNoteView   *view;
   BijiNoteObj   *note;
 
   GtkAccelGroup *accel;
@@ -55,6 +53,8 @@ struct _BjbEditorToolbar
 
   GtkWidget     *indent_button;
   GtkWidget     *outdent_button;
+
+  GtkWidget     *window;
 };
 
 G_DEFINE_TYPE (BjbEditorToolbar, bjb_editor_toolbar, GTK_TYPE_ACTION_BAR)
@@ -114,7 +114,6 @@ on_link_clicked (GtkButton        *button,
 {
   BjbSettings             *settings;
   const gchar             *link;
-  GtkWidget               *window;
   BijiNoteObj             *result;
   GdkRGBA                  color;
   BijiManager             *manager;
@@ -124,8 +123,7 @@ on_link_clicked (GtkButton        *button,
   if (link == NULL || strlen (link) == 0)
     return;
 
-  window = bjb_note_view_get_base_window (self->view);
-  manager = bjb_window_get_manager (window);
+  manager = bjb_window_get_manager (self->window);
 
   settings = bjb_app_get_settings (g_application_get_default ());
   result = biji_manager_note_new (manager,
@@ -139,6 +137,22 @@ on_link_clicked (GtkButton        *button,
   bijiben_new_window_for_note (g_application_get_default (), result);
 }
 
+static void
+bjb_editor_toolbar_map (GtkWidget *widget)
+{
+  BjbEditorToolbar *self = BJB_EDITOR_TOOLBAR (widget);
+
+  GTK_WIDGET_CLASS (bjb_editor_toolbar_parent_class)->map (widget);
+
+  if (self->window)
+    return;
+
+  self->window = gtk_widget_get_toplevel (GTK_WIDGET (self));
+  g_object_ref (self->window);
+
+  gtk_window_add_accel_group (GTK_WINDOW (self->window), self->accel);
+}
+
 static void
 bjb_editor_toolbar_get_property (GObject    *object,
                                  guint       property_id,
@@ -166,9 +180,6 @@ bjb_editor_toolbar_set_property (GObject      *object,
     case PROP_NOTE:
       self->note = g_value_get_object (value);
       break;
-    case PROP_NOTE_VIEW:
-      self->view = g_value_get_object (value);
-      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -179,16 +190,12 @@ static void
 bjb_editor_toolbar_constructed (GObject *object)
 {
   BjbEditorToolbar *self;
-  GtkWidget        *window;
   gboolean          can_format;
 
   G_OBJECT_CLASS (bjb_editor_toolbar_parent_class)->constructed (object);
 
   self = BJB_EDITOR_TOOLBAR (object);
 
-  window = bjb_note_view_get_base_window (self->view);
-  gtk_window_add_accel_group (GTK_WINDOW (window), self->accel);
-
   gtk_widget_add_accelerator (self->bold_button, "clicked", self->accel,
                               GDK_KEY_b, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
 
@@ -215,11 +222,12 @@ static void
 bjb_editor_toolbar_finalize (GObject *object)
 {
   BjbEditorToolbar *self = BJB_EDITOR_TOOLBAR (object);
-  GtkWidget *window;
 
-  window = bjb_note_view_get_base_window (self->view);
-  gtk_window_remove_accel_group (GTK_WINDOW (window), self->accel);
+  if (self->window)
+    gtk_window_remove_accel_group (GTK_WINDOW (self->window), self->accel);
+
   g_object_unref (self->accel);
+  g_clear_object (&self->window);
 
   G_OBJECT_CLASS (bjb_editor_toolbar_parent_class)->finalize (object);
 }
@@ -231,11 +239,15 @@ bjb_editor_toolbar_class_init (BjbEditorToolbarClass *klass)
   GtkWidgetClass *widget_class;
 
   object_class = G_OBJECT_CLASS (klass);
+  widget_class = GTK_WIDGET_CLASS (klass);
+
   object_class->get_property = bjb_editor_toolbar_get_property;
   object_class->set_property = bjb_editor_toolbar_set_property;
   object_class->constructed = bjb_editor_toolbar_constructed;
   object_class->finalize = bjb_editor_toolbar_finalize;
 
+  widget_class->map = bjb_editor_toolbar_map;
+
   g_object_class_install_property (object_class,
                                    PROP_NOTE,
                                    g_param_spec_object ("note",
@@ -246,17 +258,6 @@ bjb_editor_toolbar_class_init (BjbEditorToolbarClass *klass)
                                                         G_PARAM_CONSTRUCT |
                                                         G_PARAM_STATIC_STRINGS));
 
-  g_object_class_install_property (object_class,
-                                   PROP_NOTE_VIEW,
-                                   g_param_spec_object ("note-view",
-                                                        "Note View",
-                                                        "Note View",
-                                                        BJB_TYPE_NOTE_VIEW,
-                                                        G_PARAM_READWRITE |
-                                                        G_PARAM_CONSTRUCT |
-                                                        G_PARAM_STATIC_STRINGS));
-
-  widget_class = GTK_WIDGET_CLASS (klass);
   gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Notes/editor-toolbar.ui");
 
   gtk_widget_class_bind_template_child (widget_class, BjbEditorToolbar, bold_button);
@@ -286,11 +287,9 @@ bjb_editor_toolbar_init (BjbEditorToolbar *self)
 }
 
 GtkWidget *
-bjb_editor_toolbar_new (BjbNoteView *bjb_note_view,
-                        BijiNoteObj *biji_note_obj)
+bjb_editor_toolbar_new (BijiNoteObj *note)
 {
   return g_object_new (BJB_TYPE_EDITOR_TOOLBAR,
-                       "note"     , biji_note_obj,
-                       "note-view", bjb_note_view,
+                       "note", note,
                        NULL);
 }
diff --git a/src/bjb-editor-toolbar.h b/src/bjb-editor-toolbar.h
index 847143e2..44a06db6 100644
--- a/src/bjb-editor-toolbar.h
+++ b/src/bjb-editor-toolbar.h
@@ -27,7 +27,6 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (BjbEditorToolbar, bjb_editor_toolbar, BJB, EDITOR_TOOLBAR, GtkActionBar)
 
-GtkWidget *bjb_editor_toolbar_new (BjbNoteView *bjb_note_view,
-                                   BijiNoteObj *biji_note_obj);
+GtkWidget *bjb_editor_toolbar_new (BijiNoteObj *note);
 
 G_END_DECLS
diff --git a/src/bjb-note-view.c b/src/bjb-note-view.c
index 57888671..ea61b900 100644
--- a/src/bjb-note-view.c
+++ b/src/bjb-note-view.c
@@ -230,7 +230,7 @@ bjb_note_view_constructed (GObject *obj)
   /* Edition Toolbar for text selection */
   if (!biji_note_obj_is_trashed (BIJI_NOTE_OBJ (self->note)))
     {
-      self->edit_bar = bjb_editor_toolbar_new (self, self->note);
+      self->edit_bar = bjb_editor_toolbar_new (self->note);
       gtk_box_pack_start (GTK_BOX (self->box), self->edit_bar, FALSE, TRUE, 0);
     }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]