[libpanel] widget: add id property to PanelWidget
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libpanel] widget: add id property to PanelWidget
- Date: Sat, 17 Sep 2022 03:40:08 +0000 (UTC)
commit 2291d903d36bab24e2b91fc5c110ab9b2dd4de8f
Author: Christian Hergert <chergert redhat com>
Date: Fri Sep 16 20:17:36 2022 -0700
widget: add id property to PanelWidget
So we can use this to track state across application runs.
src/panel-widget.c | 40 ++++++++++++++++++++++++++++++++++++++++
src/panel-widget.h | 5 +++++
2 files changed, 45 insertions(+)
---
diff --git a/src/panel-widget.c b/src/panel-widget.c
index ed78e4f..33232cd 100644
--- a/src/panel-widget.c
+++ b/src/panel-widget.c
@@ -51,6 +51,7 @@
#include "panel-position.h"
#include "panel-save-delegate.h"
#include "panel-widget-private.h"
+#include "panel-macros.h"
typedef struct
{
@@ -59,6 +60,7 @@ typedef struct
char *title;
char *icon_name;
GIcon *icon;
+ char *id;
GMenuModel *menu_model;
PanelSaveDelegate *save_delegate;
PanelActionMuxer *action_muxer;
@@ -94,6 +96,7 @@ enum {
PROP_CHILD,
PROP_ICON,
PROP_ICON_NAME,
+ PROP_ID,
PROP_MENU_MODEL,
PROP_MODIFIED,
PROP_NEEDS_ATTENTION,
@@ -377,6 +380,10 @@ panel_widget_get_property (GObject *object,
g_value_set_string (value, panel_widget_get_icon_name (self));
break;
+ case PROP_ID:
+ g_value_set_string (value, panel_widget_get_id (self));
+ break;
+
case PROP_MENU_MODEL:
g_value_set_object (value, panel_widget_get_menu_model (self));
break;
@@ -436,6 +443,10 @@ panel_widget_set_property (GObject *object,
panel_widget_set_icon_name (self, g_value_get_string (value));
break;
+ case PROP_ID:
+ panel_widget_set_id (self, g_value_get_string (value));
+ break;
+
case PROP_MENU_MODEL:
panel_widget_set_menu_model (self, g_value_get_object (value));
break;
@@ -525,6 +536,13 @@ panel_widget_class_init (PanelWidgetClass *klass)
NULL,
(G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+ properties [PROP_ID] =
+ g_param_spec_string ("id",
+ "Identifier",
+ "The identifier for the widget which can be used for saving state",
+ NULL,
+ (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
properties [PROP_KIND] =
g_param_spec_string ("kind",
"Kind",
@@ -765,6 +783,28 @@ panel_widget_set_icon (PanelWidget *self,
}
}
+const char *
+panel_widget_get_id (PanelWidget *self)
+{
+ PanelWidgetPrivate *priv = panel_widget_get_instance_private (self);
+
+ g_return_val_if_fail (PANEL_IS_WIDGET (self), NULL);
+
+ return priv->id;
+}
+
+void
+panel_widget_set_id (PanelWidget *self,
+ const char *id)
+{
+ PanelWidgetPrivate *priv = panel_widget_get_instance_private (self);
+
+ g_return_if_fail (PANEL_IS_WIDGET (self));
+
+ if (panel_set_string (&priv->id, id))
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ID]);
+}
+
gboolean
panel_widget_get_modified (PanelWidget *self)
{
diff --git a/src/panel-widget.h b/src/panel-widget.h
index 7f931a4..bd16564 100644
--- a/src/panel-widget.h
+++ b/src/panel-widget.h
@@ -50,6 +50,11 @@ struct _PanelWidgetClass
PANEL_AVAILABLE_IN_ALL
GtkWidget *panel_widget_new (void);
PANEL_AVAILABLE_IN_ALL
+const char *panel_widget_get_id (PanelWidget *self);
+PANEL_AVAILABLE_IN_ALL
+void panel_widget_set_id (PanelWidget *self,
+ const char *id);
+PANEL_AVAILABLE_IN_ALL
GtkWidget *panel_widget_get_child (PanelWidget *self);
PANEL_AVAILABLE_IN_ALL
void panel_widget_set_child (PanelWidget *self,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]