[gnome-builder] libide-gui: port IdeMarkedView to GTK 4



commit d9b4141e994c303da7d0b5e1b289c74db3f6bea8
Author: Christian Hergert <chergert redhat com>
Date:   Mon Jul 11 21:50:52 2022 -0700

    libide-gui: port IdeMarkedView to GTK 4

 src/libide/gui/ide-marked-view.c | 22 ++++++++++++++++++----
 src/libide/gui/ide-marked-view.h |  2 +-
 2 files changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/src/libide/gui/ide-marked-view.c b/src/libide/gui/ide-marked-view.c
index 7bb91f78e..35417ef73 100644
--- a/src/libide/gui/ide-marked-view.c
+++ b/src/libide/gui/ide-marked-view.c
@@ -337,17 +337,32 @@ parse_markdown (const gchar *markdown,
 
 struct _IdeMarkedView
 {
-  GtkBin parent_instance;
+  GtkWidget parent_instance;
 };
 
-G_DEFINE_FINAL_TYPE (IdeMarkedView, ide_marked_view, GTK_TYPE_BIN)
+G_DEFINE_FINAL_TYPE (IdeMarkedView, ide_marked_view, GTK_TYPE_WIDGET)
+
+static void
+ide_marked_view_dispose (GObject *object)
+{
+  for (GtkWidget *child = gtk_widget_get_first_child (GTK_WIDGET (object));
+       child != NULL;
+       child = gtk_widget_get_first_child (GTK_WIDGET (object)))
+    gtk_widget_unparent (child);
+
+  G_OBJECT_CLASS (ide_marked_view_parent_class)->dispose (object);
+}
 
 static void
 ide_marked_view_class_init (IdeMarkedViewClass *klass)
 {
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
   GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
+  object_class->dispose = ide_marked_view_dispose;
+
   gtk_widget_class_set_css_name (widget_class, "markedview");
+  gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);
 }
 
 static void
@@ -422,8 +437,7 @@ ide_marked_view_new (IdeMarkedContent *content)
       break;
     }
 
-  if (child != NULL)
-    gtk_container_add (GTK_CONTAINER (self), child);
+  gtk_widget_set_parent (child, GTK_WIDGET (self));
 
   return GTK_WIDGET (self);
 }
diff --git a/src/libide/gui/ide-marked-view.h b/src/libide/gui/ide-marked-view.h
index f42158425..1c2780e85 100644
--- a/src/libide/gui/ide-marked-view.h
+++ b/src/libide/gui/ide-marked-view.h
@@ -33,8 +33,8 @@ G_BEGIN_DECLS
 
 #define IDE_TYPE_MARKED_VIEW (ide_marked_view_get_type())
 
-G_DECLARE_FINAL_TYPE (IdeMarkedView, ide_marked_view, IDE, MARKED_VIEW, GtkBin)
 IDE_AVAILABLE_IN_ALL
+G_DECLARE_FINAL_TYPE (IdeMarkedView, ide_marked_view, IDE, MARKED_VIEW, GtkWidget)
 
 IDE_AVAILABLE_IN_ALL
 GtkWidget *ide_marked_view_new (IdeMarkedContent *content);


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