summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-08-07 16:56:56 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-08-07 16:56:56 +0000
commit8df694a3589cf5715d270e3bc48fbf20461f106f (patch)
treed697013288a9b12623c0da9bea6362b5295d8162
parenteb8778e1cd24d7c46cd370f8836212f1f4fa967f (diff)
parent256f3a0d601b08c676703356f05afbff33b2d66e (diff)
downloadgtk+-8df694a3589cf5715d270e3bc48fbf20461f106f.tar.gz
Merge branch 'matthiasc/for-master' into 'master'
gtk-demo: Spruce up the hypertext demo See merge request GNOME/gtk!3832
-rw-r--r--demos/gtk-demo/hypertext.c75
1 files changed, 51 insertions, 24 deletions
diff --git a/demos/gtk-demo/hypertext.c b/demos/gtk-demo/hypertext.c
index ab9c988fac..63af29d654 100644
--- a/demos/gtk-demo/hypertext.c
+++ b/demos/gtk-demo/hypertext.c
@@ -61,12 +61,26 @@ show_page (GtkTextView *text_view,
int page)
{
GtkTextBuffer *buffer;
- GtkTextIter iter;
+ GtkTextIter iter, start;
+ GtkTextMark *mark;
GtkWidget *child;
GtkTextChildAnchor *anchor;
GtkEventController *controller;
+ GtkTextTag *bold, *mono, *nobreaks;
buffer = gtk_text_view_get_buffer (text_view);
+
+ bold = gtk_text_buffer_create_tag (buffer, NULL,
+ "weight", PANGO_WEIGHT_BOLD,
+ "scale", PANGO_SCALE_X_LARGE,
+ NULL);
+ mono = gtk_text_buffer_create_tag (buffer, NULL,
+ "family", "monospace",
+ NULL);
+ nobreaks = gtk_text_buffer_create_tag (buffer, NULL,
+ "allow-breaks", FALSE,
+ NULL);
+
gtk_text_buffer_set_text (buffer, "", 0);
gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
gtk_text_buffer_begin_irreversible_action (buffer);
@@ -104,17 +118,22 @@ show_page (GtkTextView *text_view,
}
else if (page == 2)
{
- GtkTextTag *tag;
-
- tag = gtk_text_buffer_create_tag (buffer, NULL,
- "weight", PANGO_WEIGHT_BOLD,
- "scale", PANGO_SCALE_X_LARGE,
- NULL);
- gtk_text_buffer_insert_with_tags (buffer, &iter, "tag", -1, tag, NULL);
- tag = gtk_text_buffer_create_tag (buffer, NULL,
- "family", "monospace",
- NULL);
- gtk_text_buffer_insert_with_tags (buffer, &iter, " / tag / ", -1, tag, NULL);
+ mark = gtk_text_buffer_create_mark (buffer, "mark", &iter, TRUE);
+
+ gtk_text_buffer_insert_with_tags (buffer, &iter, "tag", -1, bold, NULL);
+ gtk_text_buffer_insert (buffer, &iter, " /", -1);
+
+ gtk_text_buffer_get_iter_at_mark (buffer, &start, mark);
+ gtk_text_buffer_apply_tag (buffer, nobreaks, &start, &iter);
+ gtk_text_buffer_insert (buffer, &iter, " ", -1);
+
+ gtk_text_buffer_move_mark (buffer, mark, &iter);
+ gtk_text_buffer_insert_with_tags (buffer, &iter, "tag", -1, mono, NULL);
+ gtk_text_buffer_insert (buffer, &iter, " /", -1);
+
+ gtk_text_buffer_get_iter_at_mark (buffer, &start, mark);
+ gtk_text_buffer_apply_tag (buffer, nobreaks, &start, &iter);
+ gtk_text_buffer_insert (buffer, &iter, " ", -1);
anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
child = gtk_image_new_from_icon_name ("audio-volume-high-symbolic");
@@ -132,20 +151,26 @@ show_page (GtkTextView *text_view,
"behavior of mouse and key presses, “lock” a range of text so the "
"user can't edit it, or countless other things.\n", -1);
insert_link (buffer, &iter, "Go back", 1);
+
+ gtk_text_buffer_delete_mark (buffer, mark);
}
else if (page == 3)
{
- GtkTextTag *tag;
-
- tag = gtk_text_buffer_create_tag (buffer, NULL,
- "weight", PANGO_WEIGHT_BOLD,
- "scale", PANGO_SCALE_X_LARGE,
- NULL);
- gtk_text_buffer_insert_with_tags (buffer, &iter, "hypertext", -1, tag, NULL);
- tag = gtk_text_buffer_create_tag (buffer, NULL,
- "family", "monospace",
- NULL);
- gtk_text_buffer_insert_with_tags (buffer, &iter, " / ˈhaɪ pərˌtɛkst / ", -1, tag, NULL);
+ mark = gtk_text_buffer_create_mark (buffer, "mark", &iter, TRUE);
+
+ gtk_text_buffer_insert_with_tags (buffer, &iter, "hypertext", -1, bold, NULL);
+ gtk_text_buffer_insert (buffer, &iter, " /", -1);
+
+ gtk_text_buffer_get_iter_at_mark (buffer, &start, mark);
+ gtk_text_buffer_apply_tag (buffer, nobreaks, &start, &iter);
+ gtk_text_buffer_insert (buffer, &iter, " ", -1);
+
+ gtk_text_buffer_move_mark (buffer, mark, &iter);
+ gtk_text_buffer_insert_with_tags (buffer, &iter, "ˈhaɪ pərˌtɛkst", -1, mono, NULL);
+ gtk_text_buffer_insert (buffer, &iter, " /", -1);
+ gtk_text_buffer_get_iter_at_mark (buffer, &start, mark);
+ gtk_text_buffer_apply_tag (buffer, nobreaks, &start, &iter);
+ gtk_text_buffer_insert (buffer, &iter, " ", -1);
anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
child = gtk_image_new_from_icon_name ("audio-volume-high-symbolic");
@@ -159,6 +184,8 @@ show_page (GtkTextView *text_view,
"Machine-readable text that is not sequential but is organized "
"so that related items of information are connected.\n", -1);
insert_link (buffer, &iter, "Go back", 1);
+
+ gtk_text_buffer_delete_mark (buffer, mark);
}
gtk_text_buffer_end_irreversible_action (buffer);
}
@@ -358,7 +385,7 @@ do_hypertext (GtkWidget *do_widget)
sw = gtk_scrolled_window_new ();
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
- GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC);
gtk_window_set_child (GTK_WINDOW (window), sw);
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), view);