views/week: Turn GcalWeekHeader into a GtkWidget

No functional changes so far.
This commit is contained in:
Georges Basile Stavracas Neto
2025-04-04 21:00:29 -03:00
parent 7c8285bdab
commit fb52dae400
3 changed files with 56 additions and 5 deletions
+53 -2
View File
@@ -69,7 +69,7 @@ typedef struct
struct _GcalWeekHeader struct _GcalWeekHeader
{ {
GtkBox parent; GtkWidget parent;
GtkGrid *grid; GtkGrid *grid;
GtkWidget *month_label; GtkWidget *month_label;
@@ -81,6 +81,7 @@ struct _GcalWeekHeader
GtkWidget *header_labels_box; GtkWidget *header_labels_box;
GtkEventController *motion_controller; GtkEventController *motion_controller;
GtkBox *weekdays_box; GtkBox *weekdays_box;
GtkWidget *main_box;
GcalContext *context; GcalContext *context;
@@ -127,7 +128,7 @@ enum
static guint signals[LAST_SIGNAL] = { 0, }; static guint signals[LAST_SIGNAL] = { 0, };
G_DEFINE_TYPE (GcalWeekHeader, gcal_week_header, GTK_TYPE_BOX); G_DEFINE_TYPE (GcalWeekHeader, gcal_week_header, GTK_TYPE_WIDGET);
/* WeatherInfoDay methods */ /* WeatherInfoDay methods */
@@ -1317,6 +1318,40 @@ on_drop_target_motion_cb (GtkDropTarget *drop_target,
/* Drawing area content and size */ /* Drawing area content and size */
static void
gcal_week_header_measure (GtkWidget *widget,
GtkOrientation orientation,
gint for_size,
gint *minimum,
gint *natural,
gint *minimum_baseline,
gint *natural_baseline)
{
GcalWeekHeader *self = (GcalWeekHeader *) widget;
g_assert (GCAL_IS_WEEK_HEADER (self));
gtk_widget_measure (self->main_box,
orientation,
for_size,
minimum, natural,
minimum_baseline,
natural_baseline);
}
static void
gcal_week_header_size_allocate (GtkWidget *widget,
gint width,
gint height,
gint baseline)
{
GcalWeekHeader *self = (GcalWeekHeader *) widget;
g_assert (GCAL_IS_WEEK_HEADER (self));
gtk_widget_allocate (self->main_box, width, height, baseline, NULL);
}
static void static void
gcal_week_header_snapshot (GtkWidget *widget, gcal_week_header_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot) GtkSnapshot *snapshot)
@@ -1436,6 +1471,18 @@ gcal_week_header_snapshot (GtkWidget *widget,
* GObject overrides * GObject overrides
*/ */
static void
gcal_week_header_dispose (GObject *object)
{
GcalWeekHeader *self = (GcalWeekHeader *) object;
g_assert (GCAL_IS_WEEK_HEADER (self));
gtk_widget_dispose_template (GTK_WIDGET (self), GCAL_TYPE_WEEK_HEADER);
G_OBJECT_CLASS (gcal_week_header_parent_class)->dispose (object);
}
static void static void
gcal_week_header_finalize (GObject *object) gcal_week_header_finalize (GObject *object)
{ {
@@ -1459,8 +1506,11 @@ gcal_week_header_class_init (GcalWeekHeaderClass *kclass)
GObjectClass *object_class = G_OBJECT_CLASS (kclass); GObjectClass *object_class = G_OBJECT_CLASS (kclass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (kclass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (kclass);
object_class->dispose = gcal_week_header_dispose;
object_class->finalize = gcal_week_header_finalize; object_class->finalize = gcal_week_header_finalize;
widget_class->measure = gcal_week_header_measure;
widget_class->size_allocate = gcal_week_header_size_allocate;
widget_class->snapshot = gcal_week_header_snapshot; widget_class->snapshot = gcal_week_header_snapshot;
signals[EVENT_ACTIVATED] = g_signal_new ("event-activated", signals[EVENT_ACTIVATED] = g_signal_new ("event-activated",
@@ -1477,6 +1527,7 @@ gcal_week_header_class_init (GcalWeekHeaderClass *kclass)
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, expand_button_box); gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, expand_button_box);
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, grid); gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, grid);
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, header_labels_box); gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, header_labels_box);
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, main_box);
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, month_label); gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, month_label);
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, motion_controller); gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, motion_controller);
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, scrolledwindow); gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, scrolledwindow);
+1 -1
View File
@@ -30,7 +30,7 @@ G_BEGIN_DECLS
#define GCAL_TYPE_WEEK_HEADER (gcal_week_header_get_type()) #define GCAL_TYPE_WEEK_HEADER (gcal_week_header_get_type())
G_DECLARE_FINAL_TYPE (GcalWeekHeader, gcal_week_header, GCAL, WEEK_HEADER, GtkBox) G_DECLARE_FINAL_TYPE (GcalWeekHeader, gcal_week_header, GCAL, WEEK_HEADER, GtkWidget)
void gcal_week_header_set_context (GcalWeekHeader *self, void gcal_week_header_set_context (GcalWeekHeader *self,
GcalContext *context); GcalContext *context);
+2 -2
View File
@@ -1,8 +1,8 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<interface> <interface>
<template class="GcalWeekHeader" parent="GtkBox"> <template class="GcalWeekHeader" parent="GtkWidget">
<child> <child>
<object class="GtkBox"> <object class="GtkBox" id="main_box">
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="vexpand">False</property> <property name="vexpand">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>