[gnome-software/wip/inline-lozenge-layout] build: Inline GsLozengeLayout into gs-lozenge.c
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/inline-lozenge-layout] build: Inline GsLozengeLayout into gs-lozenge.c
- Date: Wed, 18 May 2022 06:16:56 +0000 (UTC)
commit c00fa3ff41c70da89e0a0ec72405533a2f88ecc7
Author: Milan Crha <mcrha redhat com>
Date: Wed May 18 08:14:32 2022 +0200
build: Inline GsLozengeLayout into gs-lozenge.c
This follows the pattern of the other descendants of the GsLayoutManager
to inline the layout into the source where it's used, without providing
unneeded overhead with a code not being used at all/anywhere else.
src/gs-lozenge-layout.c | 179 ------------------------------------------------
src/gs-lozenge-layout.h | 28 --------
src/gs-lozenge.c | 59 +++++++++++++++-
src/meson.build | 1 -
4 files changed, 57 insertions(+), 210 deletions(-)
---
diff --git a/src/gs-lozenge.c b/src/gs-lozenge.c
index 39886cf73..6e7cff2a0 100644
--- a/src/gs-lozenge.c
+++ b/src/gs-lozenge.c
@@ -9,7 +9,61 @@
#include "config.h"
#include "gs-lozenge.h"
-#include "gs-lozenge-layout.h"
+#include "gs-layout-manager.h"
+
+#define GS_TYPE_LOZENGE_LAYOUT (gs_lozenge_layout_get_type ())
+G_DECLARE_FINAL_TYPE (GsLozengeLayout, gs_lozenge_layout, GS, LOZENGE_LAYOUT, GsLayoutManager)
+
+struct _GsLozengeLayout
+{
+ GsLayoutManager parent_instance;
+
+ gboolean circular;
+};
+
+G_DEFINE_TYPE (GsLozengeLayout, gs_lozenge_layout, GS_TYPE_LAYOUT_MANAGER)
+
+static void
+gs_lozenge_layout_measure (GtkLayoutManager *layout_manager,
+ GtkWidget *widget,
+ GtkOrientation orientation,
+ gint for_size,
+ gint *minimum,
+ gint *natural,
+ gint *minimum_baseline,
+ gint *natural_baseline)
+{
+ GsLozengeLayout *self = GS_LOZENGE_LAYOUT (layout_manager);
+
+ GTK_LAYOUT_MANAGER_CLASS (gs_lozenge_layout_parent_class)->measure (layout_manager,
+ widget, orientation, for_size, minimum, natural, minimum_baseline, natural_baseline);
+
+ if (self->circular) {
+ *minimum = MAX (for_size, *minimum);
+ *natural = *minimum;
+ *natural_baseline = *minimum_baseline;
+ }
+
+ if (*natural_baseline > *natural)
+ *natural_baseline = *natural;
+ if (*minimum_baseline > *minimum)
+ *minimum_baseline = *minimum;
+}
+
+static void
+gs_lozenge_layout_class_init (GsLozengeLayoutClass *klass)
+{
+ GtkLayoutManagerClass *layout_manager_class = GTK_LAYOUT_MANAGER_CLASS (klass);
+
+ layout_manager_class->measure = gs_lozenge_layout_measure;
+}
+
+static void
+gs_lozenge_layout_init (GsLozengeLayout *self)
+{
+}
+
+/* ********************************************************************* */
struct _GsLozenge
{
@@ -245,7 +299,8 @@ gs_lozenge_set_circular (GsLozenge *self,
self->circular = value;
layout_manager = gtk_widget_get_layout_manager (GTK_WIDGET (self));
- gs_lozenge_layout_set_circular (GS_LOZENGE_LAYOUT (layout_manager), self->circular);
+ GS_LOZENGE_LAYOUT (layout_manager)->circular = self->circular;
+ gtk_layout_manager_layout_changed (layout_manager);
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_CIRCULAR]);
}
diff --git a/src/meson.build b/src/meson.build
index 1b5858691..3e866ee47 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -54,7 +54,6 @@ gnome_software_sources = [
'gs-license-tile.c',
'gs-loading-page.c',
'gs-lozenge.c',
- 'gs-lozenge-layout.c',
'gs-main.c',
'gs-metered-data-dialog.c',
'gs-moderate-page.c',
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]