[libhandy] keypad: Add spacing properties
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libhandy] keypad: Add spacing properties
- Date: Wed, 27 May 2020 10:16:34 +0000 (UTC)
commit 6c6425a57c02b65b842606fe8d4eaf036945f8e9
Author: Adrien Plazas <kekun plazas laposte net>
Date: Tue May 26 14:21:30 2020 +0200
keypad: Add spacing properties
This adds the row-spacing and column-spacing properties.
Fixes https://gitlab.gnome.org/GNOME/libhandy/issues/251.
src/hdy-keypad.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/hdy-keypad.h | 6 +++
src/hdy-keypad.ui | 2 +
3 files changed, 137 insertions(+)
---
diff --git a/src/hdy-keypad.c b/src/hdy-keypad.c
index 065fc89f..dd46a74a 100644
--- a/src/hdy-keypad.c
+++ b/src/hdy-keypad.c
@@ -33,6 +33,8 @@ typedef struct
GtkWidget *label_asterisk;
GtkWidget *label_hash;
GtkGesture *long_press_zero_gesture;
+ guint16 row_spacing;
+ guint16 column_spacing;
gboolean only_digits;
gboolean show_symbols;
} HdyKeypadPrivate;
@@ -41,6 +43,8 @@ G_DEFINE_TYPE_WITH_PRIVATE (HdyKeypad, hdy_keypad, GTK_TYPE_BIN)
enum {
PROP_0,
+ PROP_ROW_SPACING,
+ PROP_COLUMN_SPACING,
PROP_SHOW_SYMBOLS,
PROP_ONLY_DIGITS,
PROP_ENTRY,
@@ -165,6 +169,14 @@ hdy_keypad_set_property (GObject *object,
HdyKeypadPrivate *priv = hdy_keypad_get_instance_private (self);
switch (property_id) {
+ case PROP_ROW_SPACING:
+ hdy_keypad_set_row_spacing (self, g_value_get_uint (value));
+ break;
+
+ case PROP_COLUMN_SPACING:
+ hdy_keypad_set_column_spacing (self, g_value_get_uint (value));
+ break;
+
case PROP_SHOW_SYMBOLS:
hdy_keypad_show_symbols (self, g_value_get_boolean (value));
break;
@@ -200,6 +212,14 @@ hdy_keypad_get_property (GObject *object,
HdyKeypadPrivate *priv = hdy_keypad_get_instance_private (self);
switch (property_id) {
+ case PROP_ROW_SPACING:
+ g_value_set_uint (value, priv->row_spacing);
+ break;
+
+ case PROP_COLUMN_SPACING:
+ g_value_set_uint (value, priv->column_spacing);
+ break;
+
case PROP_SHOW_SYMBOLS:
g_value_set_boolean (value, priv->show_symbols);
break;
@@ -239,6 +259,20 @@ hdy_keypad_class_init (HdyKeypadClass *klass)
object_class->set_property = hdy_keypad_set_property;
object_class->get_property = hdy_keypad_get_property;
+ props[PROP_ROW_SPACING] =
+ g_param_spec_uint ("row-spacing",
+ _("Row spacing"),
+ _("The amount of space between two consecutive rows"),
+ 0, G_MAXINT16, 0,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
+ props[PROP_COLUMN_SPACING] =
+ g_param_spec_uint ("column-spacing",
+ _("Column spacing"),
+ _("The amount of space between two consecutive columns"),
+ 0, G_MAXINT16, 0,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
props[PROP_SHOW_SYMBOLS] =
g_param_spec_boolean ("show-symbols",
_("Show Symbols"),
@@ -320,6 +354,101 @@ hdy_keypad_new (gboolean only_digits,
NULL);
}
+/**
+ * hdy_keypad_set_row_spacing:
+ * @self: a #HdyKeypad
+ * @spacing: the amount of space to insert between rows
+ *
+ * Sets the amount of space between rows of @self.
+ */
+void
+hdy_keypad_set_row_spacing (HdyKeypad *self,
+ guint spacing)
+{
+ HdyKeypadPrivate *priv;
+
+ g_return_if_fail (HDY_IS_KEYPAD (self));
+ g_return_if_fail (spacing <= G_MAXINT16);
+
+ priv = hdy_keypad_get_instance_private (self);
+
+ if (priv->row_spacing == spacing)
+ return;
+
+ priv->row_spacing = spacing;
+
+ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ROW_SPACING]);
+}
+
+
+/**
+ * hdy_keypad_get_row_spacing:
+ * @self: a #HdyKeypad
+ *
+ * Returns the amount of space between the rows of @self.
+ *
+ * Returns: the row spacing of @self
+ */
+guint
+hdy_keypad_get_row_spacing (HdyKeypad *self)
+{
+ HdyKeypadPrivate *priv;
+
+ g_return_val_if_fail (HDY_IS_KEYPAD (self), 0);
+
+ priv = hdy_keypad_get_instance_private (self);
+
+ return priv->row_spacing;
+}
+
+
+/**
+ * hdy_keypad_set_column_spacing:
+ * @self: a #HdyKeypad
+ * @spacing: the amount of space to insert between columns
+ *
+ * Sets the amount of space between columns of @self.
+ */
+void
+hdy_keypad_set_column_spacing (HdyKeypad *self,
+ guint spacing)
+{
+ HdyKeypadPrivate *priv;
+
+ g_return_if_fail (HDY_IS_KEYPAD (self));
+ g_return_if_fail (spacing <= G_MAXINT16);
+
+ priv = hdy_keypad_get_instance_private (self);
+
+ if (priv->column_spacing == spacing)
+ return;
+
+ priv->column_spacing = spacing;
+
+ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_COLUMN_SPACING]);
+}
+
+
+/**
+ * hdy_keypad_get_column_spacing:
+ * @self: a #HdyKeypad
+ *
+ * Returns the amount of space between the columns of @self.
+ *
+ * Returns: the column spacing of @self
+ */
+guint
+hdy_keypad_get_column_spacing (HdyKeypad *self)
+{
+ HdyKeypadPrivate *priv;
+
+ g_return_val_if_fail (HDY_IS_KEYPAD (self), 0);
+
+ priv = hdy_keypad_get_instance_private (self);
+
+ return priv->column_spacing;
+}
+
/**
* hdy_keypad_show_symbols:
diff --git a/src/hdy-keypad.h b/src/hdy-keypad.h
index 49fc9e43..65fe9671 100644
--- a/src/hdy-keypad.h
+++ b/src/hdy-keypad.h
@@ -29,6 +29,12 @@ struct _HdyKeypadClass
GtkWidget *hdy_keypad_new (gboolean only_digits,
gboolean show_symbols);
+void hdy_keypad_set_row_spacing (HdyKeypad *self,
+ guint spacing);
+guint hdy_keypad_get_row_spacing (HdyKeypad *self);
+void hdy_keypad_set_column_spacing (HdyKeypad *self,
+ guint spacing);
+guint hdy_keypad_get_column_spacing (HdyKeypad *self);
void hdy_keypad_show_symbols (HdyKeypad *self,
gboolean visible);
void hdy_keypad_set_entry (HdyKeypad *self,
diff --git a/src/hdy-keypad.ui b/src/hdy-keypad.ui
index 35006459..6c6e732c 100644
--- a/src/hdy-keypad.ui
+++ b/src/hdy-keypad.ui
@@ -8,6 +8,8 @@
<property name="can_focus">True</property>
<property name="hexpand">False</property>
<property name="vexpand">False</property>
+ <property name="row-spacing" bind-source="HdyKeypad" bind-property="row-spacing"
bind-flags="sync-create"/>
+ <property name="column-spacing" bind-source="HdyKeypad" bind-property="column-spacing"
bind-flags="sync-create"/>
<property name="column_homogeneous">True</property>
<property name="column_homogeneous">True</property>
<child>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]