summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2017-12-30 09:02:47 -0500
committerMatthias Clasen <mclasen@redhat.com>2017-12-30 18:34:17 -0500
commit5625155755b46720e6dad7f949f43620595a2725 (patch)
treef91545f97145095cbe50e99a9cac67c0526efed9
parent71f2f2be678b69da002214e75f1582af47be0c3f (diff)
downloadgtk+-5625155755b46720e6dad7f949f43620595a2725.tar.gz
gtk-demo: Revise the font features demo a bit
Add an edit button. Clicking on the label is not very obvious, and we want to make the label selectable in the future.
-rw-r--r--demos/gtk-demo/font-features.ui30
-rw-r--r--demos/gtk-demo/font_features.c24
2 files changed, 37 insertions, 17 deletions
diff --git a/demos/gtk-demo/font-features.ui b/demos/gtk-demo/font-features.ui
index 0c0cfc864e..6ddd98fb90 100644
--- a/demos/gtk-demo/font-features.ui
+++ b/demos/gtk-demo/font-features.ui
@@ -120,13 +120,13 @@
<object class="GtkBox">
<property name="visible">1</property>
<property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <property name="margin">20</property>
+ <property name="spacing">20</property>
<child>
<object class="GtkStack" id="stack">
<property name="visible">1</property>
- <property name="margin-start">20</property>
- <property name="margin-end">20</property>
- <property name="margin-top">20</property>
- <property name="margin-bottom">20</property>
<child>
<object class="GtkLabel" id="label">
<property name="visible">1</property>
@@ -134,7 +134,6 @@
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="valign">start</property>
- <signal name="button-press-event" handler="switch_to_entry"/>
</object>
<packing>
<property name="name">label</property>
@@ -149,7 +148,7 @@
Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός</property>
<signal name="key-press-event" handler="entry_key_press"/>
- <signal name="activate" handler="switch_to_label"/>
+ <signal name="activate" handler="stop_edit"/>
<property name="valign">start</property>
<property name="width-chars">50</property>
</object>
@@ -163,9 +162,6 @@
<object class="GtkLabel" id="settings">
<property name="visible">1</property>
<property name="wrap">1</property>
- <property name="margin-start">20</property>
- <property name="margin-end">20</property>
- <property name="margin-bottom">20</property>
<property name="xalign">0</property>
<property name="valign">end</property>
<property name="width-chars">50</property>
@@ -178,12 +174,12 @@
</object>
</child>
<child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <child>
<object class="GtkLabel" id="description">
<property name="visible">1</property>
<property name="wrap">1</property>
- <property name="margin-start">20</property>
- <property name="margin-end">20</property>
- <property name="margin-bottom">20</property>
<property name="xalign">0</property>
<property name="valign">end</property>
<property name="width-chars">50</property>
@@ -194,8 +190,14 @@
</style>
</object>
</child>
- <property name="hexpand">1</property>
- <property name="vexpand">1</property>
+ <child>
+ <object class="GtkToggleButton" id="edit_toggle">
+ <property name="icon-name">document-edit-symbolic</property>
+ <signal name="toggled" handler="toggle_edit"/>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
</object>
diff --git a/demos/gtk-demo/font_features.c b/demos/gtk-demo/font_features.c
index 56450f69af..9b70f6085e 100644
--- a/demos/gtk-demo/font_features.c
+++ b/demos/gtk-demo/font_features.c
@@ -40,6 +40,7 @@ static GtkWidget *entry;
static GtkWidget *variations_heading;
static GtkWidget *variations_grid;
static GtkWidget *instance_combo;
+static GtkWidget *edit_toggle;
typedef struct {
unsigned int tag;
@@ -1512,6 +1513,7 @@ switch_to_entry (void)
{
text = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
gtk_stack_set_visible_child_name (GTK_STACK (stack), "entry");
+ gtk_widget_grab_focus (entry);
}
static void
@@ -1523,6 +1525,21 @@ switch_to_label (void)
update_display ();
}
+static void
+toggle_edit (void)
+{
+ if (strcmp (gtk_stack_get_visible_child_name (GTK_STACK (stack)), "label") == 0)
+ switch_to_entry ();
+ else
+ switch_to_label ();
+}
+
+static void
+stop_edit (void)
+{
+ gtk_button_clicked (GTK_BUTTON (edit_toggle));
+}
+
static gboolean
entry_key_press (GtkEntry *entry, GdkEventKey *event)
{
@@ -1533,7 +1550,7 @@ entry_key_press (GtkEntry *entry, GdkEventKey *event)
if (keyval == GDK_KEY_Escape)
{
gtk_entry_set_text (GTK_ENTRY (entry), text);
- switch_to_label ();
+ stop_edit ();
return GDK_EVENT_STOP;
}
@@ -1556,8 +1573,8 @@ do_font_features (GtkWidget *do_widget)
gtk_builder_add_callback_symbol (builder, "font_changed", font_changed);
gtk_builder_add_callback_symbol (builder, "script_changed", script_changed);
gtk_builder_add_callback_symbol (builder, "reset", reset_features);
- gtk_builder_add_callback_symbol (builder, "switch_to_entry", switch_to_entry);
- gtk_builder_add_callback_symbol (builder, "switch_to_label", switch_to_label);
+ gtk_builder_add_callback_symbol (builder, "stop_edit", G_CALLBACK (stop_edit));
+ gtk_builder_add_callback_symbol (builder, "toggle_edit", G_CALLBACK (toggle_edit));
gtk_builder_add_callback_symbol (builder, "entry_key_press", G_CALLBACK (entry_key_press));
gtk_builder_connect_signals (builder, NULL);
@@ -1571,6 +1588,7 @@ do_font_features (GtkWidget *do_widget)
script_lang = GTK_WIDGET (gtk_builder_get_object (builder, "script_lang"));
stack = GTK_WIDGET (gtk_builder_get_object (builder, "stack"));
entry = GTK_WIDGET (gtk_builder_get_object (builder, "entry"));
+ edit_toggle = GTK_WIDGET (gtk_builder_get_object (builder, "edit_toggle"));
add_check_group (feature_list, _("Kerning"), (const char *[]){ "kern", NULL });
add_check_group (feature_list, _("Ligatures"), (const char *[]){ "liga",