Skip to main content

gtk4/auto/
text_tag.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5use crate::{Justification, TextDirection, WrapMode, ffi};
6use glib::{
7    prelude::*,
8    signal::{SignalHandlerId, connect_raw},
9    translate::*,
10};
11use std::boxed::Box as Box_;
12
13glib::wrapper! {
14    /// Can be applied to text contained in a [`TextBuffer`][crate::TextBuffer].
15    ///
16    /// You may wish to begin by reading the
17    /// [text widget conceptual overview](section-text-widget.html),
18    /// which gives an overview of all the objects and data types
19    /// related to the text widget and how they work together.
20    ///
21    /// Tags should be in the [`TextTagTable`][crate::TextTagTable] for a given
22    /// [`TextBuffer`][crate::TextBuffer] before using them with that buffer.
23    ///
24    /// [`TextBufferExtManual::create_tag()`][crate::prelude::TextBufferExtManual::create_tag()] is the best way to create tags.
25    /// See “gtk4-demo” for numerous examples.
26    ///
27    /// For each property of [`TextTag`][crate::TextTag], there is a “set” property, e.g.
28    /// “font-set” corresponds to “font”. These “set” properties reflect
29    /// whether a property has been set or not.
30    ///
31    /// They are maintained by GTK and you should not set them independently.
32    ///
33    /// ## Properties
34    ///
35    ///
36    /// #### `accumulative-margin`
37    ///  Whether the margins accumulate or override each other.
38    ///
39    /// When set to [`true`] the margins of this tag are added to the margins
40    /// of any other non-accumulative margins present. When set to [`false`]
41    /// the margins override one another (the default).
42    ///
43    /// Readable | Writeable
44    ///
45    ///
46    /// #### `allow-breaks`
47    ///  Whether breaks are allowed.
48    ///
49    /// Readable | Writeable
50    ///
51    ///
52    /// #### `allow-breaks-set`
53    ///  Whether the `allow-breaks` property is set.
54    ///
55    /// Readable | Writeable
56    ///
57    ///
58    /// #### `background`
59    ///  Background color as a string.
60    ///
61    /// Writeable
62    ///
63    ///
64    /// #### `background-full-height`
65    ///  Whether the background color fills the entire line height
66    /// or only the height of the tagged characters.
67    ///
68    /// Readable | Writeable
69    ///
70    ///
71    /// #### `background-full-height-set`
72    ///  Whether the `background-full-height` property is set.
73    ///
74    /// Readable | Writeable
75    ///
76    ///
77    /// #### `background-rgba`
78    ///  Background color as a [`gdk::RGBA`][crate::gdk::RGBA].
79    ///
80    /// Readable | Writeable
81    ///
82    ///
83    /// #### `background-set`
84    ///  Whether the `background` property is set.
85    ///
86    /// Readable | Writeable
87    ///
88    ///
89    /// #### `direction`
90    ///  Text direction, e.g. right-to-left or left-to-right.
91    ///
92    /// Readable | Writeable
93    ///
94    ///
95    /// #### `editable`
96    ///  Whether the text can be modified by the user.
97    ///
98    /// Readable | Writeable
99    ///
100    ///
101    /// #### `editable-set`
102    ///  Whether the `editable` property is set.
103    ///
104    /// Readable | Writeable
105    ///
106    ///
107    /// #### `fallback`
108    ///  Whether font fallback is enabled.
109    ///
110    /// When set to [`true`], other fonts will be substituted
111    /// where the current font is missing glyphs.
112    ///
113    /// Readable | Writeable
114    ///
115    ///
116    /// #### `fallback-set`
117    ///  Whether the `fallback` property is set.
118    ///
119    /// Readable | Writeable
120    ///
121    ///
122    /// #### `family`
123    ///  Name of the font family, e.g. Sans, Helvetica, Times, Monospace.
124    ///
125    /// Readable | Writeable
126    ///
127    ///
128    /// #### `family-set`
129    ///  Whether the `family` property is set.
130    ///
131    /// Readable | Writeable
132    ///
133    ///
134    /// #### `font`
135    ///  Font description as string, e.g. \"Sans Italic 12\".
136    ///
137    /// Note that the initial value of this property depends on
138    /// the internals of [`pango::FontDescription`][crate::pango::FontDescription].
139    ///
140    /// Readable | Writeable
141    ///
142    ///
143    /// #### `font-desc`
144    ///  Font description as a [`pango::FontDescription`][crate::pango::FontDescription].
145    ///
146    /// Readable | Writeable
147    ///
148    ///
149    /// #### `font-features`
150    ///  OpenType font features, as a string.
151    ///
152    /// Readable | Writeable
153    ///
154    ///
155    /// #### `font-features-set`
156    ///  Whether the `font-features` property is set.
157    ///
158    /// Readable | Writeable
159    ///
160    ///
161    /// #### `foreground`
162    ///  Foreground color as a string.
163    ///
164    /// Writeable
165    ///
166    ///
167    /// #### `foreground-rgba`
168    ///  Foreground color as a [`gdk::RGBA`][crate::gdk::RGBA].
169    ///
170    /// Readable | Writeable
171    ///
172    ///
173    /// #### `foreground-set`
174    ///  Whether the `foreground` property is set.
175    ///
176    /// Readable | Writeable
177    ///
178    ///
179    /// #### `indent`
180    ///  Amount to indent the paragraph, in pixels.
181    ///
182    /// A negative value of indent will produce a hanging indentation.
183    /// That is, the first line will have the full width, and subsequent
184    /// lines will be indented by the absolute value of indent.
185    ///
186    /// Readable | Writeable
187    ///
188    ///
189    /// #### `indent-set`
190    ///  Whether the `indent` property is set.
191    ///
192    /// Readable | Writeable
193    ///
194    ///
195    /// #### `insert-hyphens`
196    ///  Whether to insert hyphens at breaks.
197    ///
198    /// Readable | Writeable
199    ///
200    ///
201    /// #### `insert-hyphens-set`
202    ///  Whether the `insert-hyphens` property is set.
203    ///
204    /// Readable | Writeable
205    ///
206    ///
207    /// #### `invisible`
208    ///  Whether this text is hidden.
209    ///
210    /// Note that there may still be problems with the support for invisible
211    /// text, in particular when navigating programmatically inside a buffer
212    /// containing invisible segments.
213    ///
214    /// Readable | Writeable
215    ///
216    ///
217    /// #### `invisible-set`
218    ///  Whether the `invisible` property is set.
219    ///
220    /// Readable | Writeable
221    ///
222    ///
223    /// #### `justification`
224    ///  Left, right, or center justification.
225    ///
226    /// Readable | Writeable
227    ///
228    ///
229    /// #### `justification-set`
230    ///  Whether the `justification` property is set.
231    ///
232    /// Readable | Writeable
233    ///
234    ///
235    /// #### `language`
236    ///  The language this text is in, as an ISO code.
237    ///
238    /// Pango can use this as a hint when rendering the text.
239    /// If not set, an appropriate default will be used.
240    ///
241    /// Note that the initial value of this property depends
242    /// on the current locale, see also [`default_language()`][crate::default_language()].
243    ///
244    /// Readable | Writeable
245    ///
246    ///
247    /// #### `language-set`
248    ///  Whether the `language` property is set.
249    ///
250    /// Readable | Writeable
251    ///
252    ///
253    /// #### `left-margin`
254    ///  Width of the left margin in pixels.
255    ///
256    /// Readable | Writeable
257    ///
258    ///
259    /// #### `left-margin-set`
260    ///  Whether the `left-margin` property is set.
261    ///
262    /// Readable | Writeable
263    ///
264    ///
265    /// #### `letter-spacing`
266    ///  Extra spacing between graphemes, in Pango units.
267    ///
268    /// Readable | Writeable
269    ///
270    ///
271    /// #### `letter-spacing-set`
272    ///  Whether the `letter-spacing` property is set.
273    ///
274    /// Readable | Writeable
275    ///
276    ///
277    /// #### `line-height`
278    ///  Factor to scale line height by.
279    ///
280    /// Readable | Writeable
281    ///
282    ///
283    /// #### `line-height-set`
284    ///  Whether the `line-height` property is set.
285    ///
286    /// Readable | Writeable
287    ///
288    ///
289    /// #### `name`
290    ///  The name used to refer to the tag.
291    ///
292    /// [`None`] for anonymous tags.
293    ///
294    /// Readable | Writeable | Construct Only
295    ///
296    ///
297    /// #### `overline`
298    ///  Style of overline for this text.
299    ///
300    /// Readable | Writeable
301    ///
302    ///
303    /// #### `overline-rgba`
304    ///  This property modifies the color of overlines.
305    ///
306    /// If not set, overlines will use the foreground color.
307    ///
308    /// Readable | Writeable
309    ///
310    ///
311    /// #### `overline-rgba-set`
312    ///  Whether the `overline-rgba` property is set.
313    ///
314    /// Readable | Writeable
315    ///
316    ///
317    /// #### `overline-set`
318    ///  Whether the `overline` property is set.
319    ///
320    /// Readable | Writeable
321    ///
322    ///
323    /// #### `paragraph-background`
324    ///  The paragraph background color as a string.
325    ///
326    /// Writeable
327    ///
328    ///
329    /// #### `paragraph-background-rgba`
330    ///  The paragraph background color as a [`gdk::RGBA`][crate::gdk::RGBA].
331    ///
332    /// Readable | Writeable
333    ///
334    ///
335    /// #### `paragraph-background-set`
336    ///  Whether the `paragraph-background` property is set.
337    ///
338    /// Readable | Writeable
339    ///
340    ///
341    /// #### `pixels-above-lines`
342    ///  Pixels of blank space above paragraphs.
343    ///
344    /// Readable | Writeable
345    ///
346    ///
347    /// #### `pixels-above-lines-set`
348    ///  Whether the `pixels-above-lines` property is set.
349    ///
350    /// Readable | Writeable
351    ///
352    ///
353    /// #### `pixels-below-lines`
354    ///  Pixels of blank space below paragraphs.
355    ///
356    /// Readable | Writeable
357    ///
358    ///
359    /// #### `pixels-below-lines-set`
360    ///  Whether the `pixels-below-lines` property is set.
361    ///
362    /// Readable | Writeable
363    ///
364    ///
365    /// #### `pixels-inside-wrap`
366    ///  Pixels of blank space between wrapped lines in a paragraph.
367    ///
368    /// Readable | Writeable
369    ///
370    ///
371    /// #### `pixels-inside-wrap-set`
372    ///  Whether the `pixels-inside-wrap` property is set.
373    ///
374    /// Readable | Writeable
375    ///
376    ///
377    /// #### `right-margin`
378    ///  Width of the right margin, in pixels.
379    ///
380    /// Readable | Writeable
381    ///
382    ///
383    /// #### `right-margin-set`
384    ///  Whether the `right-margin` property is set.
385    ///
386    /// Readable | Writeable
387    ///
388    ///
389    /// #### `rise`
390    ///  Offset of text above the baseline, in Pango units.
391    ///
392    /// Negative values go below the baseline.
393    ///
394    /// Readable | Writeable
395    ///
396    ///
397    /// #### `rise-set`
398    ///  Whether the `rise` property is set.
399    ///
400    /// Readable | Writeable
401    ///
402    ///
403    /// #### `scale`
404    ///  Font size as a scale factor relative to the default font size.
405    ///
406    /// This properly adapts to theme changes, etc. so is recommended.
407    /// Pango predefines some scales such as `PANGO_SCALE_X_LARGE`.
408    ///
409    /// Readable | Writeable
410    ///
411    ///
412    /// #### `scale-set`
413    ///  Whether the `scale` property is set.
414    ///
415    /// Readable | Writeable
416    ///
417    ///
418    /// #### `sentence`
419    ///  Whether this tag represents a single sentence.
420    ///
421    /// This affects cursor movement.
422    ///
423    /// Readable | Writeable
424    ///
425    ///
426    /// #### `sentence-set`
427    ///  Whether the `sentence` property is set.
428    ///
429    /// Readable | Writeable
430    ///
431    ///
432    /// #### `show-spaces`
433    ///  How to render invisible characters.
434    ///
435    /// Readable | Writeable
436    ///
437    ///
438    /// #### `show-spaces-set`
439    ///  Whether the `show-spaces` property is set.
440    ///
441    /// Readable | Writeable
442    ///
443    ///
444    /// #### `size`
445    ///  Font size in Pango units.
446    ///
447    /// Readable | Writeable
448    ///
449    ///
450    /// #### `size-points`
451    ///  Font size in points.
452    ///
453    /// Readable | Writeable
454    ///
455    ///
456    /// #### `size-set`
457    ///  Whether the `size` property is set.
458    ///
459    /// Readable | Writeable
460    ///
461    ///
462    /// #### `stretch`
463    ///  Font stretch as a [`pango::Stretch`][crate::pango::Stretch], e.g. [`pango::Stretch::Condensed`][crate::pango::Stretch::Condensed].
464    ///
465    /// Readable | Writeable
466    ///
467    ///
468    /// #### `stretch-set`
469    ///  Whether the `stretch` property is set.
470    ///
471    /// Readable | Writeable
472    ///
473    ///
474    /// #### `strikethrough`
475    ///  Whether to strike through the text.
476    ///
477    /// Readable | Writeable
478    ///
479    ///
480    /// #### `strikethrough-rgba`
481    ///  This property modifies the color of strikeouts.
482    ///
483    /// If not set, strikeouts will use the foreground color.
484    ///
485    /// Readable | Writeable
486    ///
487    ///
488    /// #### `strikethrough-rgba-set`
489    ///  If the `strikethrough-rgba` property has been set.
490    ///
491    /// Readable | Writeable
492    ///
493    ///
494    /// #### `strikethrough-set`
495    ///  Whether the `strikethrough` property is set.
496    ///
497    /// Readable | Writeable
498    ///
499    ///
500    /// #### `style`
501    ///  Font style as a [`pango::Style`][crate::pango::Style], e.g. [`pango::Style::Italic`][crate::pango::Style::Italic].
502    ///
503    /// Readable | Writeable
504    ///
505    ///
506    /// #### `style-set`
507    ///  Whether the `style` property is set.
508    ///
509    /// Readable | Writeable
510    ///
511    ///
512    /// #### `tabs`
513    ///  Custom tabs for this text.
514    ///
515    /// Readable | Writeable
516    ///
517    ///
518    /// #### `tabs-set`
519    ///  Whether the `tabs` property is set.
520    ///
521    /// Readable | Writeable
522    ///
523    ///
524    /// #### `text-transform`
525    ///  How to transform the text for display.
526    ///
527    /// Readable | Writeable
528    ///
529    ///
530    /// #### `text-transform-set`
531    ///  Whether the `text-transform` property is set.
532    ///
533    /// Readable | Writeable
534    ///
535    ///
536    /// #### `underline`
537    ///  Style of underline for this text.
538    ///
539    /// Readable | Writeable
540    ///
541    ///
542    /// #### `underline-rgba`
543    ///  This property modifies the color of underlines.
544    ///
545    /// If not set, underlines will use the foreground color.
546    ///
547    /// If [`underline`][struct@crate::TextTag#underline] is set to [`pango::Underline::Error`][crate::pango::Underline::Error],
548    /// an alternate color may be applied instead of the foreground. Setting
549    /// this property will always override those defaults.
550    ///
551    /// Readable | Writeable
552    ///
553    ///
554    /// #### `underline-rgba-set`
555    ///  If the `underline-rgba` property has been set.
556    ///
557    /// Readable | Writeable
558    ///
559    ///
560    /// #### `underline-set`
561    ///  Whether the `underline` property is set.
562    ///
563    /// Readable | Writeable
564    ///
565    ///
566    /// #### `variant`
567    ///  Font variant as a [`pango::Variant`][crate::pango::Variant], e.g. [`pango::Variant::SmallCaps`][crate::pango::Variant::SmallCaps].
568    ///
569    /// Readable | Writeable
570    ///
571    ///
572    /// #### `variant-set`
573    ///  Whether the `variant` property is set.
574    ///
575    /// Readable | Writeable
576    ///
577    ///
578    /// #### `weight`
579    ///  Font weight as an integer.
580    ///
581    /// Readable | Writeable
582    ///
583    ///
584    /// #### `weight-set`
585    ///  Whether the `weight` property is set.
586    ///
587    /// Readable | Writeable
588    ///
589    ///
590    /// #### `word`
591    ///  Whether this tag represents a single word.
592    ///
593    /// This affects line breaks and cursor movement.
594    ///
595    /// Readable | Writeable
596    ///
597    ///
598    /// #### `word-set`
599    ///  Whether the `word` property is set.
600    ///
601    /// Readable | Writeable
602    ///
603    ///
604    /// #### `wrap-mode`
605    ///  Whether to wrap lines never, at word boundaries, or
606    /// at character boundaries.
607    ///
608    /// Readable | Writeable
609    ///
610    ///
611    /// #### `wrap-mode-set`
612    ///  Whether the `wrap-mode` property is set.
613    ///
614    /// Readable | Writeable
615    ///
616    /// # Implements
617    ///
618    /// [`TextTagExt`][trait@crate::prelude::TextTagExt], [`trait@glib::ObjectExt`]
619    #[doc(alias = "GtkTextTag")]
620    pub struct TextTag(Object<ffi::GtkTextTag, ffi::GtkTextTagClass>);
621
622    match fn {
623        type_ => || ffi::gtk_text_tag_get_type(),
624    }
625}
626
627impl TextTag {
628    pub const NONE: Option<&'static TextTag> = None;
629
630    /// Creates a [`TextTag`][crate::TextTag].
631    /// ## `name`
632    /// tag name
633    ///
634    /// # Returns
635    ///
636    /// a new [`TextTag`][crate::TextTag]
637    #[doc(alias = "gtk_text_tag_new")]
638    pub fn new(name: Option<&str>) -> TextTag {
639        assert_initialized_main_thread!();
640        unsafe { from_glib_full(ffi::gtk_text_tag_new(name.to_glib_none().0)) }
641    }
642
643    // rustdoc-stripper-ignore-next
644    /// Creates a new builder-pattern struct instance to construct [`TextTag`] objects.
645    ///
646    /// This method returns an instance of [`TextTagBuilder`](crate::builders::TextTagBuilder) which can be used to create [`TextTag`] objects.
647    pub fn builder() -> TextTagBuilder {
648        TextTagBuilder::new()
649    }
650}
651
652impl Default for TextTag {
653    fn default() -> Self {
654        glib::object::Object::new::<Self>()
655    }
656}
657
658// rustdoc-stripper-ignore-next
659/// A [builder-pattern] type to construct [`TextTag`] objects.
660///
661/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
662#[must_use = "The builder must be built to be used"]
663pub struct TextTagBuilder {
664    builder: glib::object::ObjectBuilder<'static, TextTag>,
665}
666
667impl TextTagBuilder {
668    fn new() -> Self {
669        Self {
670            builder: glib::object::Object::builder(),
671        }
672    }
673
674    /// Whether the margins accumulate or override each other.
675    ///
676    /// When set to [`true`] the margins of this tag are added to the margins
677    /// of any other non-accumulative margins present. When set to [`false`]
678    /// the margins override one another (the default).
679    pub fn accumulative_margin(self, accumulative_margin: bool) -> Self {
680        Self {
681            builder: self
682                .builder
683                .property("accumulative-margin", accumulative_margin),
684        }
685    }
686
687    /// Whether breaks are allowed.
688    pub fn allow_breaks(self, allow_breaks: bool) -> Self {
689        Self {
690            builder: self.builder.property("allow-breaks", allow_breaks),
691        }
692    }
693
694    /// Whether the `allow-breaks` property is set.
695    pub fn allow_breaks_set(self, allow_breaks_set: bool) -> Self {
696        Self {
697            builder: self.builder.property("allow-breaks-set", allow_breaks_set),
698        }
699    }
700
701    /// Background color as a string.
702    pub fn background(self, background: impl Into<glib::GString>) -> Self {
703        Self {
704            builder: self.builder.property("background", background.into()),
705        }
706    }
707
708    /// Whether the background color fills the entire line height
709    /// or only the height of the tagged characters.
710    pub fn background_full_height(self, background_full_height: bool) -> Self {
711        Self {
712            builder: self
713                .builder
714                .property("background-full-height", background_full_height),
715        }
716    }
717
718    /// Whether the `background-full-height` property is set.
719    pub fn background_full_height_set(self, background_full_height_set: bool) -> Self {
720        Self {
721            builder: self
722                .builder
723                .property("background-full-height-set", background_full_height_set),
724        }
725    }
726
727    /// Background color as a [`gdk::RGBA`][crate::gdk::RGBA].
728    pub fn background_rgba(self, background_rgba: &gdk::RGBA) -> Self {
729        Self {
730            builder: self.builder.property("background-rgba", background_rgba),
731        }
732    }
733
734    /// Whether the `background` property is set.
735    pub fn background_set(self, background_set: bool) -> Self {
736        Self {
737            builder: self.builder.property("background-set", background_set),
738        }
739    }
740
741    /// Text direction, e.g. right-to-left or left-to-right.
742    pub fn direction(self, direction: TextDirection) -> Self {
743        Self {
744            builder: self.builder.property("direction", direction),
745        }
746    }
747
748    /// Whether the text can be modified by the user.
749    pub fn editable(self, editable: bool) -> Self {
750        Self {
751            builder: self.builder.property("editable", editable),
752        }
753    }
754
755    /// Whether the `editable` property is set.
756    pub fn editable_set(self, editable_set: bool) -> Self {
757        Self {
758            builder: self.builder.property("editable-set", editable_set),
759        }
760    }
761
762    /// Whether font fallback is enabled.
763    ///
764    /// When set to [`true`], other fonts will be substituted
765    /// where the current font is missing glyphs.
766    pub fn fallback(self, fallback: bool) -> Self {
767        Self {
768            builder: self.builder.property("fallback", fallback),
769        }
770    }
771
772    /// Whether the `fallback` property is set.
773    pub fn fallback_set(self, fallback_set: bool) -> Self {
774        Self {
775            builder: self.builder.property("fallback-set", fallback_set),
776        }
777    }
778
779    /// Name of the font family, e.g. Sans, Helvetica, Times, Monospace.
780    pub fn family(self, family: impl Into<glib::GString>) -> Self {
781        Self {
782            builder: self.builder.property("family", family.into()),
783        }
784    }
785
786    /// Whether the `family` property is set.
787    pub fn family_set(self, family_set: bool) -> Self {
788        Self {
789            builder: self.builder.property("family-set", family_set),
790        }
791    }
792
793    /// Font description as string, e.g. \"Sans Italic 12\".
794    ///
795    /// Note that the initial value of this property depends on
796    /// the internals of [`pango::FontDescription`][crate::pango::FontDescription].
797    pub fn font(self, font: impl Into<glib::GString>) -> Self {
798        Self {
799            builder: self.builder.property("font", font.into()),
800        }
801    }
802
803    /// Font description as a [`pango::FontDescription`][crate::pango::FontDescription].
804    pub fn font_desc(self, font_desc: &pango::FontDescription) -> Self {
805        Self {
806            builder: self.builder.property("font-desc", font_desc),
807        }
808    }
809
810    /// OpenType font features, as a string.
811    pub fn font_features(self, font_features: impl Into<glib::GString>) -> Self {
812        Self {
813            builder: self.builder.property("font-features", font_features.into()),
814        }
815    }
816
817    /// Whether the `font-features` property is set.
818    pub fn font_features_set(self, font_features_set: bool) -> Self {
819        Self {
820            builder: self
821                .builder
822                .property("font-features-set", font_features_set),
823        }
824    }
825
826    /// Foreground color as a string.
827    pub fn foreground(self, foreground: impl Into<glib::GString>) -> Self {
828        Self {
829            builder: self.builder.property("foreground", foreground.into()),
830        }
831    }
832
833    /// Foreground color as a [`gdk::RGBA`][crate::gdk::RGBA].
834    pub fn foreground_rgba(self, foreground_rgba: &gdk::RGBA) -> Self {
835        Self {
836            builder: self.builder.property("foreground-rgba", foreground_rgba),
837        }
838    }
839
840    /// Whether the `foreground` property is set.
841    pub fn foreground_set(self, foreground_set: bool) -> Self {
842        Self {
843            builder: self.builder.property("foreground-set", foreground_set),
844        }
845    }
846
847    /// Amount to indent the paragraph, in pixels.
848    ///
849    /// A negative value of indent will produce a hanging indentation.
850    /// That is, the first line will have the full width, and subsequent
851    /// lines will be indented by the absolute value of indent.
852    pub fn indent(self, indent: i32) -> Self {
853        Self {
854            builder: self.builder.property("indent", indent),
855        }
856    }
857
858    /// Whether the `indent` property is set.
859    pub fn indent_set(self, indent_set: bool) -> Self {
860        Self {
861            builder: self.builder.property("indent-set", indent_set),
862        }
863    }
864
865    /// Whether to insert hyphens at breaks.
866    pub fn insert_hyphens(self, insert_hyphens: bool) -> Self {
867        Self {
868            builder: self.builder.property("insert-hyphens", insert_hyphens),
869        }
870    }
871
872    /// Whether the `insert-hyphens` property is set.
873    pub fn insert_hyphens_set(self, insert_hyphens_set: bool) -> Self {
874        Self {
875            builder: self
876                .builder
877                .property("insert-hyphens-set", insert_hyphens_set),
878        }
879    }
880
881    /// Whether this text is hidden.
882    ///
883    /// Note that there may still be problems with the support for invisible
884    /// text, in particular when navigating programmatically inside a buffer
885    /// containing invisible segments.
886    pub fn invisible(self, invisible: bool) -> Self {
887        Self {
888            builder: self.builder.property("invisible", invisible),
889        }
890    }
891
892    /// Whether the `invisible` property is set.
893    pub fn invisible_set(self, invisible_set: bool) -> Self {
894        Self {
895            builder: self.builder.property("invisible-set", invisible_set),
896        }
897    }
898
899    /// Left, right, or center justification.
900    pub fn justification(self, justification: Justification) -> Self {
901        Self {
902            builder: self.builder.property("justification", justification),
903        }
904    }
905
906    /// Whether the `justification` property is set.
907    pub fn justification_set(self, justification_set: bool) -> Self {
908        Self {
909            builder: self
910                .builder
911                .property("justification-set", justification_set),
912        }
913    }
914
915    /// The language this text is in, as an ISO code.
916    ///
917    /// Pango can use this as a hint when rendering the text.
918    /// If not set, an appropriate default will be used.
919    ///
920    /// Note that the initial value of this property depends
921    /// on the current locale, see also [`default_language()`][crate::default_language()].
922    pub fn language(self, language: impl Into<glib::GString>) -> Self {
923        Self {
924            builder: self.builder.property("language", language.into()),
925        }
926    }
927
928    /// Whether the `language` property is set.
929    pub fn language_set(self, language_set: bool) -> Self {
930        Self {
931            builder: self.builder.property("language-set", language_set),
932        }
933    }
934
935    /// Width of the left margin in pixels.
936    pub fn left_margin(self, left_margin: i32) -> Self {
937        Self {
938            builder: self.builder.property("left-margin", left_margin),
939        }
940    }
941
942    /// Whether the `left-margin` property is set.
943    pub fn left_margin_set(self, left_margin_set: bool) -> Self {
944        Self {
945            builder: self.builder.property("left-margin-set", left_margin_set),
946        }
947    }
948
949    /// Extra spacing between graphemes, in Pango units.
950    pub fn letter_spacing(self, letter_spacing: i32) -> Self {
951        Self {
952            builder: self.builder.property("letter-spacing", letter_spacing),
953        }
954    }
955
956    /// Whether the `letter-spacing` property is set.
957    pub fn letter_spacing_set(self, letter_spacing_set: bool) -> Self {
958        Self {
959            builder: self
960                .builder
961                .property("letter-spacing-set", letter_spacing_set),
962        }
963    }
964
965    /// Factor to scale line height by.
966    #[cfg(feature = "v4_6")]
967    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
968    pub fn line_height(self, line_height: f32) -> Self {
969        Self {
970            builder: self.builder.property("line-height", line_height),
971        }
972    }
973
974    /// Whether the `line-height` property is set.
975    #[cfg(feature = "v4_6")]
976    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
977    pub fn line_height_set(self, line_height_set: bool) -> Self {
978        Self {
979            builder: self.builder.property("line-height-set", line_height_set),
980        }
981    }
982
983    /// The name used to refer to the tag.
984    ///
985    /// [`None`] for anonymous tags.
986    pub fn name(self, name: impl Into<glib::GString>) -> Self {
987        Self {
988            builder: self.builder.property("name", name.into()),
989        }
990    }
991
992    /// Style of overline for this text.
993    pub fn overline(self, overline: pango::Overline) -> Self {
994        Self {
995            builder: self.builder.property("overline", overline),
996        }
997    }
998
999    /// This property modifies the color of overlines.
1000    ///
1001    /// If not set, overlines will use the foreground color.
1002    pub fn overline_rgba(self, overline_rgba: &gdk::RGBA) -> Self {
1003        Self {
1004            builder: self.builder.property("overline-rgba", overline_rgba),
1005        }
1006    }
1007
1008    /// Whether the `overline-rgba` property is set.
1009    pub fn overline_rgba_set(self, overline_rgba_set: bool) -> Self {
1010        Self {
1011            builder: self
1012                .builder
1013                .property("overline-rgba-set", overline_rgba_set),
1014        }
1015    }
1016
1017    /// Whether the `overline` property is set.
1018    pub fn overline_set(self, overline_set: bool) -> Self {
1019        Self {
1020            builder: self.builder.property("overline-set", overline_set),
1021        }
1022    }
1023
1024    /// The paragraph background color as a string.
1025    pub fn paragraph_background(self, paragraph_background: impl Into<glib::GString>) -> Self {
1026        Self {
1027            builder: self
1028                .builder
1029                .property("paragraph-background", paragraph_background.into()),
1030        }
1031    }
1032
1033    /// The paragraph background color as a [`gdk::RGBA`][crate::gdk::RGBA].
1034    pub fn paragraph_background_rgba(self, paragraph_background_rgba: &gdk::RGBA) -> Self {
1035        Self {
1036            builder: self
1037                .builder
1038                .property("paragraph-background-rgba", paragraph_background_rgba),
1039        }
1040    }
1041
1042    /// Whether the `paragraph-background` property is set.
1043    pub fn paragraph_background_set(self, paragraph_background_set: bool) -> Self {
1044        Self {
1045            builder: self
1046                .builder
1047                .property("paragraph-background-set", paragraph_background_set),
1048        }
1049    }
1050
1051    /// Pixels of blank space above paragraphs.
1052    pub fn pixels_above_lines(self, pixels_above_lines: i32) -> Self {
1053        Self {
1054            builder: self
1055                .builder
1056                .property("pixels-above-lines", pixels_above_lines),
1057        }
1058    }
1059
1060    /// Whether the `pixels-above-lines` property is set.
1061    pub fn pixels_above_lines_set(self, pixels_above_lines_set: bool) -> Self {
1062        Self {
1063            builder: self
1064                .builder
1065                .property("pixels-above-lines-set", pixels_above_lines_set),
1066        }
1067    }
1068
1069    /// Pixels of blank space below paragraphs.
1070    pub fn pixels_below_lines(self, pixels_below_lines: i32) -> Self {
1071        Self {
1072            builder: self
1073                .builder
1074                .property("pixels-below-lines", pixels_below_lines),
1075        }
1076    }
1077
1078    /// Whether the `pixels-below-lines` property is set.
1079    pub fn pixels_below_lines_set(self, pixels_below_lines_set: bool) -> Self {
1080        Self {
1081            builder: self
1082                .builder
1083                .property("pixels-below-lines-set", pixels_below_lines_set),
1084        }
1085    }
1086
1087    /// Pixels of blank space between wrapped lines in a paragraph.
1088    pub fn pixels_inside_wrap(self, pixels_inside_wrap: i32) -> Self {
1089        Self {
1090            builder: self
1091                .builder
1092                .property("pixels-inside-wrap", pixels_inside_wrap),
1093        }
1094    }
1095
1096    /// Whether the `pixels-inside-wrap` property is set.
1097    pub fn pixels_inside_wrap_set(self, pixels_inside_wrap_set: bool) -> Self {
1098        Self {
1099            builder: self
1100                .builder
1101                .property("pixels-inside-wrap-set", pixels_inside_wrap_set),
1102        }
1103    }
1104
1105    /// Width of the right margin, in pixels.
1106    pub fn right_margin(self, right_margin: i32) -> Self {
1107        Self {
1108            builder: self.builder.property("right-margin", right_margin),
1109        }
1110    }
1111
1112    /// Whether the `right-margin` property is set.
1113    pub fn right_margin_set(self, right_margin_set: bool) -> Self {
1114        Self {
1115            builder: self.builder.property("right-margin-set", right_margin_set),
1116        }
1117    }
1118
1119    /// Offset of text above the baseline, in Pango units.
1120    ///
1121    /// Negative values go below the baseline.
1122    pub fn rise(self, rise: i32) -> Self {
1123        Self {
1124            builder: self.builder.property("rise", rise),
1125        }
1126    }
1127
1128    /// Whether the `rise` property is set.
1129    pub fn rise_set(self, rise_set: bool) -> Self {
1130        Self {
1131            builder: self.builder.property("rise-set", rise_set),
1132        }
1133    }
1134
1135    /// Font size as a scale factor relative to the default font size.
1136    ///
1137    /// This properly adapts to theme changes, etc. so is recommended.
1138    /// Pango predefines some scales such as `PANGO_SCALE_X_LARGE`.
1139    pub fn scale(self, scale: f64) -> Self {
1140        Self {
1141            builder: self.builder.property("scale", scale),
1142        }
1143    }
1144
1145    /// Whether the `scale` property is set.
1146    pub fn scale_set(self, scale_set: bool) -> Self {
1147        Self {
1148            builder: self.builder.property("scale-set", scale_set),
1149        }
1150    }
1151
1152    /// Whether this tag represents a single sentence.
1153    ///
1154    /// This affects cursor movement.
1155    #[cfg(feature = "v4_6")]
1156    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
1157    pub fn sentence(self, sentence: bool) -> Self {
1158        Self {
1159            builder: self.builder.property("sentence", sentence),
1160        }
1161    }
1162
1163    /// Whether the `sentence` property is set.
1164    #[cfg(feature = "v4_6")]
1165    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
1166    pub fn sentence_set(self, sentence_set: bool) -> Self {
1167        Self {
1168            builder: self.builder.property("sentence-set", sentence_set),
1169        }
1170    }
1171
1172    /// How to render invisible characters.
1173    pub fn show_spaces(self, show_spaces: pango::ShowFlags) -> Self {
1174        Self {
1175            builder: self.builder.property("show-spaces", show_spaces),
1176        }
1177    }
1178
1179    /// Whether the `show-spaces` property is set.
1180    pub fn show_spaces_set(self, show_spaces_set: bool) -> Self {
1181        Self {
1182            builder: self.builder.property("show-spaces-set", show_spaces_set),
1183        }
1184    }
1185
1186    /// Font size in Pango units.
1187    pub fn size(self, size: i32) -> Self {
1188        Self {
1189            builder: self.builder.property("size", size),
1190        }
1191    }
1192
1193    /// Font size in points.
1194    pub fn size_points(self, size_points: f64) -> Self {
1195        Self {
1196            builder: self.builder.property("size-points", size_points),
1197        }
1198    }
1199
1200    /// Whether the `size` property is set.
1201    pub fn size_set(self, size_set: bool) -> Self {
1202        Self {
1203            builder: self.builder.property("size-set", size_set),
1204        }
1205    }
1206
1207    /// Font stretch as a [`pango::Stretch`][crate::pango::Stretch], e.g. [`pango::Stretch::Condensed`][crate::pango::Stretch::Condensed].
1208    pub fn stretch(self, stretch: pango::Stretch) -> Self {
1209        Self {
1210            builder: self.builder.property("stretch", stretch),
1211        }
1212    }
1213
1214    /// Whether the `stretch` property is set.
1215    pub fn stretch_set(self, stretch_set: bool) -> Self {
1216        Self {
1217            builder: self.builder.property("stretch-set", stretch_set),
1218        }
1219    }
1220
1221    /// Whether to strike through the text.
1222    pub fn strikethrough(self, strikethrough: bool) -> Self {
1223        Self {
1224            builder: self.builder.property("strikethrough", strikethrough),
1225        }
1226    }
1227
1228    /// This property modifies the color of strikeouts.
1229    ///
1230    /// If not set, strikeouts will use the foreground color.
1231    pub fn strikethrough_rgba(self, strikethrough_rgba: &gdk::RGBA) -> Self {
1232        Self {
1233            builder: self
1234                .builder
1235                .property("strikethrough-rgba", strikethrough_rgba),
1236        }
1237    }
1238
1239    /// If the `strikethrough-rgba` property has been set.
1240    pub fn strikethrough_rgba_set(self, strikethrough_rgba_set: bool) -> Self {
1241        Self {
1242            builder: self
1243                .builder
1244                .property("strikethrough-rgba-set", strikethrough_rgba_set),
1245        }
1246    }
1247
1248    /// Whether the `strikethrough` property is set.
1249    pub fn strikethrough_set(self, strikethrough_set: bool) -> Self {
1250        Self {
1251            builder: self
1252                .builder
1253                .property("strikethrough-set", strikethrough_set),
1254        }
1255    }
1256
1257    /// Font style as a [`pango::Style`][crate::pango::Style], e.g. [`pango::Style::Italic`][crate::pango::Style::Italic].
1258    pub fn style(self, style: pango::Style) -> Self {
1259        Self {
1260            builder: self.builder.property("style", style),
1261        }
1262    }
1263
1264    /// Whether the `style` property is set.
1265    pub fn style_set(self, style_set: bool) -> Self {
1266        Self {
1267            builder: self.builder.property("style-set", style_set),
1268        }
1269    }
1270
1271    /// Custom tabs for this text.
1272    pub fn tabs(self, tabs: &pango::TabArray) -> Self {
1273        Self {
1274            builder: self.builder.property("tabs", tabs),
1275        }
1276    }
1277
1278    /// Whether the `tabs` property is set.
1279    pub fn tabs_set(self, tabs_set: bool) -> Self {
1280        Self {
1281            builder: self.builder.property("tabs-set", tabs_set),
1282        }
1283    }
1284
1285    /// How to transform the text for display.
1286    #[cfg(feature = "v4_6")]
1287    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
1288    pub fn text_transform(self, text_transform: pango::TextTransform) -> Self {
1289        Self {
1290            builder: self.builder.property("text-transform", text_transform),
1291        }
1292    }
1293
1294    /// Whether the `text-transform` property is set.
1295    #[cfg(feature = "v4_6")]
1296    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
1297    pub fn text_transform_set(self, text_transform_set: bool) -> Self {
1298        Self {
1299            builder: self
1300                .builder
1301                .property("text-transform-set", text_transform_set),
1302        }
1303    }
1304
1305    /// Style of underline for this text.
1306    pub fn underline(self, underline: pango::Underline) -> Self {
1307        Self {
1308            builder: self.builder.property("underline", underline),
1309        }
1310    }
1311
1312    /// This property modifies the color of underlines.
1313    ///
1314    /// If not set, underlines will use the foreground color.
1315    ///
1316    /// If [`underline`][struct@crate::TextTag#underline] is set to [`pango::Underline::Error`][crate::pango::Underline::Error],
1317    /// an alternate color may be applied instead of the foreground. Setting
1318    /// this property will always override those defaults.
1319    pub fn underline_rgba(self, underline_rgba: &gdk::RGBA) -> Self {
1320        Self {
1321            builder: self.builder.property("underline-rgba", underline_rgba),
1322        }
1323    }
1324
1325    /// If the `underline-rgba` property has been set.
1326    pub fn underline_rgba_set(self, underline_rgba_set: bool) -> Self {
1327        Self {
1328            builder: self
1329                .builder
1330                .property("underline-rgba-set", underline_rgba_set),
1331        }
1332    }
1333
1334    /// Whether the `underline` property is set.
1335    pub fn underline_set(self, underline_set: bool) -> Self {
1336        Self {
1337            builder: self.builder.property("underline-set", underline_set),
1338        }
1339    }
1340
1341    /// Font variant as a [`pango::Variant`][crate::pango::Variant], e.g. [`pango::Variant::SmallCaps`][crate::pango::Variant::SmallCaps].
1342    pub fn variant(self, variant: pango::Variant) -> Self {
1343        Self {
1344            builder: self.builder.property("variant", variant),
1345        }
1346    }
1347
1348    /// Whether the `variant` property is set.
1349    pub fn variant_set(self, variant_set: bool) -> Self {
1350        Self {
1351            builder: self.builder.property("variant-set", variant_set),
1352        }
1353    }
1354
1355    /// Font weight as an integer.
1356    pub fn weight(self, weight: i32) -> Self {
1357        Self {
1358            builder: self.builder.property("weight", weight),
1359        }
1360    }
1361
1362    /// Whether the `weight` property is set.
1363    pub fn weight_set(self, weight_set: bool) -> Self {
1364        Self {
1365            builder: self.builder.property("weight-set", weight_set),
1366        }
1367    }
1368
1369    /// Whether this tag represents a single word.
1370    ///
1371    /// This affects line breaks and cursor movement.
1372    #[cfg(feature = "v4_6")]
1373    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
1374    pub fn word(self, word: bool) -> Self {
1375        Self {
1376            builder: self.builder.property("word", word),
1377        }
1378    }
1379
1380    /// Whether the `word` property is set.
1381    #[cfg(feature = "v4_6")]
1382    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
1383    pub fn word_set(self, word_set: bool) -> Self {
1384        Self {
1385            builder: self.builder.property("word-set", word_set),
1386        }
1387    }
1388
1389    /// Whether to wrap lines never, at word boundaries, or
1390    /// at character boundaries.
1391    pub fn wrap_mode(self, wrap_mode: WrapMode) -> Self {
1392        Self {
1393            builder: self.builder.property("wrap-mode", wrap_mode),
1394        }
1395    }
1396
1397    /// Whether the `wrap-mode` property is set.
1398    pub fn wrap_mode_set(self, wrap_mode_set: bool) -> Self {
1399        Self {
1400            builder: self.builder.property("wrap-mode-set", wrap_mode_set),
1401        }
1402    }
1403
1404    // rustdoc-stripper-ignore-next
1405    /// Build the [`TextTag`].
1406    #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
1407    pub fn build(self) -> TextTag {
1408        assert_initialized_main_thread!();
1409        self.builder.build()
1410    }
1411}
1412
1413/// Trait containing all [`struct@TextTag`] methods.
1414///
1415/// # Implementors
1416///
1417/// [`TextTag`][struct@crate::TextTag]
1418pub trait TextTagExt: IsA<TextTag> + 'static {
1419    /// Emits the [`tag-changed`][struct@crate::TextTagTable#tag-changed] signal on the
1420    /// [`TextTagTable`][crate::TextTagTable] where the tag is included.
1421    ///
1422    /// The signal is already emitted when setting a [`TextTag`][crate::TextTag] property.
1423    /// This function is useful for a [`TextTag`][crate::TextTag] subclass.
1424    /// ## `size_changed`
1425    /// whether the change affects the [`TextView`][crate::TextView] layout
1426    #[doc(alias = "gtk_text_tag_changed")]
1427    fn changed(&self, size_changed: bool) {
1428        unsafe {
1429            ffi::gtk_text_tag_changed(self.as_ref().to_glib_none().0, size_changed.into_glib());
1430        }
1431    }
1432
1433    /// Get the tag priority.
1434    ///
1435    /// # Returns
1436    ///
1437    /// The tag’s priority.
1438    #[doc(alias = "gtk_text_tag_get_priority")]
1439    #[doc(alias = "get_priority")]
1440    fn priority(&self) -> i32 {
1441        unsafe { ffi::gtk_text_tag_get_priority(self.as_ref().to_glib_none().0) }
1442    }
1443
1444    /// Sets the priority of a [`TextTag`][crate::TextTag].
1445    ///
1446    /// Valid priorities start at 0 and go to one less than
1447    /// [`TextTagTable::size()`][crate::TextTagTable::size()]. Each tag in a table
1448    /// has a unique priority; setting the priority of one tag shifts
1449    /// the priorities of all the other tags in the table to maintain
1450    /// a unique priority for each tag.
1451    ///
1452    /// Higher priority tags “win” if two tags both set the same text
1453    /// attribute. When adding a tag to a tag table, it will be assigned
1454    /// the highest priority in the table by default; so normally the
1455    /// precedence of a set of tags is the order in which they were added
1456    /// to the table, or created with [`TextBufferExtManual::create_tag()`][crate::prelude::TextBufferExtManual::create_tag()],
1457    /// which adds the tag to the buffer’s table automatically.
1458    /// ## `priority`
1459    /// the new priority
1460    #[doc(alias = "gtk_text_tag_set_priority")]
1461    fn set_priority(&self, priority: i32) {
1462        unsafe {
1463            ffi::gtk_text_tag_set_priority(self.as_ref().to_glib_none().0, priority);
1464        }
1465    }
1466
1467    /// Whether the margins accumulate or override each other.
1468    ///
1469    /// When set to [`true`] the margins of this tag are added to the margins
1470    /// of any other non-accumulative margins present. When set to [`false`]
1471    /// the margins override one another (the default).
1472    #[doc(alias = "accumulative-margin")]
1473    fn is_accumulative_margin(&self) -> bool {
1474        ObjectExt::property(self.as_ref(), "accumulative-margin")
1475    }
1476
1477    /// Whether the margins accumulate or override each other.
1478    ///
1479    /// When set to [`true`] the margins of this tag are added to the margins
1480    /// of any other non-accumulative margins present. When set to [`false`]
1481    /// the margins override one another (the default).
1482    #[doc(alias = "accumulative-margin")]
1483    fn set_accumulative_margin(&self, accumulative_margin: bool) {
1484        ObjectExt::set_property(self.as_ref(), "accumulative-margin", accumulative_margin)
1485    }
1486
1487    /// Whether breaks are allowed.
1488    #[doc(alias = "allow-breaks")]
1489    fn allows_breaks(&self) -> bool {
1490        ObjectExt::property(self.as_ref(), "allow-breaks")
1491    }
1492
1493    /// Whether breaks are allowed.
1494    #[doc(alias = "allow-breaks")]
1495    fn set_allow_breaks(&self, allow_breaks: bool) {
1496        ObjectExt::set_property(self.as_ref(), "allow-breaks", allow_breaks)
1497    }
1498
1499    /// Whether the `allow-breaks` property is set.
1500    #[doc(alias = "allow-breaks-set")]
1501    fn allows_breaks_set(&self) -> bool {
1502        ObjectExt::property(self.as_ref(), "allow-breaks-set")
1503    }
1504
1505    /// Background color as a string.
1506    fn set_background(&self, background: Option<&str>) {
1507        ObjectExt::set_property(self.as_ref(), "background", background)
1508    }
1509
1510    /// Whether the background color fills the entire line height
1511    /// or only the height of the tagged characters.
1512    #[doc(alias = "background-full-height")]
1513    fn is_background_full_height(&self) -> bool {
1514        ObjectExt::property(self.as_ref(), "background-full-height")
1515    }
1516
1517    /// Whether the background color fills the entire line height
1518    /// or only the height of the tagged characters.
1519    #[doc(alias = "background-full-height")]
1520    fn set_background_full_height(&self, background_full_height: bool) {
1521        ObjectExt::set_property(
1522            self.as_ref(),
1523            "background-full-height",
1524            background_full_height,
1525        )
1526    }
1527
1528    /// Whether the `background-full-height` property is set.
1529    #[doc(alias = "background-full-height-set")]
1530    fn is_background_full_height_set(&self) -> bool {
1531        ObjectExt::property(self.as_ref(), "background-full-height-set")
1532    }
1533
1534    /// Background color as a [`gdk::RGBA`][crate::gdk::RGBA].
1535    #[doc(alias = "background-rgba")]
1536    fn background_rgba(&self) -> Option<gdk::RGBA> {
1537        ObjectExt::property(self.as_ref(), "background-rgba")
1538    }
1539
1540    /// Background color as a [`gdk::RGBA`][crate::gdk::RGBA].
1541    #[doc(alias = "background-rgba")]
1542    fn set_background_rgba(&self, background_rgba: Option<&gdk::RGBA>) {
1543        ObjectExt::set_property(self.as_ref(), "background-rgba", background_rgba)
1544    }
1545
1546    /// Whether the `background` property is set.
1547    #[doc(alias = "background-set")]
1548    fn is_background_set(&self) -> bool {
1549        ObjectExt::property(self.as_ref(), "background-set")
1550    }
1551
1552    /// Text direction, e.g. right-to-left or left-to-right.
1553    fn direction(&self) -> TextDirection {
1554        ObjectExt::property(self.as_ref(), "direction")
1555    }
1556
1557    /// Text direction, e.g. right-to-left or left-to-right.
1558    fn set_direction(&self, direction: TextDirection) {
1559        ObjectExt::set_property(self.as_ref(), "direction", direction)
1560    }
1561
1562    /// Whether the text can be modified by the user.
1563    fn is_editable(&self) -> bool {
1564        ObjectExt::property(self.as_ref(), "editable")
1565    }
1566
1567    /// Whether the text can be modified by the user.
1568    fn set_editable(&self, editable: bool) {
1569        ObjectExt::set_property(self.as_ref(), "editable", editable)
1570    }
1571
1572    /// Whether the `editable` property is set.
1573    #[doc(alias = "editable-set")]
1574    fn is_editable_set(&self) -> bool {
1575        ObjectExt::property(self.as_ref(), "editable-set")
1576    }
1577
1578    /// Whether font fallback is enabled.
1579    ///
1580    /// When set to [`true`], other fonts will be substituted
1581    /// where the current font is missing glyphs.
1582    fn is_fallback(&self) -> bool {
1583        ObjectExt::property(self.as_ref(), "fallback")
1584    }
1585
1586    /// Whether font fallback is enabled.
1587    ///
1588    /// When set to [`true`], other fonts will be substituted
1589    /// where the current font is missing glyphs.
1590    fn set_fallback(&self, fallback: bool) {
1591        ObjectExt::set_property(self.as_ref(), "fallback", fallback)
1592    }
1593
1594    /// Whether the `fallback` property is set.
1595    #[doc(alias = "fallback-set")]
1596    fn is_fallback_set(&self) -> bool {
1597        ObjectExt::property(self.as_ref(), "fallback-set")
1598    }
1599
1600    /// Name of the font family, e.g. Sans, Helvetica, Times, Monospace.
1601    fn family(&self) -> Option<glib::GString> {
1602        ObjectExt::property(self.as_ref(), "family")
1603    }
1604
1605    /// Name of the font family, e.g. Sans, Helvetica, Times, Monospace.
1606    fn set_family(&self, family: Option<&str>) {
1607        ObjectExt::set_property(self.as_ref(), "family", family)
1608    }
1609
1610    /// Whether the `family` property is set.
1611    #[doc(alias = "family-set")]
1612    fn is_family_set(&self) -> bool {
1613        ObjectExt::property(self.as_ref(), "family-set")
1614    }
1615
1616    /// Font description as string, e.g. \"Sans Italic 12\".
1617    ///
1618    /// Note that the initial value of this property depends on
1619    /// the internals of [`pango::FontDescription`][crate::pango::FontDescription].
1620    fn font(&self) -> Option<glib::GString> {
1621        ObjectExt::property(self.as_ref(), "font")
1622    }
1623
1624    /// Font description as string, e.g. \"Sans Italic 12\".
1625    ///
1626    /// Note that the initial value of this property depends on
1627    /// the internals of [`pango::FontDescription`][crate::pango::FontDescription].
1628    fn set_font(&self, font: Option<&str>) {
1629        ObjectExt::set_property(self.as_ref(), "font", font)
1630    }
1631
1632    /// Font description as a [`pango::FontDescription`][crate::pango::FontDescription].
1633    #[doc(alias = "font-desc")]
1634    fn font_desc(&self) -> Option<pango::FontDescription> {
1635        ObjectExt::property(self.as_ref(), "font-desc")
1636    }
1637
1638    /// Font description as a [`pango::FontDescription`][crate::pango::FontDescription].
1639    #[doc(alias = "font-desc")]
1640    fn set_font_desc(&self, font_desc: Option<&pango::FontDescription>) {
1641        ObjectExt::set_property(self.as_ref(), "font-desc", font_desc)
1642    }
1643
1644    /// OpenType font features, as a string.
1645    #[doc(alias = "font-features")]
1646    fn font_features(&self) -> Option<glib::GString> {
1647        ObjectExt::property(self.as_ref(), "font-features")
1648    }
1649
1650    /// OpenType font features, as a string.
1651    #[doc(alias = "font-features")]
1652    fn set_font_features(&self, font_features: Option<&str>) {
1653        ObjectExt::set_property(self.as_ref(), "font-features", font_features)
1654    }
1655
1656    /// Whether the `font-features` property is set.
1657    #[doc(alias = "font-features-set")]
1658    fn is_font_features_set(&self) -> bool {
1659        ObjectExt::property(self.as_ref(), "font-features-set")
1660    }
1661
1662    /// Foreground color as a string.
1663    fn set_foreground(&self, foreground: Option<&str>) {
1664        ObjectExt::set_property(self.as_ref(), "foreground", foreground)
1665    }
1666
1667    /// Foreground color as a [`gdk::RGBA`][crate::gdk::RGBA].
1668    #[doc(alias = "foreground-rgba")]
1669    fn foreground_rgba(&self) -> Option<gdk::RGBA> {
1670        ObjectExt::property(self.as_ref(), "foreground-rgba")
1671    }
1672
1673    /// Foreground color as a [`gdk::RGBA`][crate::gdk::RGBA].
1674    #[doc(alias = "foreground-rgba")]
1675    fn set_foreground_rgba(&self, foreground_rgba: Option<&gdk::RGBA>) {
1676        ObjectExt::set_property(self.as_ref(), "foreground-rgba", foreground_rgba)
1677    }
1678
1679    /// Whether the `foreground` property is set.
1680    #[doc(alias = "foreground-set")]
1681    fn is_foreground_set(&self) -> bool {
1682        ObjectExt::property(self.as_ref(), "foreground-set")
1683    }
1684
1685    /// Amount to indent the paragraph, in pixels.
1686    ///
1687    /// A negative value of indent will produce a hanging indentation.
1688    /// That is, the first line will have the full width, and subsequent
1689    /// lines will be indented by the absolute value of indent.
1690    fn indent(&self) -> i32 {
1691        ObjectExt::property(self.as_ref(), "indent")
1692    }
1693
1694    /// Amount to indent the paragraph, in pixels.
1695    ///
1696    /// A negative value of indent will produce a hanging indentation.
1697    /// That is, the first line will have the full width, and subsequent
1698    /// lines will be indented by the absolute value of indent.
1699    fn set_indent(&self, indent: i32) {
1700        ObjectExt::set_property(self.as_ref(), "indent", indent)
1701    }
1702
1703    /// Whether the `indent` property is set.
1704    #[doc(alias = "indent-set")]
1705    fn is_indent_set(&self) -> bool {
1706        ObjectExt::property(self.as_ref(), "indent-set")
1707    }
1708
1709    /// Whether to insert hyphens at breaks.
1710    #[doc(alias = "insert-hyphens")]
1711    fn is_insert_hyphens(&self) -> bool {
1712        ObjectExt::property(self.as_ref(), "insert-hyphens")
1713    }
1714
1715    /// Whether to insert hyphens at breaks.
1716    #[doc(alias = "insert-hyphens")]
1717    fn set_insert_hyphens(&self, insert_hyphens: bool) {
1718        ObjectExt::set_property(self.as_ref(), "insert-hyphens", insert_hyphens)
1719    }
1720
1721    /// Whether the `insert-hyphens` property is set.
1722    #[doc(alias = "insert-hyphens-set")]
1723    fn is_insert_hyphens_set(&self) -> bool {
1724        ObjectExt::property(self.as_ref(), "insert-hyphens-set")
1725    }
1726
1727    /// Whether this text is hidden.
1728    ///
1729    /// Note that there may still be problems with the support for invisible
1730    /// text, in particular when navigating programmatically inside a buffer
1731    /// containing invisible segments.
1732    fn is_invisible(&self) -> bool {
1733        ObjectExt::property(self.as_ref(), "invisible")
1734    }
1735
1736    /// Whether this text is hidden.
1737    ///
1738    /// Note that there may still be problems with the support for invisible
1739    /// text, in particular when navigating programmatically inside a buffer
1740    /// containing invisible segments.
1741    fn set_invisible(&self, invisible: bool) {
1742        ObjectExt::set_property(self.as_ref(), "invisible", invisible)
1743    }
1744
1745    /// Whether the `invisible` property is set.
1746    #[doc(alias = "invisible-set")]
1747    fn is_invisible_set(&self) -> bool {
1748        ObjectExt::property(self.as_ref(), "invisible-set")
1749    }
1750
1751    /// Left, right, or center justification.
1752    fn justification(&self) -> Justification {
1753        ObjectExt::property(self.as_ref(), "justification")
1754    }
1755
1756    /// Left, right, or center justification.
1757    fn set_justification(&self, justification: Justification) {
1758        ObjectExt::set_property(self.as_ref(), "justification", justification)
1759    }
1760
1761    /// Whether the `justification` property is set.
1762    #[doc(alias = "justification-set")]
1763    fn is_justification_set(&self) -> bool {
1764        ObjectExt::property(self.as_ref(), "justification-set")
1765    }
1766
1767    /// The language this text is in, as an ISO code.
1768    ///
1769    /// Pango can use this as a hint when rendering the text.
1770    /// If not set, an appropriate default will be used.
1771    ///
1772    /// Note that the initial value of this property depends
1773    /// on the current locale, see also [`default_language()`][crate::default_language()].
1774    fn language(&self) -> Option<glib::GString> {
1775        ObjectExt::property(self.as_ref(), "language")
1776    }
1777
1778    /// The language this text is in, as an ISO code.
1779    ///
1780    /// Pango can use this as a hint when rendering the text.
1781    /// If not set, an appropriate default will be used.
1782    ///
1783    /// Note that the initial value of this property depends
1784    /// on the current locale, see also [`default_language()`][crate::default_language()].
1785    fn set_language(&self, language: Option<&str>) {
1786        ObjectExt::set_property(self.as_ref(), "language", language)
1787    }
1788
1789    /// Whether the `language` property is set.
1790    #[doc(alias = "language-set")]
1791    fn is_language_set(&self) -> bool {
1792        ObjectExt::property(self.as_ref(), "language-set")
1793    }
1794
1795    /// Width of the left margin in pixels.
1796    #[doc(alias = "left-margin")]
1797    fn left_margin(&self) -> i32 {
1798        ObjectExt::property(self.as_ref(), "left-margin")
1799    }
1800
1801    /// Width of the left margin in pixels.
1802    #[doc(alias = "left-margin")]
1803    fn set_left_margin(&self, left_margin: i32) {
1804        ObjectExt::set_property(self.as_ref(), "left-margin", left_margin)
1805    }
1806
1807    /// Whether the `left-margin` property is set.
1808    #[doc(alias = "left-margin-set")]
1809    fn is_left_margin_set(&self) -> bool {
1810        ObjectExt::property(self.as_ref(), "left-margin-set")
1811    }
1812
1813    /// Extra spacing between graphemes, in Pango units.
1814    #[doc(alias = "letter-spacing")]
1815    fn letter_spacing(&self) -> i32 {
1816        ObjectExt::property(self.as_ref(), "letter-spacing")
1817    }
1818
1819    /// Extra spacing between graphemes, in Pango units.
1820    #[doc(alias = "letter-spacing")]
1821    fn set_letter_spacing(&self, letter_spacing: i32) {
1822        ObjectExt::set_property(self.as_ref(), "letter-spacing", letter_spacing)
1823    }
1824
1825    /// Whether the `letter-spacing` property is set.
1826    #[doc(alias = "letter-spacing-set")]
1827    fn is_letter_spacing_set(&self) -> bool {
1828        ObjectExt::property(self.as_ref(), "letter-spacing-set")
1829    }
1830
1831    /// Factor to scale line height by.
1832    #[cfg(feature = "v4_6")]
1833    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
1834    #[doc(alias = "line-height")]
1835    fn line_height(&self) -> f32 {
1836        ObjectExt::property(self.as_ref(), "line-height")
1837    }
1838
1839    /// Factor to scale line height by.
1840    #[cfg(feature = "v4_6")]
1841    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
1842    #[doc(alias = "line-height")]
1843    fn set_line_height(&self, line_height: f32) {
1844        ObjectExt::set_property(self.as_ref(), "line-height", line_height)
1845    }
1846
1847    /// Whether the `line-height` property is set.
1848    #[cfg(feature = "v4_6")]
1849    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
1850    #[doc(alias = "line-height-set")]
1851    fn is_line_height_set(&self) -> bool {
1852        ObjectExt::property(self.as_ref(), "line-height-set")
1853    }
1854
1855    /// The name used to refer to the tag.
1856    ///
1857    /// [`None`] for anonymous tags.
1858    fn name(&self) -> Option<glib::GString> {
1859        ObjectExt::property(self.as_ref(), "name")
1860    }
1861
1862    /// Style of overline for this text.
1863    fn overline(&self) -> pango::Overline {
1864        ObjectExt::property(self.as_ref(), "overline")
1865    }
1866
1867    /// Style of overline for this text.
1868    fn set_overline(&self, overline: pango::Overline) {
1869        ObjectExt::set_property(self.as_ref(), "overline", overline)
1870    }
1871
1872    /// This property modifies the color of overlines.
1873    ///
1874    /// If not set, overlines will use the foreground color.
1875    #[doc(alias = "overline-rgba")]
1876    fn overline_rgba(&self) -> Option<gdk::RGBA> {
1877        ObjectExt::property(self.as_ref(), "overline-rgba")
1878    }
1879
1880    /// This property modifies the color of overlines.
1881    ///
1882    /// If not set, overlines will use the foreground color.
1883    #[doc(alias = "overline-rgba")]
1884    fn set_overline_rgba(&self, overline_rgba: Option<&gdk::RGBA>) {
1885        ObjectExt::set_property(self.as_ref(), "overline-rgba", overline_rgba)
1886    }
1887
1888    /// Whether the `overline-rgba` property is set.
1889    #[doc(alias = "overline-rgba-set")]
1890    fn is_overline_rgba_set(&self) -> bool {
1891        ObjectExt::property(self.as_ref(), "overline-rgba-set")
1892    }
1893
1894    /// Whether the `overline` property is set.
1895    #[doc(alias = "overline-set")]
1896    fn is_overline_set(&self) -> bool {
1897        ObjectExt::property(self.as_ref(), "overline-set")
1898    }
1899
1900    /// The paragraph background color as a string.
1901    #[doc(alias = "paragraph-background")]
1902    fn set_paragraph_background(&self, paragraph_background: Option<&str>) {
1903        ObjectExt::set_property(self.as_ref(), "paragraph-background", paragraph_background)
1904    }
1905
1906    /// The paragraph background color as a [`gdk::RGBA`][crate::gdk::RGBA].
1907    #[doc(alias = "paragraph-background-rgba")]
1908    fn paragraph_background_rgba(&self) -> Option<gdk::RGBA> {
1909        ObjectExt::property(self.as_ref(), "paragraph-background-rgba")
1910    }
1911
1912    /// The paragraph background color as a [`gdk::RGBA`][crate::gdk::RGBA].
1913    #[doc(alias = "paragraph-background-rgba")]
1914    fn set_paragraph_background_rgba(&self, paragraph_background_rgba: Option<&gdk::RGBA>) {
1915        ObjectExt::set_property(
1916            self.as_ref(),
1917            "paragraph-background-rgba",
1918            paragraph_background_rgba,
1919        )
1920    }
1921
1922    /// Whether the `paragraph-background` property is set.
1923    #[doc(alias = "paragraph-background-set")]
1924    fn is_paragraph_background_set(&self) -> bool {
1925        ObjectExt::property(self.as_ref(), "paragraph-background-set")
1926    }
1927
1928    /// Pixels of blank space above paragraphs.
1929    #[doc(alias = "pixels-above-lines")]
1930    fn pixels_above_lines(&self) -> i32 {
1931        ObjectExt::property(self.as_ref(), "pixels-above-lines")
1932    }
1933
1934    /// Pixels of blank space above paragraphs.
1935    #[doc(alias = "pixels-above-lines")]
1936    fn set_pixels_above_lines(&self, pixels_above_lines: i32) {
1937        ObjectExt::set_property(self.as_ref(), "pixels-above-lines", pixels_above_lines)
1938    }
1939
1940    /// Whether the `pixels-above-lines` property is set.
1941    #[doc(alias = "pixels-above-lines-set")]
1942    fn is_pixels_above_lines_set(&self) -> bool {
1943        ObjectExt::property(self.as_ref(), "pixels-above-lines-set")
1944    }
1945
1946    /// Pixels of blank space below paragraphs.
1947    #[doc(alias = "pixels-below-lines")]
1948    fn pixels_below_lines(&self) -> i32 {
1949        ObjectExt::property(self.as_ref(), "pixels-below-lines")
1950    }
1951
1952    /// Pixels of blank space below paragraphs.
1953    #[doc(alias = "pixels-below-lines")]
1954    fn set_pixels_below_lines(&self, pixels_below_lines: i32) {
1955        ObjectExt::set_property(self.as_ref(), "pixels-below-lines", pixels_below_lines)
1956    }
1957
1958    /// Whether the `pixels-below-lines` property is set.
1959    #[doc(alias = "pixels-below-lines-set")]
1960    fn is_pixels_below_lines_set(&self) -> bool {
1961        ObjectExt::property(self.as_ref(), "pixels-below-lines-set")
1962    }
1963
1964    /// Pixels of blank space between wrapped lines in a paragraph.
1965    #[doc(alias = "pixels-inside-wrap")]
1966    fn pixels_inside_wrap(&self) -> i32 {
1967        ObjectExt::property(self.as_ref(), "pixels-inside-wrap")
1968    }
1969
1970    /// Pixels of blank space between wrapped lines in a paragraph.
1971    #[doc(alias = "pixels-inside-wrap")]
1972    fn set_pixels_inside_wrap(&self, pixels_inside_wrap: i32) {
1973        ObjectExt::set_property(self.as_ref(), "pixels-inside-wrap", pixels_inside_wrap)
1974    }
1975
1976    /// Whether the `pixels-inside-wrap` property is set.
1977    #[doc(alias = "pixels-inside-wrap-set")]
1978    fn is_pixels_inside_wrap_set(&self) -> bool {
1979        ObjectExt::property(self.as_ref(), "pixels-inside-wrap-set")
1980    }
1981
1982    /// Width of the right margin, in pixels.
1983    #[doc(alias = "right-margin")]
1984    fn right_margin(&self) -> i32 {
1985        ObjectExt::property(self.as_ref(), "right-margin")
1986    }
1987
1988    /// Width of the right margin, in pixels.
1989    #[doc(alias = "right-margin")]
1990    fn set_right_margin(&self, right_margin: i32) {
1991        ObjectExt::set_property(self.as_ref(), "right-margin", right_margin)
1992    }
1993
1994    /// Whether the `right-margin` property is set.
1995    #[doc(alias = "right-margin-set")]
1996    fn is_right_margin_set(&self) -> bool {
1997        ObjectExt::property(self.as_ref(), "right-margin-set")
1998    }
1999
2000    /// Offset of text above the baseline, in Pango units.
2001    ///
2002    /// Negative values go below the baseline.
2003    fn rise(&self) -> i32 {
2004        ObjectExt::property(self.as_ref(), "rise")
2005    }
2006
2007    /// Offset of text above the baseline, in Pango units.
2008    ///
2009    /// Negative values go below the baseline.
2010    fn set_rise(&self, rise: i32) {
2011        ObjectExt::set_property(self.as_ref(), "rise", rise)
2012    }
2013
2014    /// Whether the `rise` property is set.
2015    #[doc(alias = "rise-set")]
2016    fn is_rise_set(&self) -> bool {
2017        ObjectExt::property(self.as_ref(), "rise-set")
2018    }
2019
2020    /// Font size as a scale factor relative to the default font size.
2021    ///
2022    /// This properly adapts to theme changes, etc. so is recommended.
2023    /// Pango predefines some scales such as `PANGO_SCALE_X_LARGE`.
2024    fn scale(&self) -> f64 {
2025        ObjectExt::property(self.as_ref(), "scale")
2026    }
2027
2028    /// Font size as a scale factor relative to the default font size.
2029    ///
2030    /// This properly adapts to theme changes, etc. so is recommended.
2031    /// Pango predefines some scales such as `PANGO_SCALE_X_LARGE`.
2032    fn set_scale(&self, scale: f64) {
2033        ObjectExt::set_property(self.as_ref(), "scale", scale)
2034    }
2035
2036    /// Whether the `scale` property is set.
2037    #[doc(alias = "scale-set")]
2038    fn is_scale_set(&self) -> bool {
2039        ObjectExt::property(self.as_ref(), "scale-set")
2040    }
2041
2042    /// Whether this tag represents a single sentence.
2043    ///
2044    /// This affects cursor movement.
2045    #[cfg(feature = "v4_6")]
2046    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
2047    fn is_sentence(&self) -> bool {
2048        ObjectExt::property(self.as_ref(), "sentence")
2049    }
2050
2051    /// Whether this tag represents a single sentence.
2052    ///
2053    /// This affects cursor movement.
2054    #[cfg(feature = "v4_6")]
2055    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
2056    fn set_sentence(&self, sentence: bool) {
2057        ObjectExt::set_property(self.as_ref(), "sentence", sentence)
2058    }
2059
2060    /// Whether the `sentence` property is set.
2061    #[cfg(feature = "v4_6")]
2062    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
2063    #[doc(alias = "sentence-set")]
2064    fn is_sentence_set(&self) -> bool {
2065        ObjectExt::property(self.as_ref(), "sentence-set")
2066    }
2067
2068    /// How to render invisible characters.
2069    #[doc(alias = "show-spaces")]
2070    fn show_spaces(&self) -> pango::ShowFlags {
2071        ObjectExt::property(self.as_ref(), "show-spaces")
2072    }
2073
2074    /// How to render invisible characters.
2075    #[doc(alias = "show-spaces")]
2076    fn set_show_spaces(&self, show_spaces: pango::ShowFlags) {
2077        ObjectExt::set_property(self.as_ref(), "show-spaces", show_spaces)
2078    }
2079
2080    /// Whether the `show-spaces` property is set.
2081    #[doc(alias = "show-spaces-set")]
2082    fn shows_spaces_set(&self) -> bool {
2083        ObjectExt::property(self.as_ref(), "show-spaces-set")
2084    }
2085
2086    /// Font size in Pango units.
2087    fn size(&self) -> i32 {
2088        ObjectExt::property(self.as_ref(), "size")
2089    }
2090
2091    /// Font size in Pango units.
2092    fn set_size(&self, size: i32) {
2093        ObjectExt::set_property(self.as_ref(), "size", size)
2094    }
2095
2096    /// Font size in points.
2097    #[doc(alias = "size-points")]
2098    fn size_points(&self) -> f64 {
2099        ObjectExt::property(self.as_ref(), "size-points")
2100    }
2101
2102    /// Font size in points.
2103    #[doc(alias = "size-points")]
2104    fn set_size_points(&self, size_points: f64) {
2105        ObjectExt::set_property(self.as_ref(), "size-points", size_points)
2106    }
2107
2108    /// Whether the `size` property is set.
2109    #[doc(alias = "size-set")]
2110    fn is_size_set(&self) -> bool {
2111        ObjectExt::property(self.as_ref(), "size-set")
2112    }
2113
2114    /// Font stretch as a [`pango::Stretch`][crate::pango::Stretch], e.g. [`pango::Stretch::Condensed`][crate::pango::Stretch::Condensed].
2115    fn stretch(&self) -> pango::Stretch {
2116        ObjectExt::property(self.as_ref(), "stretch")
2117    }
2118
2119    /// Font stretch as a [`pango::Stretch`][crate::pango::Stretch], e.g. [`pango::Stretch::Condensed`][crate::pango::Stretch::Condensed].
2120    fn set_stretch(&self, stretch: pango::Stretch) {
2121        ObjectExt::set_property(self.as_ref(), "stretch", stretch)
2122    }
2123
2124    /// Whether the `stretch` property is set.
2125    #[doc(alias = "stretch-set")]
2126    fn is_stretch_set(&self) -> bool {
2127        ObjectExt::property(self.as_ref(), "stretch-set")
2128    }
2129
2130    /// Whether to strike through the text.
2131    fn is_strikethrough(&self) -> bool {
2132        ObjectExt::property(self.as_ref(), "strikethrough")
2133    }
2134
2135    /// Whether to strike through the text.
2136    fn set_strikethrough(&self, strikethrough: bool) {
2137        ObjectExt::set_property(self.as_ref(), "strikethrough", strikethrough)
2138    }
2139
2140    /// This property modifies the color of strikeouts.
2141    ///
2142    /// If not set, strikeouts will use the foreground color.
2143    #[doc(alias = "strikethrough-rgba")]
2144    fn strikethrough_rgba(&self) -> Option<gdk::RGBA> {
2145        ObjectExt::property(self.as_ref(), "strikethrough-rgba")
2146    }
2147
2148    /// This property modifies the color of strikeouts.
2149    ///
2150    /// If not set, strikeouts will use the foreground color.
2151    #[doc(alias = "strikethrough-rgba")]
2152    fn set_strikethrough_rgba(&self, strikethrough_rgba: Option<&gdk::RGBA>) {
2153        ObjectExt::set_property(self.as_ref(), "strikethrough-rgba", strikethrough_rgba)
2154    }
2155
2156    /// If the `strikethrough-rgba` property has been set.
2157    #[doc(alias = "strikethrough-rgba-set")]
2158    fn is_strikethrough_rgba_set(&self) -> bool {
2159        ObjectExt::property(self.as_ref(), "strikethrough-rgba-set")
2160    }
2161
2162    /// Whether the `strikethrough` property is set.
2163    #[doc(alias = "strikethrough-set")]
2164    fn is_strikethrough_set(&self) -> bool {
2165        ObjectExt::property(self.as_ref(), "strikethrough-set")
2166    }
2167
2168    /// Font style as a [`pango::Style`][crate::pango::Style], e.g. [`pango::Style::Italic`][crate::pango::Style::Italic].
2169    fn style(&self) -> pango::Style {
2170        ObjectExt::property(self.as_ref(), "style")
2171    }
2172
2173    /// Font style as a [`pango::Style`][crate::pango::Style], e.g. [`pango::Style::Italic`][crate::pango::Style::Italic].
2174    fn set_style(&self, style: pango::Style) {
2175        ObjectExt::set_property(self.as_ref(), "style", style)
2176    }
2177
2178    /// Whether the `style` property is set.
2179    #[doc(alias = "style-set")]
2180    fn is_style_set(&self) -> bool {
2181        ObjectExt::property(self.as_ref(), "style-set")
2182    }
2183
2184    /// Custom tabs for this text.
2185    fn tabs(&self) -> Option<pango::TabArray> {
2186        ObjectExt::property(self.as_ref(), "tabs")
2187    }
2188
2189    /// Custom tabs for this text.
2190    fn set_tabs(&self, tabs: Option<&pango::TabArray>) {
2191        ObjectExt::set_property(self.as_ref(), "tabs", tabs)
2192    }
2193
2194    /// Whether the `tabs` property is set.
2195    #[doc(alias = "tabs-set")]
2196    fn is_tabs_set(&self) -> bool {
2197        ObjectExt::property(self.as_ref(), "tabs-set")
2198    }
2199
2200    /// How to transform the text for display.
2201    #[cfg(feature = "v4_6")]
2202    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
2203    #[doc(alias = "text-transform")]
2204    fn text_transform(&self) -> pango::TextTransform {
2205        ObjectExt::property(self.as_ref(), "text-transform")
2206    }
2207
2208    /// How to transform the text for display.
2209    #[cfg(feature = "v4_6")]
2210    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
2211    #[doc(alias = "text-transform")]
2212    fn set_text_transform(&self, text_transform: pango::TextTransform) {
2213        ObjectExt::set_property(self.as_ref(), "text-transform", text_transform)
2214    }
2215
2216    /// Whether the `text-transform` property is set.
2217    #[cfg(feature = "v4_6")]
2218    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
2219    #[doc(alias = "text-transform-set")]
2220    fn is_text_transform_set(&self) -> bool {
2221        ObjectExt::property(self.as_ref(), "text-transform-set")
2222    }
2223
2224    /// Style of underline for this text.
2225    fn underline(&self) -> pango::Underline {
2226        ObjectExt::property(self.as_ref(), "underline")
2227    }
2228
2229    /// Style of underline for this text.
2230    fn set_underline(&self, underline: pango::Underline) {
2231        ObjectExt::set_property(self.as_ref(), "underline", underline)
2232    }
2233
2234    /// This property modifies the color of underlines.
2235    ///
2236    /// If not set, underlines will use the foreground color.
2237    ///
2238    /// If [`underline`][struct@crate::TextTag#underline] is set to [`pango::Underline::Error`][crate::pango::Underline::Error],
2239    /// an alternate color may be applied instead of the foreground. Setting
2240    /// this property will always override those defaults.
2241    #[doc(alias = "underline-rgba")]
2242    fn underline_rgba(&self) -> Option<gdk::RGBA> {
2243        ObjectExt::property(self.as_ref(), "underline-rgba")
2244    }
2245
2246    /// This property modifies the color of underlines.
2247    ///
2248    /// If not set, underlines will use the foreground color.
2249    ///
2250    /// If [`underline`][struct@crate::TextTag#underline] is set to [`pango::Underline::Error`][crate::pango::Underline::Error],
2251    /// an alternate color may be applied instead of the foreground. Setting
2252    /// this property will always override those defaults.
2253    #[doc(alias = "underline-rgba")]
2254    fn set_underline_rgba(&self, underline_rgba: Option<&gdk::RGBA>) {
2255        ObjectExt::set_property(self.as_ref(), "underline-rgba", underline_rgba)
2256    }
2257
2258    /// If the `underline-rgba` property has been set.
2259    #[doc(alias = "underline-rgba-set")]
2260    fn is_underline_rgba_set(&self) -> bool {
2261        ObjectExt::property(self.as_ref(), "underline-rgba-set")
2262    }
2263
2264    /// Whether the `underline` property is set.
2265    #[doc(alias = "underline-set")]
2266    fn is_underline_set(&self) -> bool {
2267        ObjectExt::property(self.as_ref(), "underline-set")
2268    }
2269
2270    /// Font variant as a [`pango::Variant`][crate::pango::Variant], e.g. [`pango::Variant::SmallCaps`][crate::pango::Variant::SmallCaps].
2271    fn variant(&self) -> pango::Variant {
2272        ObjectExt::property(self.as_ref(), "variant")
2273    }
2274
2275    /// Font variant as a [`pango::Variant`][crate::pango::Variant], e.g. [`pango::Variant::SmallCaps`][crate::pango::Variant::SmallCaps].
2276    fn set_variant(&self, variant: pango::Variant) {
2277        ObjectExt::set_property(self.as_ref(), "variant", variant)
2278    }
2279
2280    /// Whether the `variant` property is set.
2281    #[doc(alias = "variant-set")]
2282    fn is_variant_set(&self) -> bool {
2283        ObjectExt::property(self.as_ref(), "variant-set")
2284    }
2285
2286    /// Font weight as an integer.
2287    fn weight(&self) -> i32 {
2288        ObjectExt::property(self.as_ref(), "weight")
2289    }
2290
2291    /// Font weight as an integer.
2292    fn set_weight(&self, weight: i32) {
2293        ObjectExt::set_property(self.as_ref(), "weight", weight)
2294    }
2295
2296    /// Whether the `weight` property is set.
2297    #[doc(alias = "weight-set")]
2298    fn is_weight_set(&self) -> bool {
2299        ObjectExt::property(self.as_ref(), "weight-set")
2300    }
2301
2302    /// Whether this tag represents a single word.
2303    ///
2304    /// This affects line breaks and cursor movement.
2305    #[cfg(feature = "v4_6")]
2306    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
2307    fn is_word(&self) -> bool {
2308        ObjectExt::property(self.as_ref(), "word")
2309    }
2310
2311    /// Whether this tag represents a single word.
2312    ///
2313    /// This affects line breaks and cursor movement.
2314    #[cfg(feature = "v4_6")]
2315    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
2316    fn set_word(&self, word: bool) {
2317        ObjectExt::set_property(self.as_ref(), "word", word)
2318    }
2319
2320    /// Whether the `word` property is set.
2321    #[cfg(feature = "v4_6")]
2322    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
2323    #[doc(alias = "word-set")]
2324    fn is_word_set(&self) -> bool {
2325        ObjectExt::property(self.as_ref(), "word-set")
2326    }
2327
2328    /// Whether to wrap lines never, at word boundaries, or
2329    /// at character boundaries.
2330    #[doc(alias = "wrap-mode")]
2331    fn wrap_mode(&self) -> WrapMode {
2332        ObjectExt::property(self.as_ref(), "wrap-mode")
2333    }
2334
2335    /// Whether to wrap lines never, at word boundaries, or
2336    /// at character boundaries.
2337    #[doc(alias = "wrap-mode")]
2338    fn set_wrap_mode(&self, wrap_mode: WrapMode) {
2339        ObjectExt::set_property(self.as_ref(), "wrap-mode", wrap_mode)
2340    }
2341
2342    /// Whether the `wrap-mode` property is set.
2343    #[doc(alias = "wrap-mode-set")]
2344    fn wraps_mode_set(&self) -> bool {
2345        ObjectExt::property(self.as_ref(), "wrap-mode-set")
2346    }
2347
2348    #[doc(alias = "accumulative-margin")]
2349    fn connect_accumulative_margin_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2350        unsafe extern "C" fn notify_accumulative_margin_trampoline<
2351            P: IsA<TextTag>,
2352            F: Fn(&P) + 'static,
2353        >(
2354            this: *mut ffi::GtkTextTag,
2355            _param_spec: glib::ffi::gpointer,
2356            f: glib::ffi::gpointer,
2357        ) {
2358            unsafe {
2359                let f: &F = &*(f as *const F);
2360                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2361            }
2362        }
2363        unsafe {
2364            let f: Box_<F> = Box_::new(f);
2365            connect_raw(
2366                self.as_ptr() as *mut _,
2367                c"notify::accumulative-margin".as_ptr() as *const _,
2368                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2369                    notify_accumulative_margin_trampoline::<Self, F> as *const (),
2370                )),
2371                Box_::into_raw(f),
2372            )
2373        }
2374    }
2375
2376    #[doc(alias = "allow-breaks")]
2377    fn connect_allow_breaks_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2378        unsafe extern "C" fn notify_allow_breaks_trampoline<
2379            P: IsA<TextTag>,
2380            F: Fn(&P) + 'static,
2381        >(
2382            this: *mut ffi::GtkTextTag,
2383            _param_spec: glib::ffi::gpointer,
2384            f: glib::ffi::gpointer,
2385        ) {
2386            unsafe {
2387                let f: &F = &*(f as *const F);
2388                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2389            }
2390        }
2391        unsafe {
2392            let f: Box_<F> = Box_::new(f);
2393            connect_raw(
2394                self.as_ptr() as *mut _,
2395                c"notify::allow-breaks".as_ptr() as *const _,
2396                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2397                    notify_allow_breaks_trampoline::<Self, F> as *const (),
2398                )),
2399                Box_::into_raw(f),
2400            )
2401        }
2402    }
2403
2404    #[doc(alias = "allow-breaks-set")]
2405    fn connect_allow_breaks_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2406        unsafe extern "C" fn notify_allow_breaks_set_trampoline<
2407            P: IsA<TextTag>,
2408            F: Fn(&P) + 'static,
2409        >(
2410            this: *mut ffi::GtkTextTag,
2411            _param_spec: glib::ffi::gpointer,
2412            f: glib::ffi::gpointer,
2413        ) {
2414            unsafe {
2415                let f: &F = &*(f as *const F);
2416                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2417            }
2418        }
2419        unsafe {
2420            let f: Box_<F> = Box_::new(f);
2421            connect_raw(
2422                self.as_ptr() as *mut _,
2423                c"notify::allow-breaks-set".as_ptr() as *const _,
2424                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2425                    notify_allow_breaks_set_trampoline::<Self, F> as *const (),
2426                )),
2427                Box_::into_raw(f),
2428            )
2429        }
2430    }
2431
2432    #[doc(alias = "background")]
2433    fn connect_background_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2434        unsafe extern "C" fn notify_background_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2435            this: *mut ffi::GtkTextTag,
2436            _param_spec: glib::ffi::gpointer,
2437            f: glib::ffi::gpointer,
2438        ) {
2439            unsafe {
2440                let f: &F = &*(f as *const F);
2441                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2442            }
2443        }
2444        unsafe {
2445            let f: Box_<F> = Box_::new(f);
2446            connect_raw(
2447                self.as_ptr() as *mut _,
2448                c"notify::background".as_ptr() as *const _,
2449                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2450                    notify_background_trampoline::<Self, F> as *const (),
2451                )),
2452                Box_::into_raw(f),
2453            )
2454        }
2455    }
2456
2457    #[doc(alias = "background-full-height")]
2458    fn connect_background_full_height_notify<F: Fn(&Self) + 'static>(
2459        &self,
2460        f: F,
2461    ) -> SignalHandlerId {
2462        unsafe extern "C" fn notify_background_full_height_trampoline<
2463            P: IsA<TextTag>,
2464            F: Fn(&P) + 'static,
2465        >(
2466            this: *mut ffi::GtkTextTag,
2467            _param_spec: glib::ffi::gpointer,
2468            f: glib::ffi::gpointer,
2469        ) {
2470            unsafe {
2471                let f: &F = &*(f as *const F);
2472                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2473            }
2474        }
2475        unsafe {
2476            let f: Box_<F> = Box_::new(f);
2477            connect_raw(
2478                self.as_ptr() as *mut _,
2479                c"notify::background-full-height".as_ptr() as *const _,
2480                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2481                    notify_background_full_height_trampoline::<Self, F> as *const (),
2482                )),
2483                Box_::into_raw(f),
2484            )
2485        }
2486    }
2487
2488    #[doc(alias = "background-full-height-set")]
2489    fn connect_background_full_height_set_notify<F: Fn(&Self) + 'static>(
2490        &self,
2491        f: F,
2492    ) -> SignalHandlerId {
2493        unsafe extern "C" fn notify_background_full_height_set_trampoline<
2494            P: IsA<TextTag>,
2495            F: Fn(&P) + 'static,
2496        >(
2497            this: *mut ffi::GtkTextTag,
2498            _param_spec: glib::ffi::gpointer,
2499            f: glib::ffi::gpointer,
2500        ) {
2501            unsafe {
2502                let f: &F = &*(f as *const F);
2503                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2504            }
2505        }
2506        unsafe {
2507            let f: Box_<F> = Box_::new(f);
2508            connect_raw(
2509                self.as_ptr() as *mut _,
2510                c"notify::background-full-height-set".as_ptr() as *const _,
2511                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2512                    notify_background_full_height_set_trampoline::<Self, F> as *const (),
2513                )),
2514                Box_::into_raw(f),
2515            )
2516        }
2517    }
2518
2519    #[doc(alias = "background-rgba")]
2520    fn connect_background_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2521        unsafe extern "C" fn notify_background_rgba_trampoline<
2522            P: IsA<TextTag>,
2523            F: Fn(&P) + 'static,
2524        >(
2525            this: *mut ffi::GtkTextTag,
2526            _param_spec: glib::ffi::gpointer,
2527            f: glib::ffi::gpointer,
2528        ) {
2529            unsafe {
2530                let f: &F = &*(f as *const F);
2531                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2532            }
2533        }
2534        unsafe {
2535            let f: Box_<F> = Box_::new(f);
2536            connect_raw(
2537                self.as_ptr() as *mut _,
2538                c"notify::background-rgba".as_ptr() as *const _,
2539                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2540                    notify_background_rgba_trampoline::<Self, F> as *const (),
2541                )),
2542                Box_::into_raw(f),
2543            )
2544        }
2545    }
2546
2547    #[doc(alias = "background-set")]
2548    fn connect_background_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2549        unsafe extern "C" fn notify_background_set_trampoline<
2550            P: IsA<TextTag>,
2551            F: Fn(&P) + 'static,
2552        >(
2553            this: *mut ffi::GtkTextTag,
2554            _param_spec: glib::ffi::gpointer,
2555            f: glib::ffi::gpointer,
2556        ) {
2557            unsafe {
2558                let f: &F = &*(f as *const F);
2559                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2560            }
2561        }
2562        unsafe {
2563            let f: Box_<F> = Box_::new(f);
2564            connect_raw(
2565                self.as_ptr() as *mut _,
2566                c"notify::background-set".as_ptr() as *const _,
2567                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2568                    notify_background_set_trampoline::<Self, F> as *const (),
2569                )),
2570                Box_::into_raw(f),
2571            )
2572        }
2573    }
2574
2575    #[doc(alias = "direction")]
2576    fn connect_direction_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2577        unsafe extern "C" fn notify_direction_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2578            this: *mut ffi::GtkTextTag,
2579            _param_spec: glib::ffi::gpointer,
2580            f: glib::ffi::gpointer,
2581        ) {
2582            unsafe {
2583                let f: &F = &*(f as *const F);
2584                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2585            }
2586        }
2587        unsafe {
2588            let f: Box_<F> = Box_::new(f);
2589            connect_raw(
2590                self.as_ptr() as *mut _,
2591                c"notify::direction".as_ptr() as *const _,
2592                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2593                    notify_direction_trampoline::<Self, F> as *const (),
2594                )),
2595                Box_::into_raw(f),
2596            )
2597        }
2598    }
2599
2600    #[doc(alias = "editable")]
2601    fn connect_editable_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2602        unsafe extern "C" fn notify_editable_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2603            this: *mut ffi::GtkTextTag,
2604            _param_spec: glib::ffi::gpointer,
2605            f: glib::ffi::gpointer,
2606        ) {
2607            unsafe {
2608                let f: &F = &*(f as *const F);
2609                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2610            }
2611        }
2612        unsafe {
2613            let f: Box_<F> = Box_::new(f);
2614            connect_raw(
2615                self.as_ptr() as *mut _,
2616                c"notify::editable".as_ptr() as *const _,
2617                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2618                    notify_editable_trampoline::<Self, F> as *const (),
2619                )),
2620                Box_::into_raw(f),
2621            )
2622        }
2623    }
2624
2625    #[doc(alias = "editable-set")]
2626    fn connect_editable_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2627        unsafe extern "C" fn notify_editable_set_trampoline<
2628            P: IsA<TextTag>,
2629            F: Fn(&P) + 'static,
2630        >(
2631            this: *mut ffi::GtkTextTag,
2632            _param_spec: glib::ffi::gpointer,
2633            f: glib::ffi::gpointer,
2634        ) {
2635            unsafe {
2636                let f: &F = &*(f as *const F);
2637                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2638            }
2639        }
2640        unsafe {
2641            let f: Box_<F> = Box_::new(f);
2642            connect_raw(
2643                self.as_ptr() as *mut _,
2644                c"notify::editable-set".as_ptr() as *const _,
2645                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2646                    notify_editable_set_trampoline::<Self, F> as *const (),
2647                )),
2648                Box_::into_raw(f),
2649            )
2650        }
2651    }
2652
2653    #[doc(alias = "fallback")]
2654    fn connect_fallback_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2655        unsafe extern "C" fn notify_fallback_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2656            this: *mut ffi::GtkTextTag,
2657            _param_spec: glib::ffi::gpointer,
2658            f: glib::ffi::gpointer,
2659        ) {
2660            unsafe {
2661                let f: &F = &*(f as *const F);
2662                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2663            }
2664        }
2665        unsafe {
2666            let f: Box_<F> = Box_::new(f);
2667            connect_raw(
2668                self.as_ptr() as *mut _,
2669                c"notify::fallback".as_ptr() as *const _,
2670                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2671                    notify_fallback_trampoline::<Self, F> as *const (),
2672                )),
2673                Box_::into_raw(f),
2674            )
2675        }
2676    }
2677
2678    #[doc(alias = "fallback-set")]
2679    fn connect_fallback_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2680        unsafe extern "C" fn notify_fallback_set_trampoline<
2681            P: IsA<TextTag>,
2682            F: Fn(&P) + 'static,
2683        >(
2684            this: *mut ffi::GtkTextTag,
2685            _param_spec: glib::ffi::gpointer,
2686            f: glib::ffi::gpointer,
2687        ) {
2688            unsafe {
2689                let f: &F = &*(f as *const F);
2690                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2691            }
2692        }
2693        unsafe {
2694            let f: Box_<F> = Box_::new(f);
2695            connect_raw(
2696                self.as_ptr() as *mut _,
2697                c"notify::fallback-set".as_ptr() as *const _,
2698                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2699                    notify_fallback_set_trampoline::<Self, F> as *const (),
2700                )),
2701                Box_::into_raw(f),
2702            )
2703        }
2704    }
2705
2706    #[doc(alias = "family")]
2707    fn connect_family_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2708        unsafe extern "C" fn notify_family_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2709            this: *mut ffi::GtkTextTag,
2710            _param_spec: glib::ffi::gpointer,
2711            f: glib::ffi::gpointer,
2712        ) {
2713            unsafe {
2714                let f: &F = &*(f as *const F);
2715                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2716            }
2717        }
2718        unsafe {
2719            let f: Box_<F> = Box_::new(f);
2720            connect_raw(
2721                self.as_ptr() as *mut _,
2722                c"notify::family".as_ptr() as *const _,
2723                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2724                    notify_family_trampoline::<Self, F> as *const (),
2725                )),
2726                Box_::into_raw(f),
2727            )
2728        }
2729    }
2730
2731    #[doc(alias = "family-set")]
2732    fn connect_family_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2733        unsafe extern "C" fn notify_family_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2734            this: *mut ffi::GtkTextTag,
2735            _param_spec: glib::ffi::gpointer,
2736            f: glib::ffi::gpointer,
2737        ) {
2738            unsafe {
2739                let f: &F = &*(f as *const F);
2740                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2741            }
2742        }
2743        unsafe {
2744            let f: Box_<F> = Box_::new(f);
2745            connect_raw(
2746                self.as_ptr() as *mut _,
2747                c"notify::family-set".as_ptr() as *const _,
2748                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2749                    notify_family_set_trampoline::<Self, F> as *const (),
2750                )),
2751                Box_::into_raw(f),
2752            )
2753        }
2754    }
2755
2756    #[doc(alias = "font")]
2757    fn connect_font_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2758        unsafe extern "C" fn notify_font_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2759            this: *mut ffi::GtkTextTag,
2760            _param_spec: glib::ffi::gpointer,
2761            f: glib::ffi::gpointer,
2762        ) {
2763            unsafe {
2764                let f: &F = &*(f as *const F);
2765                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2766            }
2767        }
2768        unsafe {
2769            let f: Box_<F> = Box_::new(f);
2770            connect_raw(
2771                self.as_ptr() as *mut _,
2772                c"notify::font".as_ptr() as *const _,
2773                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2774                    notify_font_trampoline::<Self, F> as *const (),
2775                )),
2776                Box_::into_raw(f),
2777            )
2778        }
2779    }
2780
2781    #[doc(alias = "font-desc")]
2782    fn connect_font_desc_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2783        unsafe extern "C" fn notify_font_desc_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2784            this: *mut ffi::GtkTextTag,
2785            _param_spec: glib::ffi::gpointer,
2786            f: glib::ffi::gpointer,
2787        ) {
2788            unsafe {
2789                let f: &F = &*(f as *const F);
2790                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2791            }
2792        }
2793        unsafe {
2794            let f: Box_<F> = Box_::new(f);
2795            connect_raw(
2796                self.as_ptr() as *mut _,
2797                c"notify::font-desc".as_ptr() as *const _,
2798                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2799                    notify_font_desc_trampoline::<Self, F> as *const (),
2800                )),
2801                Box_::into_raw(f),
2802            )
2803        }
2804    }
2805
2806    #[doc(alias = "font-features")]
2807    fn connect_font_features_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2808        unsafe extern "C" fn notify_font_features_trampoline<
2809            P: IsA<TextTag>,
2810            F: Fn(&P) + 'static,
2811        >(
2812            this: *mut ffi::GtkTextTag,
2813            _param_spec: glib::ffi::gpointer,
2814            f: glib::ffi::gpointer,
2815        ) {
2816            unsafe {
2817                let f: &F = &*(f as *const F);
2818                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2819            }
2820        }
2821        unsafe {
2822            let f: Box_<F> = Box_::new(f);
2823            connect_raw(
2824                self.as_ptr() as *mut _,
2825                c"notify::font-features".as_ptr() as *const _,
2826                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2827                    notify_font_features_trampoline::<Self, F> as *const (),
2828                )),
2829                Box_::into_raw(f),
2830            )
2831        }
2832    }
2833
2834    #[doc(alias = "font-features-set")]
2835    fn connect_font_features_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2836        unsafe extern "C" fn notify_font_features_set_trampoline<
2837            P: IsA<TextTag>,
2838            F: Fn(&P) + 'static,
2839        >(
2840            this: *mut ffi::GtkTextTag,
2841            _param_spec: glib::ffi::gpointer,
2842            f: glib::ffi::gpointer,
2843        ) {
2844            unsafe {
2845                let f: &F = &*(f as *const F);
2846                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2847            }
2848        }
2849        unsafe {
2850            let f: Box_<F> = Box_::new(f);
2851            connect_raw(
2852                self.as_ptr() as *mut _,
2853                c"notify::font-features-set".as_ptr() as *const _,
2854                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2855                    notify_font_features_set_trampoline::<Self, F> as *const (),
2856                )),
2857                Box_::into_raw(f),
2858            )
2859        }
2860    }
2861
2862    #[doc(alias = "foreground")]
2863    fn connect_foreground_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2864        unsafe extern "C" fn notify_foreground_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2865            this: *mut ffi::GtkTextTag,
2866            _param_spec: glib::ffi::gpointer,
2867            f: glib::ffi::gpointer,
2868        ) {
2869            unsafe {
2870                let f: &F = &*(f as *const F);
2871                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2872            }
2873        }
2874        unsafe {
2875            let f: Box_<F> = Box_::new(f);
2876            connect_raw(
2877                self.as_ptr() as *mut _,
2878                c"notify::foreground".as_ptr() as *const _,
2879                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2880                    notify_foreground_trampoline::<Self, F> as *const (),
2881                )),
2882                Box_::into_raw(f),
2883            )
2884        }
2885    }
2886
2887    #[doc(alias = "foreground-rgba")]
2888    fn connect_foreground_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2889        unsafe extern "C" fn notify_foreground_rgba_trampoline<
2890            P: IsA<TextTag>,
2891            F: Fn(&P) + 'static,
2892        >(
2893            this: *mut ffi::GtkTextTag,
2894            _param_spec: glib::ffi::gpointer,
2895            f: glib::ffi::gpointer,
2896        ) {
2897            unsafe {
2898                let f: &F = &*(f as *const F);
2899                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2900            }
2901        }
2902        unsafe {
2903            let f: Box_<F> = Box_::new(f);
2904            connect_raw(
2905                self.as_ptr() as *mut _,
2906                c"notify::foreground-rgba".as_ptr() as *const _,
2907                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2908                    notify_foreground_rgba_trampoline::<Self, F> as *const (),
2909                )),
2910                Box_::into_raw(f),
2911            )
2912        }
2913    }
2914
2915    #[doc(alias = "foreground-set")]
2916    fn connect_foreground_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2917        unsafe extern "C" fn notify_foreground_set_trampoline<
2918            P: IsA<TextTag>,
2919            F: Fn(&P) + 'static,
2920        >(
2921            this: *mut ffi::GtkTextTag,
2922            _param_spec: glib::ffi::gpointer,
2923            f: glib::ffi::gpointer,
2924        ) {
2925            unsafe {
2926                let f: &F = &*(f as *const F);
2927                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2928            }
2929        }
2930        unsafe {
2931            let f: Box_<F> = Box_::new(f);
2932            connect_raw(
2933                self.as_ptr() as *mut _,
2934                c"notify::foreground-set".as_ptr() as *const _,
2935                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2936                    notify_foreground_set_trampoline::<Self, F> as *const (),
2937                )),
2938                Box_::into_raw(f),
2939            )
2940        }
2941    }
2942
2943    #[doc(alias = "indent")]
2944    fn connect_indent_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2945        unsafe extern "C" fn notify_indent_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2946            this: *mut ffi::GtkTextTag,
2947            _param_spec: glib::ffi::gpointer,
2948            f: glib::ffi::gpointer,
2949        ) {
2950            unsafe {
2951                let f: &F = &*(f as *const F);
2952                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2953            }
2954        }
2955        unsafe {
2956            let f: Box_<F> = Box_::new(f);
2957            connect_raw(
2958                self.as_ptr() as *mut _,
2959                c"notify::indent".as_ptr() as *const _,
2960                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2961                    notify_indent_trampoline::<Self, F> as *const (),
2962                )),
2963                Box_::into_raw(f),
2964            )
2965        }
2966    }
2967
2968    #[doc(alias = "indent-set")]
2969    fn connect_indent_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2970        unsafe extern "C" fn notify_indent_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2971            this: *mut ffi::GtkTextTag,
2972            _param_spec: glib::ffi::gpointer,
2973            f: glib::ffi::gpointer,
2974        ) {
2975            unsafe {
2976                let f: &F = &*(f as *const F);
2977                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2978            }
2979        }
2980        unsafe {
2981            let f: Box_<F> = Box_::new(f);
2982            connect_raw(
2983                self.as_ptr() as *mut _,
2984                c"notify::indent-set".as_ptr() as *const _,
2985                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2986                    notify_indent_set_trampoline::<Self, F> as *const (),
2987                )),
2988                Box_::into_raw(f),
2989            )
2990        }
2991    }
2992
2993    #[doc(alias = "insert-hyphens")]
2994    fn connect_insert_hyphens_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2995        unsafe extern "C" fn notify_insert_hyphens_trampoline<
2996            P: IsA<TextTag>,
2997            F: Fn(&P) + 'static,
2998        >(
2999            this: *mut ffi::GtkTextTag,
3000            _param_spec: glib::ffi::gpointer,
3001            f: glib::ffi::gpointer,
3002        ) {
3003            unsafe {
3004                let f: &F = &*(f as *const F);
3005                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3006            }
3007        }
3008        unsafe {
3009            let f: Box_<F> = Box_::new(f);
3010            connect_raw(
3011                self.as_ptr() as *mut _,
3012                c"notify::insert-hyphens".as_ptr() as *const _,
3013                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3014                    notify_insert_hyphens_trampoline::<Self, F> as *const (),
3015                )),
3016                Box_::into_raw(f),
3017            )
3018        }
3019    }
3020
3021    #[doc(alias = "insert-hyphens-set")]
3022    fn connect_insert_hyphens_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3023        unsafe extern "C" fn notify_insert_hyphens_set_trampoline<
3024            P: IsA<TextTag>,
3025            F: Fn(&P) + 'static,
3026        >(
3027            this: *mut ffi::GtkTextTag,
3028            _param_spec: glib::ffi::gpointer,
3029            f: glib::ffi::gpointer,
3030        ) {
3031            unsafe {
3032                let f: &F = &*(f as *const F);
3033                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3034            }
3035        }
3036        unsafe {
3037            let f: Box_<F> = Box_::new(f);
3038            connect_raw(
3039                self.as_ptr() as *mut _,
3040                c"notify::insert-hyphens-set".as_ptr() as *const _,
3041                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3042                    notify_insert_hyphens_set_trampoline::<Self, F> as *const (),
3043                )),
3044                Box_::into_raw(f),
3045            )
3046        }
3047    }
3048
3049    #[doc(alias = "invisible")]
3050    fn connect_invisible_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3051        unsafe extern "C" fn notify_invisible_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3052            this: *mut ffi::GtkTextTag,
3053            _param_spec: glib::ffi::gpointer,
3054            f: glib::ffi::gpointer,
3055        ) {
3056            unsafe {
3057                let f: &F = &*(f as *const F);
3058                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3059            }
3060        }
3061        unsafe {
3062            let f: Box_<F> = Box_::new(f);
3063            connect_raw(
3064                self.as_ptr() as *mut _,
3065                c"notify::invisible".as_ptr() as *const _,
3066                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3067                    notify_invisible_trampoline::<Self, F> as *const (),
3068                )),
3069                Box_::into_raw(f),
3070            )
3071        }
3072    }
3073
3074    #[doc(alias = "invisible-set")]
3075    fn connect_invisible_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3076        unsafe extern "C" fn notify_invisible_set_trampoline<
3077            P: IsA<TextTag>,
3078            F: Fn(&P) + 'static,
3079        >(
3080            this: *mut ffi::GtkTextTag,
3081            _param_spec: glib::ffi::gpointer,
3082            f: glib::ffi::gpointer,
3083        ) {
3084            unsafe {
3085                let f: &F = &*(f as *const F);
3086                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3087            }
3088        }
3089        unsafe {
3090            let f: Box_<F> = Box_::new(f);
3091            connect_raw(
3092                self.as_ptr() as *mut _,
3093                c"notify::invisible-set".as_ptr() as *const _,
3094                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3095                    notify_invisible_set_trampoline::<Self, F> as *const (),
3096                )),
3097                Box_::into_raw(f),
3098            )
3099        }
3100    }
3101
3102    #[doc(alias = "justification")]
3103    fn connect_justification_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3104        unsafe extern "C" fn notify_justification_trampoline<
3105            P: IsA<TextTag>,
3106            F: Fn(&P) + 'static,
3107        >(
3108            this: *mut ffi::GtkTextTag,
3109            _param_spec: glib::ffi::gpointer,
3110            f: glib::ffi::gpointer,
3111        ) {
3112            unsafe {
3113                let f: &F = &*(f as *const F);
3114                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3115            }
3116        }
3117        unsafe {
3118            let f: Box_<F> = Box_::new(f);
3119            connect_raw(
3120                self.as_ptr() as *mut _,
3121                c"notify::justification".as_ptr() as *const _,
3122                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3123                    notify_justification_trampoline::<Self, F> as *const (),
3124                )),
3125                Box_::into_raw(f),
3126            )
3127        }
3128    }
3129
3130    #[doc(alias = "justification-set")]
3131    fn connect_justification_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3132        unsafe extern "C" fn notify_justification_set_trampoline<
3133            P: IsA<TextTag>,
3134            F: Fn(&P) + 'static,
3135        >(
3136            this: *mut ffi::GtkTextTag,
3137            _param_spec: glib::ffi::gpointer,
3138            f: glib::ffi::gpointer,
3139        ) {
3140            unsafe {
3141                let f: &F = &*(f as *const F);
3142                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3143            }
3144        }
3145        unsafe {
3146            let f: Box_<F> = Box_::new(f);
3147            connect_raw(
3148                self.as_ptr() as *mut _,
3149                c"notify::justification-set".as_ptr() as *const _,
3150                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3151                    notify_justification_set_trampoline::<Self, F> as *const (),
3152                )),
3153                Box_::into_raw(f),
3154            )
3155        }
3156    }
3157
3158    #[doc(alias = "language")]
3159    fn connect_language_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3160        unsafe extern "C" fn notify_language_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3161            this: *mut ffi::GtkTextTag,
3162            _param_spec: glib::ffi::gpointer,
3163            f: glib::ffi::gpointer,
3164        ) {
3165            unsafe {
3166                let f: &F = &*(f as *const F);
3167                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3168            }
3169        }
3170        unsafe {
3171            let f: Box_<F> = Box_::new(f);
3172            connect_raw(
3173                self.as_ptr() as *mut _,
3174                c"notify::language".as_ptr() as *const _,
3175                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3176                    notify_language_trampoline::<Self, F> as *const (),
3177                )),
3178                Box_::into_raw(f),
3179            )
3180        }
3181    }
3182
3183    #[doc(alias = "language-set")]
3184    fn connect_language_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3185        unsafe extern "C" fn notify_language_set_trampoline<
3186            P: IsA<TextTag>,
3187            F: Fn(&P) + 'static,
3188        >(
3189            this: *mut ffi::GtkTextTag,
3190            _param_spec: glib::ffi::gpointer,
3191            f: glib::ffi::gpointer,
3192        ) {
3193            unsafe {
3194                let f: &F = &*(f as *const F);
3195                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3196            }
3197        }
3198        unsafe {
3199            let f: Box_<F> = Box_::new(f);
3200            connect_raw(
3201                self.as_ptr() as *mut _,
3202                c"notify::language-set".as_ptr() as *const _,
3203                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3204                    notify_language_set_trampoline::<Self, F> as *const (),
3205                )),
3206                Box_::into_raw(f),
3207            )
3208        }
3209    }
3210
3211    #[doc(alias = "left-margin")]
3212    fn connect_left_margin_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3213        unsafe extern "C" fn notify_left_margin_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3214            this: *mut ffi::GtkTextTag,
3215            _param_spec: glib::ffi::gpointer,
3216            f: glib::ffi::gpointer,
3217        ) {
3218            unsafe {
3219                let f: &F = &*(f as *const F);
3220                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3221            }
3222        }
3223        unsafe {
3224            let f: Box_<F> = Box_::new(f);
3225            connect_raw(
3226                self.as_ptr() as *mut _,
3227                c"notify::left-margin".as_ptr() as *const _,
3228                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3229                    notify_left_margin_trampoline::<Self, F> as *const (),
3230                )),
3231                Box_::into_raw(f),
3232            )
3233        }
3234    }
3235
3236    #[doc(alias = "left-margin-set")]
3237    fn connect_left_margin_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3238        unsafe extern "C" fn notify_left_margin_set_trampoline<
3239            P: IsA<TextTag>,
3240            F: Fn(&P) + 'static,
3241        >(
3242            this: *mut ffi::GtkTextTag,
3243            _param_spec: glib::ffi::gpointer,
3244            f: glib::ffi::gpointer,
3245        ) {
3246            unsafe {
3247                let f: &F = &*(f as *const F);
3248                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3249            }
3250        }
3251        unsafe {
3252            let f: Box_<F> = Box_::new(f);
3253            connect_raw(
3254                self.as_ptr() as *mut _,
3255                c"notify::left-margin-set".as_ptr() as *const _,
3256                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3257                    notify_left_margin_set_trampoline::<Self, F> as *const (),
3258                )),
3259                Box_::into_raw(f),
3260            )
3261        }
3262    }
3263
3264    #[doc(alias = "letter-spacing")]
3265    fn connect_letter_spacing_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3266        unsafe extern "C" fn notify_letter_spacing_trampoline<
3267            P: IsA<TextTag>,
3268            F: Fn(&P) + 'static,
3269        >(
3270            this: *mut ffi::GtkTextTag,
3271            _param_spec: glib::ffi::gpointer,
3272            f: glib::ffi::gpointer,
3273        ) {
3274            unsafe {
3275                let f: &F = &*(f as *const F);
3276                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3277            }
3278        }
3279        unsafe {
3280            let f: Box_<F> = Box_::new(f);
3281            connect_raw(
3282                self.as_ptr() as *mut _,
3283                c"notify::letter-spacing".as_ptr() as *const _,
3284                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3285                    notify_letter_spacing_trampoline::<Self, F> as *const (),
3286                )),
3287                Box_::into_raw(f),
3288            )
3289        }
3290    }
3291
3292    #[doc(alias = "letter-spacing-set")]
3293    fn connect_letter_spacing_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3294        unsafe extern "C" fn notify_letter_spacing_set_trampoline<
3295            P: IsA<TextTag>,
3296            F: Fn(&P) + 'static,
3297        >(
3298            this: *mut ffi::GtkTextTag,
3299            _param_spec: glib::ffi::gpointer,
3300            f: glib::ffi::gpointer,
3301        ) {
3302            unsafe {
3303                let f: &F = &*(f as *const F);
3304                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3305            }
3306        }
3307        unsafe {
3308            let f: Box_<F> = Box_::new(f);
3309            connect_raw(
3310                self.as_ptr() as *mut _,
3311                c"notify::letter-spacing-set".as_ptr() as *const _,
3312                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3313                    notify_letter_spacing_set_trampoline::<Self, F> as *const (),
3314                )),
3315                Box_::into_raw(f),
3316            )
3317        }
3318    }
3319
3320    #[cfg(feature = "v4_6")]
3321    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
3322    #[doc(alias = "line-height")]
3323    fn connect_line_height_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3324        unsafe extern "C" fn notify_line_height_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3325            this: *mut ffi::GtkTextTag,
3326            _param_spec: glib::ffi::gpointer,
3327            f: glib::ffi::gpointer,
3328        ) {
3329            unsafe {
3330                let f: &F = &*(f as *const F);
3331                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3332            }
3333        }
3334        unsafe {
3335            let f: Box_<F> = Box_::new(f);
3336            connect_raw(
3337                self.as_ptr() as *mut _,
3338                c"notify::line-height".as_ptr() as *const _,
3339                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3340                    notify_line_height_trampoline::<Self, F> as *const (),
3341                )),
3342                Box_::into_raw(f),
3343            )
3344        }
3345    }
3346
3347    #[cfg(feature = "v4_6")]
3348    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
3349    #[doc(alias = "line-height-set")]
3350    fn connect_line_height_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3351        unsafe extern "C" fn notify_line_height_set_trampoline<
3352            P: IsA<TextTag>,
3353            F: Fn(&P) + 'static,
3354        >(
3355            this: *mut ffi::GtkTextTag,
3356            _param_spec: glib::ffi::gpointer,
3357            f: glib::ffi::gpointer,
3358        ) {
3359            unsafe {
3360                let f: &F = &*(f as *const F);
3361                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3362            }
3363        }
3364        unsafe {
3365            let f: Box_<F> = Box_::new(f);
3366            connect_raw(
3367                self.as_ptr() as *mut _,
3368                c"notify::line-height-set".as_ptr() as *const _,
3369                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3370                    notify_line_height_set_trampoline::<Self, F> as *const (),
3371                )),
3372                Box_::into_raw(f),
3373            )
3374        }
3375    }
3376
3377    #[doc(alias = "overline")]
3378    fn connect_overline_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3379        unsafe extern "C" fn notify_overline_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3380            this: *mut ffi::GtkTextTag,
3381            _param_spec: glib::ffi::gpointer,
3382            f: glib::ffi::gpointer,
3383        ) {
3384            unsafe {
3385                let f: &F = &*(f as *const F);
3386                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3387            }
3388        }
3389        unsafe {
3390            let f: Box_<F> = Box_::new(f);
3391            connect_raw(
3392                self.as_ptr() as *mut _,
3393                c"notify::overline".as_ptr() as *const _,
3394                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3395                    notify_overline_trampoline::<Self, F> as *const (),
3396                )),
3397                Box_::into_raw(f),
3398            )
3399        }
3400    }
3401
3402    #[doc(alias = "overline-rgba")]
3403    fn connect_overline_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3404        unsafe extern "C" fn notify_overline_rgba_trampoline<
3405            P: IsA<TextTag>,
3406            F: Fn(&P) + 'static,
3407        >(
3408            this: *mut ffi::GtkTextTag,
3409            _param_spec: glib::ffi::gpointer,
3410            f: glib::ffi::gpointer,
3411        ) {
3412            unsafe {
3413                let f: &F = &*(f as *const F);
3414                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3415            }
3416        }
3417        unsafe {
3418            let f: Box_<F> = Box_::new(f);
3419            connect_raw(
3420                self.as_ptr() as *mut _,
3421                c"notify::overline-rgba".as_ptr() as *const _,
3422                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3423                    notify_overline_rgba_trampoline::<Self, F> as *const (),
3424                )),
3425                Box_::into_raw(f),
3426            )
3427        }
3428    }
3429
3430    #[doc(alias = "overline-rgba-set")]
3431    fn connect_overline_rgba_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3432        unsafe extern "C" fn notify_overline_rgba_set_trampoline<
3433            P: IsA<TextTag>,
3434            F: Fn(&P) + 'static,
3435        >(
3436            this: *mut ffi::GtkTextTag,
3437            _param_spec: glib::ffi::gpointer,
3438            f: glib::ffi::gpointer,
3439        ) {
3440            unsafe {
3441                let f: &F = &*(f as *const F);
3442                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3443            }
3444        }
3445        unsafe {
3446            let f: Box_<F> = Box_::new(f);
3447            connect_raw(
3448                self.as_ptr() as *mut _,
3449                c"notify::overline-rgba-set".as_ptr() as *const _,
3450                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3451                    notify_overline_rgba_set_trampoline::<Self, F> as *const (),
3452                )),
3453                Box_::into_raw(f),
3454            )
3455        }
3456    }
3457
3458    #[doc(alias = "overline-set")]
3459    fn connect_overline_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3460        unsafe extern "C" fn notify_overline_set_trampoline<
3461            P: IsA<TextTag>,
3462            F: Fn(&P) + 'static,
3463        >(
3464            this: *mut ffi::GtkTextTag,
3465            _param_spec: glib::ffi::gpointer,
3466            f: glib::ffi::gpointer,
3467        ) {
3468            unsafe {
3469                let f: &F = &*(f as *const F);
3470                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3471            }
3472        }
3473        unsafe {
3474            let f: Box_<F> = Box_::new(f);
3475            connect_raw(
3476                self.as_ptr() as *mut _,
3477                c"notify::overline-set".as_ptr() as *const _,
3478                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3479                    notify_overline_set_trampoline::<Self, F> as *const (),
3480                )),
3481                Box_::into_raw(f),
3482            )
3483        }
3484    }
3485
3486    #[doc(alias = "paragraph-background")]
3487    fn connect_paragraph_background_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3488        unsafe extern "C" fn notify_paragraph_background_trampoline<
3489            P: IsA<TextTag>,
3490            F: Fn(&P) + 'static,
3491        >(
3492            this: *mut ffi::GtkTextTag,
3493            _param_spec: glib::ffi::gpointer,
3494            f: glib::ffi::gpointer,
3495        ) {
3496            unsafe {
3497                let f: &F = &*(f as *const F);
3498                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3499            }
3500        }
3501        unsafe {
3502            let f: Box_<F> = Box_::new(f);
3503            connect_raw(
3504                self.as_ptr() as *mut _,
3505                c"notify::paragraph-background".as_ptr() as *const _,
3506                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3507                    notify_paragraph_background_trampoline::<Self, F> as *const (),
3508                )),
3509                Box_::into_raw(f),
3510            )
3511        }
3512    }
3513
3514    #[doc(alias = "paragraph-background-rgba")]
3515    fn connect_paragraph_background_rgba_notify<F: Fn(&Self) + 'static>(
3516        &self,
3517        f: F,
3518    ) -> SignalHandlerId {
3519        unsafe extern "C" fn notify_paragraph_background_rgba_trampoline<
3520            P: IsA<TextTag>,
3521            F: Fn(&P) + 'static,
3522        >(
3523            this: *mut ffi::GtkTextTag,
3524            _param_spec: glib::ffi::gpointer,
3525            f: glib::ffi::gpointer,
3526        ) {
3527            unsafe {
3528                let f: &F = &*(f as *const F);
3529                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3530            }
3531        }
3532        unsafe {
3533            let f: Box_<F> = Box_::new(f);
3534            connect_raw(
3535                self.as_ptr() as *mut _,
3536                c"notify::paragraph-background-rgba".as_ptr() as *const _,
3537                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3538                    notify_paragraph_background_rgba_trampoline::<Self, F> as *const (),
3539                )),
3540                Box_::into_raw(f),
3541            )
3542        }
3543    }
3544
3545    #[doc(alias = "paragraph-background-set")]
3546    fn connect_paragraph_background_set_notify<F: Fn(&Self) + 'static>(
3547        &self,
3548        f: F,
3549    ) -> SignalHandlerId {
3550        unsafe extern "C" fn notify_paragraph_background_set_trampoline<
3551            P: IsA<TextTag>,
3552            F: Fn(&P) + 'static,
3553        >(
3554            this: *mut ffi::GtkTextTag,
3555            _param_spec: glib::ffi::gpointer,
3556            f: glib::ffi::gpointer,
3557        ) {
3558            unsafe {
3559                let f: &F = &*(f as *const F);
3560                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3561            }
3562        }
3563        unsafe {
3564            let f: Box_<F> = Box_::new(f);
3565            connect_raw(
3566                self.as_ptr() as *mut _,
3567                c"notify::paragraph-background-set".as_ptr() as *const _,
3568                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3569                    notify_paragraph_background_set_trampoline::<Self, F> as *const (),
3570                )),
3571                Box_::into_raw(f),
3572            )
3573        }
3574    }
3575
3576    #[doc(alias = "pixels-above-lines")]
3577    fn connect_pixels_above_lines_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3578        unsafe extern "C" fn notify_pixels_above_lines_trampoline<
3579            P: IsA<TextTag>,
3580            F: Fn(&P) + 'static,
3581        >(
3582            this: *mut ffi::GtkTextTag,
3583            _param_spec: glib::ffi::gpointer,
3584            f: glib::ffi::gpointer,
3585        ) {
3586            unsafe {
3587                let f: &F = &*(f as *const F);
3588                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3589            }
3590        }
3591        unsafe {
3592            let f: Box_<F> = Box_::new(f);
3593            connect_raw(
3594                self.as_ptr() as *mut _,
3595                c"notify::pixels-above-lines".as_ptr() as *const _,
3596                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3597                    notify_pixels_above_lines_trampoline::<Self, F> as *const (),
3598                )),
3599                Box_::into_raw(f),
3600            )
3601        }
3602    }
3603
3604    #[doc(alias = "pixels-above-lines-set")]
3605    fn connect_pixels_above_lines_set_notify<F: Fn(&Self) + 'static>(
3606        &self,
3607        f: F,
3608    ) -> SignalHandlerId {
3609        unsafe extern "C" fn notify_pixels_above_lines_set_trampoline<
3610            P: IsA<TextTag>,
3611            F: Fn(&P) + 'static,
3612        >(
3613            this: *mut ffi::GtkTextTag,
3614            _param_spec: glib::ffi::gpointer,
3615            f: glib::ffi::gpointer,
3616        ) {
3617            unsafe {
3618                let f: &F = &*(f as *const F);
3619                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3620            }
3621        }
3622        unsafe {
3623            let f: Box_<F> = Box_::new(f);
3624            connect_raw(
3625                self.as_ptr() as *mut _,
3626                c"notify::pixels-above-lines-set".as_ptr() as *const _,
3627                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3628                    notify_pixels_above_lines_set_trampoline::<Self, F> as *const (),
3629                )),
3630                Box_::into_raw(f),
3631            )
3632        }
3633    }
3634
3635    #[doc(alias = "pixels-below-lines")]
3636    fn connect_pixels_below_lines_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3637        unsafe extern "C" fn notify_pixels_below_lines_trampoline<
3638            P: IsA<TextTag>,
3639            F: Fn(&P) + 'static,
3640        >(
3641            this: *mut ffi::GtkTextTag,
3642            _param_spec: glib::ffi::gpointer,
3643            f: glib::ffi::gpointer,
3644        ) {
3645            unsafe {
3646                let f: &F = &*(f as *const F);
3647                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3648            }
3649        }
3650        unsafe {
3651            let f: Box_<F> = Box_::new(f);
3652            connect_raw(
3653                self.as_ptr() as *mut _,
3654                c"notify::pixels-below-lines".as_ptr() as *const _,
3655                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3656                    notify_pixels_below_lines_trampoline::<Self, F> as *const (),
3657                )),
3658                Box_::into_raw(f),
3659            )
3660        }
3661    }
3662
3663    #[doc(alias = "pixels-below-lines-set")]
3664    fn connect_pixels_below_lines_set_notify<F: Fn(&Self) + 'static>(
3665        &self,
3666        f: F,
3667    ) -> SignalHandlerId {
3668        unsafe extern "C" fn notify_pixels_below_lines_set_trampoline<
3669            P: IsA<TextTag>,
3670            F: Fn(&P) + 'static,
3671        >(
3672            this: *mut ffi::GtkTextTag,
3673            _param_spec: glib::ffi::gpointer,
3674            f: glib::ffi::gpointer,
3675        ) {
3676            unsafe {
3677                let f: &F = &*(f as *const F);
3678                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3679            }
3680        }
3681        unsafe {
3682            let f: Box_<F> = Box_::new(f);
3683            connect_raw(
3684                self.as_ptr() as *mut _,
3685                c"notify::pixels-below-lines-set".as_ptr() as *const _,
3686                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3687                    notify_pixels_below_lines_set_trampoline::<Self, F> as *const (),
3688                )),
3689                Box_::into_raw(f),
3690            )
3691        }
3692    }
3693
3694    #[doc(alias = "pixels-inside-wrap")]
3695    fn connect_pixels_inside_wrap_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3696        unsafe extern "C" fn notify_pixels_inside_wrap_trampoline<
3697            P: IsA<TextTag>,
3698            F: Fn(&P) + 'static,
3699        >(
3700            this: *mut ffi::GtkTextTag,
3701            _param_spec: glib::ffi::gpointer,
3702            f: glib::ffi::gpointer,
3703        ) {
3704            unsafe {
3705                let f: &F = &*(f as *const F);
3706                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3707            }
3708        }
3709        unsafe {
3710            let f: Box_<F> = Box_::new(f);
3711            connect_raw(
3712                self.as_ptr() as *mut _,
3713                c"notify::pixels-inside-wrap".as_ptr() as *const _,
3714                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3715                    notify_pixels_inside_wrap_trampoline::<Self, F> as *const (),
3716                )),
3717                Box_::into_raw(f),
3718            )
3719        }
3720    }
3721
3722    #[doc(alias = "pixels-inside-wrap-set")]
3723    fn connect_pixels_inside_wrap_set_notify<F: Fn(&Self) + 'static>(
3724        &self,
3725        f: F,
3726    ) -> SignalHandlerId {
3727        unsafe extern "C" fn notify_pixels_inside_wrap_set_trampoline<
3728            P: IsA<TextTag>,
3729            F: Fn(&P) + 'static,
3730        >(
3731            this: *mut ffi::GtkTextTag,
3732            _param_spec: glib::ffi::gpointer,
3733            f: glib::ffi::gpointer,
3734        ) {
3735            unsafe {
3736                let f: &F = &*(f as *const F);
3737                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3738            }
3739        }
3740        unsafe {
3741            let f: Box_<F> = Box_::new(f);
3742            connect_raw(
3743                self.as_ptr() as *mut _,
3744                c"notify::pixels-inside-wrap-set".as_ptr() as *const _,
3745                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3746                    notify_pixels_inside_wrap_set_trampoline::<Self, F> as *const (),
3747                )),
3748                Box_::into_raw(f),
3749            )
3750        }
3751    }
3752
3753    #[doc(alias = "right-margin")]
3754    fn connect_right_margin_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3755        unsafe extern "C" fn notify_right_margin_trampoline<
3756            P: IsA<TextTag>,
3757            F: Fn(&P) + 'static,
3758        >(
3759            this: *mut ffi::GtkTextTag,
3760            _param_spec: glib::ffi::gpointer,
3761            f: glib::ffi::gpointer,
3762        ) {
3763            unsafe {
3764                let f: &F = &*(f as *const F);
3765                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3766            }
3767        }
3768        unsafe {
3769            let f: Box_<F> = Box_::new(f);
3770            connect_raw(
3771                self.as_ptr() as *mut _,
3772                c"notify::right-margin".as_ptr() as *const _,
3773                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3774                    notify_right_margin_trampoline::<Self, F> as *const (),
3775                )),
3776                Box_::into_raw(f),
3777            )
3778        }
3779    }
3780
3781    #[doc(alias = "right-margin-set")]
3782    fn connect_right_margin_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3783        unsafe extern "C" fn notify_right_margin_set_trampoline<
3784            P: IsA<TextTag>,
3785            F: Fn(&P) + 'static,
3786        >(
3787            this: *mut ffi::GtkTextTag,
3788            _param_spec: glib::ffi::gpointer,
3789            f: glib::ffi::gpointer,
3790        ) {
3791            unsafe {
3792                let f: &F = &*(f as *const F);
3793                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3794            }
3795        }
3796        unsafe {
3797            let f: Box_<F> = Box_::new(f);
3798            connect_raw(
3799                self.as_ptr() as *mut _,
3800                c"notify::right-margin-set".as_ptr() as *const _,
3801                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3802                    notify_right_margin_set_trampoline::<Self, F> as *const (),
3803                )),
3804                Box_::into_raw(f),
3805            )
3806        }
3807    }
3808
3809    #[doc(alias = "rise")]
3810    fn connect_rise_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3811        unsafe extern "C" fn notify_rise_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3812            this: *mut ffi::GtkTextTag,
3813            _param_spec: glib::ffi::gpointer,
3814            f: glib::ffi::gpointer,
3815        ) {
3816            unsafe {
3817                let f: &F = &*(f as *const F);
3818                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3819            }
3820        }
3821        unsafe {
3822            let f: Box_<F> = Box_::new(f);
3823            connect_raw(
3824                self.as_ptr() as *mut _,
3825                c"notify::rise".as_ptr() as *const _,
3826                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3827                    notify_rise_trampoline::<Self, F> as *const (),
3828                )),
3829                Box_::into_raw(f),
3830            )
3831        }
3832    }
3833
3834    #[doc(alias = "rise-set")]
3835    fn connect_rise_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3836        unsafe extern "C" fn notify_rise_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3837            this: *mut ffi::GtkTextTag,
3838            _param_spec: glib::ffi::gpointer,
3839            f: glib::ffi::gpointer,
3840        ) {
3841            unsafe {
3842                let f: &F = &*(f as *const F);
3843                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3844            }
3845        }
3846        unsafe {
3847            let f: Box_<F> = Box_::new(f);
3848            connect_raw(
3849                self.as_ptr() as *mut _,
3850                c"notify::rise-set".as_ptr() as *const _,
3851                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3852                    notify_rise_set_trampoline::<Self, F> as *const (),
3853                )),
3854                Box_::into_raw(f),
3855            )
3856        }
3857    }
3858
3859    #[doc(alias = "scale")]
3860    fn connect_scale_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3861        unsafe extern "C" fn notify_scale_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3862            this: *mut ffi::GtkTextTag,
3863            _param_spec: glib::ffi::gpointer,
3864            f: glib::ffi::gpointer,
3865        ) {
3866            unsafe {
3867                let f: &F = &*(f as *const F);
3868                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3869            }
3870        }
3871        unsafe {
3872            let f: Box_<F> = Box_::new(f);
3873            connect_raw(
3874                self.as_ptr() as *mut _,
3875                c"notify::scale".as_ptr() as *const _,
3876                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3877                    notify_scale_trampoline::<Self, F> as *const (),
3878                )),
3879                Box_::into_raw(f),
3880            )
3881        }
3882    }
3883
3884    #[doc(alias = "scale-set")]
3885    fn connect_scale_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3886        unsafe extern "C" fn notify_scale_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3887            this: *mut ffi::GtkTextTag,
3888            _param_spec: glib::ffi::gpointer,
3889            f: glib::ffi::gpointer,
3890        ) {
3891            unsafe {
3892                let f: &F = &*(f as *const F);
3893                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3894            }
3895        }
3896        unsafe {
3897            let f: Box_<F> = Box_::new(f);
3898            connect_raw(
3899                self.as_ptr() as *mut _,
3900                c"notify::scale-set".as_ptr() as *const _,
3901                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3902                    notify_scale_set_trampoline::<Self, F> as *const (),
3903                )),
3904                Box_::into_raw(f),
3905            )
3906        }
3907    }
3908
3909    #[cfg(feature = "v4_6")]
3910    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
3911    #[doc(alias = "sentence")]
3912    fn connect_sentence_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3913        unsafe extern "C" fn notify_sentence_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3914            this: *mut ffi::GtkTextTag,
3915            _param_spec: glib::ffi::gpointer,
3916            f: glib::ffi::gpointer,
3917        ) {
3918            unsafe {
3919                let f: &F = &*(f as *const F);
3920                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3921            }
3922        }
3923        unsafe {
3924            let f: Box_<F> = Box_::new(f);
3925            connect_raw(
3926                self.as_ptr() as *mut _,
3927                c"notify::sentence".as_ptr() as *const _,
3928                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3929                    notify_sentence_trampoline::<Self, F> as *const (),
3930                )),
3931                Box_::into_raw(f),
3932            )
3933        }
3934    }
3935
3936    #[cfg(feature = "v4_6")]
3937    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
3938    #[doc(alias = "sentence-set")]
3939    fn connect_sentence_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3940        unsafe extern "C" fn notify_sentence_set_trampoline<
3941            P: IsA<TextTag>,
3942            F: Fn(&P) + 'static,
3943        >(
3944            this: *mut ffi::GtkTextTag,
3945            _param_spec: glib::ffi::gpointer,
3946            f: glib::ffi::gpointer,
3947        ) {
3948            unsafe {
3949                let f: &F = &*(f as *const F);
3950                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3951            }
3952        }
3953        unsafe {
3954            let f: Box_<F> = Box_::new(f);
3955            connect_raw(
3956                self.as_ptr() as *mut _,
3957                c"notify::sentence-set".as_ptr() as *const _,
3958                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3959                    notify_sentence_set_trampoline::<Self, F> as *const (),
3960                )),
3961                Box_::into_raw(f),
3962            )
3963        }
3964    }
3965
3966    #[doc(alias = "show-spaces")]
3967    fn connect_show_spaces_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3968        unsafe extern "C" fn notify_show_spaces_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3969            this: *mut ffi::GtkTextTag,
3970            _param_spec: glib::ffi::gpointer,
3971            f: glib::ffi::gpointer,
3972        ) {
3973            unsafe {
3974                let f: &F = &*(f as *const F);
3975                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3976            }
3977        }
3978        unsafe {
3979            let f: Box_<F> = Box_::new(f);
3980            connect_raw(
3981                self.as_ptr() as *mut _,
3982                c"notify::show-spaces".as_ptr() as *const _,
3983                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3984                    notify_show_spaces_trampoline::<Self, F> as *const (),
3985                )),
3986                Box_::into_raw(f),
3987            )
3988        }
3989    }
3990
3991    #[doc(alias = "show-spaces-set")]
3992    fn connect_show_spaces_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3993        unsafe extern "C" fn notify_show_spaces_set_trampoline<
3994            P: IsA<TextTag>,
3995            F: Fn(&P) + 'static,
3996        >(
3997            this: *mut ffi::GtkTextTag,
3998            _param_spec: glib::ffi::gpointer,
3999            f: glib::ffi::gpointer,
4000        ) {
4001            unsafe {
4002                let f: &F = &*(f as *const F);
4003                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4004            }
4005        }
4006        unsafe {
4007            let f: Box_<F> = Box_::new(f);
4008            connect_raw(
4009                self.as_ptr() as *mut _,
4010                c"notify::show-spaces-set".as_ptr() as *const _,
4011                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4012                    notify_show_spaces_set_trampoline::<Self, F> as *const (),
4013                )),
4014                Box_::into_raw(f),
4015            )
4016        }
4017    }
4018
4019    #[doc(alias = "size")]
4020    fn connect_size_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4021        unsafe extern "C" fn notify_size_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4022            this: *mut ffi::GtkTextTag,
4023            _param_spec: glib::ffi::gpointer,
4024            f: glib::ffi::gpointer,
4025        ) {
4026            unsafe {
4027                let f: &F = &*(f as *const F);
4028                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4029            }
4030        }
4031        unsafe {
4032            let f: Box_<F> = Box_::new(f);
4033            connect_raw(
4034                self.as_ptr() as *mut _,
4035                c"notify::size".as_ptr() as *const _,
4036                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4037                    notify_size_trampoline::<Self, F> as *const (),
4038                )),
4039                Box_::into_raw(f),
4040            )
4041        }
4042    }
4043
4044    #[doc(alias = "size-points")]
4045    fn connect_size_points_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4046        unsafe extern "C" fn notify_size_points_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4047            this: *mut ffi::GtkTextTag,
4048            _param_spec: glib::ffi::gpointer,
4049            f: glib::ffi::gpointer,
4050        ) {
4051            unsafe {
4052                let f: &F = &*(f as *const F);
4053                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4054            }
4055        }
4056        unsafe {
4057            let f: Box_<F> = Box_::new(f);
4058            connect_raw(
4059                self.as_ptr() as *mut _,
4060                c"notify::size-points".as_ptr() as *const _,
4061                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4062                    notify_size_points_trampoline::<Self, F> as *const (),
4063                )),
4064                Box_::into_raw(f),
4065            )
4066        }
4067    }
4068
4069    #[doc(alias = "size-set")]
4070    fn connect_size_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4071        unsafe extern "C" fn notify_size_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4072            this: *mut ffi::GtkTextTag,
4073            _param_spec: glib::ffi::gpointer,
4074            f: glib::ffi::gpointer,
4075        ) {
4076            unsafe {
4077                let f: &F = &*(f as *const F);
4078                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4079            }
4080        }
4081        unsafe {
4082            let f: Box_<F> = Box_::new(f);
4083            connect_raw(
4084                self.as_ptr() as *mut _,
4085                c"notify::size-set".as_ptr() as *const _,
4086                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4087                    notify_size_set_trampoline::<Self, F> as *const (),
4088                )),
4089                Box_::into_raw(f),
4090            )
4091        }
4092    }
4093
4094    #[doc(alias = "stretch")]
4095    fn connect_stretch_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4096        unsafe extern "C" fn notify_stretch_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4097            this: *mut ffi::GtkTextTag,
4098            _param_spec: glib::ffi::gpointer,
4099            f: glib::ffi::gpointer,
4100        ) {
4101            unsafe {
4102                let f: &F = &*(f as *const F);
4103                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4104            }
4105        }
4106        unsafe {
4107            let f: Box_<F> = Box_::new(f);
4108            connect_raw(
4109                self.as_ptr() as *mut _,
4110                c"notify::stretch".as_ptr() as *const _,
4111                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4112                    notify_stretch_trampoline::<Self, F> as *const (),
4113                )),
4114                Box_::into_raw(f),
4115            )
4116        }
4117    }
4118
4119    #[doc(alias = "stretch-set")]
4120    fn connect_stretch_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4121        unsafe extern "C" fn notify_stretch_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4122            this: *mut ffi::GtkTextTag,
4123            _param_spec: glib::ffi::gpointer,
4124            f: glib::ffi::gpointer,
4125        ) {
4126            unsafe {
4127                let f: &F = &*(f as *const F);
4128                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4129            }
4130        }
4131        unsafe {
4132            let f: Box_<F> = Box_::new(f);
4133            connect_raw(
4134                self.as_ptr() as *mut _,
4135                c"notify::stretch-set".as_ptr() as *const _,
4136                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4137                    notify_stretch_set_trampoline::<Self, F> as *const (),
4138                )),
4139                Box_::into_raw(f),
4140            )
4141        }
4142    }
4143
4144    #[doc(alias = "strikethrough")]
4145    fn connect_strikethrough_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4146        unsafe extern "C" fn notify_strikethrough_trampoline<
4147            P: IsA<TextTag>,
4148            F: Fn(&P) + 'static,
4149        >(
4150            this: *mut ffi::GtkTextTag,
4151            _param_spec: glib::ffi::gpointer,
4152            f: glib::ffi::gpointer,
4153        ) {
4154            unsafe {
4155                let f: &F = &*(f as *const F);
4156                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4157            }
4158        }
4159        unsafe {
4160            let f: Box_<F> = Box_::new(f);
4161            connect_raw(
4162                self.as_ptr() as *mut _,
4163                c"notify::strikethrough".as_ptr() as *const _,
4164                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4165                    notify_strikethrough_trampoline::<Self, F> as *const (),
4166                )),
4167                Box_::into_raw(f),
4168            )
4169        }
4170    }
4171
4172    #[doc(alias = "strikethrough-rgba")]
4173    fn connect_strikethrough_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4174        unsafe extern "C" fn notify_strikethrough_rgba_trampoline<
4175            P: IsA<TextTag>,
4176            F: Fn(&P) + 'static,
4177        >(
4178            this: *mut ffi::GtkTextTag,
4179            _param_spec: glib::ffi::gpointer,
4180            f: glib::ffi::gpointer,
4181        ) {
4182            unsafe {
4183                let f: &F = &*(f as *const F);
4184                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4185            }
4186        }
4187        unsafe {
4188            let f: Box_<F> = Box_::new(f);
4189            connect_raw(
4190                self.as_ptr() as *mut _,
4191                c"notify::strikethrough-rgba".as_ptr() as *const _,
4192                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4193                    notify_strikethrough_rgba_trampoline::<Self, F> as *const (),
4194                )),
4195                Box_::into_raw(f),
4196            )
4197        }
4198    }
4199
4200    #[doc(alias = "strikethrough-rgba-set")]
4201    fn connect_strikethrough_rgba_set_notify<F: Fn(&Self) + 'static>(
4202        &self,
4203        f: F,
4204    ) -> SignalHandlerId {
4205        unsafe extern "C" fn notify_strikethrough_rgba_set_trampoline<
4206            P: IsA<TextTag>,
4207            F: Fn(&P) + 'static,
4208        >(
4209            this: *mut ffi::GtkTextTag,
4210            _param_spec: glib::ffi::gpointer,
4211            f: glib::ffi::gpointer,
4212        ) {
4213            unsafe {
4214                let f: &F = &*(f as *const F);
4215                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4216            }
4217        }
4218        unsafe {
4219            let f: Box_<F> = Box_::new(f);
4220            connect_raw(
4221                self.as_ptr() as *mut _,
4222                c"notify::strikethrough-rgba-set".as_ptr() as *const _,
4223                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4224                    notify_strikethrough_rgba_set_trampoline::<Self, F> as *const (),
4225                )),
4226                Box_::into_raw(f),
4227            )
4228        }
4229    }
4230
4231    #[doc(alias = "strikethrough-set")]
4232    fn connect_strikethrough_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4233        unsafe extern "C" fn notify_strikethrough_set_trampoline<
4234            P: IsA<TextTag>,
4235            F: Fn(&P) + 'static,
4236        >(
4237            this: *mut ffi::GtkTextTag,
4238            _param_spec: glib::ffi::gpointer,
4239            f: glib::ffi::gpointer,
4240        ) {
4241            unsafe {
4242                let f: &F = &*(f as *const F);
4243                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4244            }
4245        }
4246        unsafe {
4247            let f: Box_<F> = Box_::new(f);
4248            connect_raw(
4249                self.as_ptr() as *mut _,
4250                c"notify::strikethrough-set".as_ptr() as *const _,
4251                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4252                    notify_strikethrough_set_trampoline::<Self, F> as *const (),
4253                )),
4254                Box_::into_raw(f),
4255            )
4256        }
4257    }
4258
4259    #[doc(alias = "style")]
4260    fn connect_style_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4261        unsafe extern "C" fn notify_style_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4262            this: *mut ffi::GtkTextTag,
4263            _param_spec: glib::ffi::gpointer,
4264            f: glib::ffi::gpointer,
4265        ) {
4266            unsafe {
4267                let f: &F = &*(f as *const F);
4268                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4269            }
4270        }
4271        unsafe {
4272            let f: Box_<F> = Box_::new(f);
4273            connect_raw(
4274                self.as_ptr() as *mut _,
4275                c"notify::style".as_ptr() as *const _,
4276                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4277                    notify_style_trampoline::<Self, F> as *const (),
4278                )),
4279                Box_::into_raw(f),
4280            )
4281        }
4282    }
4283
4284    #[doc(alias = "style-set")]
4285    fn connect_style_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4286        unsafe extern "C" fn notify_style_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4287            this: *mut ffi::GtkTextTag,
4288            _param_spec: glib::ffi::gpointer,
4289            f: glib::ffi::gpointer,
4290        ) {
4291            unsafe {
4292                let f: &F = &*(f as *const F);
4293                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4294            }
4295        }
4296        unsafe {
4297            let f: Box_<F> = Box_::new(f);
4298            connect_raw(
4299                self.as_ptr() as *mut _,
4300                c"notify::style-set".as_ptr() as *const _,
4301                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4302                    notify_style_set_trampoline::<Self, F> as *const (),
4303                )),
4304                Box_::into_raw(f),
4305            )
4306        }
4307    }
4308
4309    #[doc(alias = "tabs")]
4310    fn connect_tabs_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4311        unsafe extern "C" fn notify_tabs_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4312            this: *mut ffi::GtkTextTag,
4313            _param_spec: glib::ffi::gpointer,
4314            f: glib::ffi::gpointer,
4315        ) {
4316            unsafe {
4317                let f: &F = &*(f as *const F);
4318                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4319            }
4320        }
4321        unsafe {
4322            let f: Box_<F> = Box_::new(f);
4323            connect_raw(
4324                self.as_ptr() as *mut _,
4325                c"notify::tabs".as_ptr() as *const _,
4326                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4327                    notify_tabs_trampoline::<Self, F> as *const (),
4328                )),
4329                Box_::into_raw(f),
4330            )
4331        }
4332    }
4333
4334    #[doc(alias = "tabs-set")]
4335    fn connect_tabs_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4336        unsafe extern "C" fn notify_tabs_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4337            this: *mut ffi::GtkTextTag,
4338            _param_spec: glib::ffi::gpointer,
4339            f: glib::ffi::gpointer,
4340        ) {
4341            unsafe {
4342                let f: &F = &*(f as *const F);
4343                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4344            }
4345        }
4346        unsafe {
4347            let f: Box_<F> = Box_::new(f);
4348            connect_raw(
4349                self.as_ptr() as *mut _,
4350                c"notify::tabs-set".as_ptr() as *const _,
4351                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4352                    notify_tabs_set_trampoline::<Self, F> as *const (),
4353                )),
4354                Box_::into_raw(f),
4355            )
4356        }
4357    }
4358
4359    #[cfg(feature = "v4_6")]
4360    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
4361    #[doc(alias = "text-transform")]
4362    fn connect_text_transform_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4363        unsafe extern "C" fn notify_text_transform_trampoline<
4364            P: IsA<TextTag>,
4365            F: Fn(&P) + 'static,
4366        >(
4367            this: *mut ffi::GtkTextTag,
4368            _param_spec: glib::ffi::gpointer,
4369            f: glib::ffi::gpointer,
4370        ) {
4371            unsafe {
4372                let f: &F = &*(f as *const F);
4373                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4374            }
4375        }
4376        unsafe {
4377            let f: Box_<F> = Box_::new(f);
4378            connect_raw(
4379                self.as_ptr() as *mut _,
4380                c"notify::text-transform".as_ptr() as *const _,
4381                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4382                    notify_text_transform_trampoline::<Self, F> as *const (),
4383                )),
4384                Box_::into_raw(f),
4385            )
4386        }
4387    }
4388
4389    #[cfg(feature = "v4_6")]
4390    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
4391    #[doc(alias = "text-transform-set")]
4392    fn connect_text_transform_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4393        unsafe extern "C" fn notify_text_transform_set_trampoline<
4394            P: IsA<TextTag>,
4395            F: Fn(&P) + 'static,
4396        >(
4397            this: *mut ffi::GtkTextTag,
4398            _param_spec: glib::ffi::gpointer,
4399            f: glib::ffi::gpointer,
4400        ) {
4401            unsafe {
4402                let f: &F = &*(f as *const F);
4403                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4404            }
4405        }
4406        unsafe {
4407            let f: Box_<F> = Box_::new(f);
4408            connect_raw(
4409                self.as_ptr() as *mut _,
4410                c"notify::text-transform-set".as_ptr() as *const _,
4411                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4412                    notify_text_transform_set_trampoline::<Self, F> as *const (),
4413                )),
4414                Box_::into_raw(f),
4415            )
4416        }
4417    }
4418
4419    #[doc(alias = "underline")]
4420    fn connect_underline_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4421        unsafe extern "C" fn notify_underline_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4422            this: *mut ffi::GtkTextTag,
4423            _param_spec: glib::ffi::gpointer,
4424            f: glib::ffi::gpointer,
4425        ) {
4426            unsafe {
4427                let f: &F = &*(f as *const F);
4428                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4429            }
4430        }
4431        unsafe {
4432            let f: Box_<F> = Box_::new(f);
4433            connect_raw(
4434                self.as_ptr() as *mut _,
4435                c"notify::underline".as_ptr() as *const _,
4436                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4437                    notify_underline_trampoline::<Self, F> as *const (),
4438                )),
4439                Box_::into_raw(f),
4440            )
4441        }
4442    }
4443
4444    #[doc(alias = "underline-rgba")]
4445    fn connect_underline_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4446        unsafe extern "C" fn notify_underline_rgba_trampoline<
4447            P: IsA<TextTag>,
4448            F: Fn(&P) + 'static,
4449        >(
4450            this: *mut ffi::GtkTextTag,
4451            _param_spec: glib::ffi::gpointer,
4452            f: glib::ffi::gpointer,
4453        ) {
4454            unsafe {
4455                let f: &F = &*(f as *const F);
4456                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4457            }
4458        }
4459        unsafe {
4460            let f: Box_<F> = Box_::new(f);
4461            connect_raw(
4462                self.as_ptr() as *mut _,
4463                c"notify::underline-rgba".as_ptr() as *const _,
4464                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4465                    notify_underline_rgba_trampoline::<Self, F> as *const (),
4466                )),
4467                Box_::into_raw(f),
4468            )
4469        }
4470    }
4471
4472    #[doc(alias = "underline-rgba-set")]
4473    fn connect_underline_rgba_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4474        unsafe extern "C" fn notify_underline_rgba_set_trampoline<
4475            P: IsA<TextTag>,
4476            F: Fn(&P) + 'static,
4477        >(
4478            this: *mut ffi::GtkTextTag,
4479            _param_spec: glib::ffi::gpointer,
4480            f: glib::ffi::gpointer,
4481        ) {
4482            unsafe {
4483                let f: &F = &*(f as *const F);
4484                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4485            }
4486        }
4487        unsafe {
4488            let f: Box_<F> = Box_::new(f);
4489            connect_raw(
4490                self.as_ptr() as *mut _,
4491                c"notify::underline-rgba-set".as_ptr() as *const _,
4492                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4493                    notify_underline_rgba_set_trampoline::<Self, F> as *const (),
4494                )),
4495                Box_::into_raw(f),
4496            )
4497        }
4498    }
4499
4500    #[doc(alias = "underline-set")]
4501    fn connect_underline_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4502        unsafe extern "C" fn notify_underline_set_trampoline<
4503            P: IsA<TextTag>,
4504            F: Fn(&P) + 'static,
4505        >(
4506            this: *mut ffi::GtkTextTag,
4507            _param_spec: glib::ffi::gpointer,
4508            f: glib::ffi::gpointer,
4509        ) {
4510            unsafe {
4511                let f: &F = &*(f as *const F);
4512                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4513            }
4514        }
4515        unsafe {
4516            let f: Box_<F> = Box_::new(f);
4517            connect_raw(
4518                self.as_ptr() as *mut _,
4519                c"notify::underline-set".as_ptr() as *const _,
4520                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4521                    notify_underline_set_trampoline::<Self, F> as *const (),
4522                )),
4523                Box_::into_raw(f),
4524            )
4525        }
4526    }
4527
4528    #[doc(alias = "variant")]
4529    fn connect_variant_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4530        unsafe extern "C" fn notify_variant_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4531            this: *mut ffi::GtkTextTag,
4532            _param_spec: glib::ffi::gpointer,
4533            f: glib::ffi::gpointer,
4534        ) {
4535            unsafe {
4536                let f: &F = &*(f as *const F);
4537                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4538            }
4539        }
4540        unsafe {
4541            let f: Box_<F> = Box_::new(f);
4542            connect_raw(
4543                self.as_ptr() as *mut _,
4544                c"notify::variant".as_ptr() as *const _,
4545                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4546                    notify_variant_trampoline::<Self, F> as *const (),
4547                )),
4548                Box_::into_raw(f),
4549            )
4550        }
4551    }
4552
4553    #[doc(alias = "variant-set")]
4554    fn connect_variant_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4555        unsafe extern "C" fn notify_variant_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4556            this: *mut ffi::GtkTextTag,
4557            _param_spec: glib::ffi::gpointer,
4558            f: glib::ffi::gpointer,
4559        ) {
4560            unsafe {
4561                let f: &F = &*(f as *const F);
4562                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4563            }
4564        }
4565        unsafe {
4566            let f: Box_<F> = Box_::new(f);
4567            connect_raw(
4568                self.as_ptr() as *mut _,
4569                c"notify::variant-set".as_ptr() as *const _,
4570                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4571                    notify_variant_set_trampoline::<Self, F> as *const (),
4572                )),
4573                Box_::into_raw(f),
4574            )
4575        }
4576    }
4577
4578    #[doc(alias = "weight")]
4579    fn connect_weight_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4580        unsafe extern "C" fn notify_weight_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4581            this: *mut ffi::GtkTextTag,
4582            _param_spec: glib::ffi::gpointer,
4583            f: glib::ffi::gpointer,
4584        ) {
4585            unsafe {
4586                let f: &F = &*(f as *const F);
4587                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4588            }
4589        }
4590        unsafe {
4591            let f: Box_<F> = Box_::new(f);
4592            connect_raw(
4593                self.as_ptr() as *mut _,
4594                c"notify::weight".as_ptr() as *const _,
4595                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4596                    notify_weight_trampoline::<Self, F> as *const (),
4597                )),
4598                Box_::into_raw(f),
4599            )
4600        }
4601    }
4602
4603    #[doc(alias = "weight-set")]
4604    fn connect_weight_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4605        unsafe extern "C" fn notify_weight_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4606            this: *mut ffi::GtkTextTag,
4607            _param_spec: glib::ffi::gpointer,
4608            f: glib::ffi::gpointer,
4609        ) {
4610            unsafe {
4611                let f: &F = &*(f as *const F);
4612                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4613            }
4614        }
4615        unsafe {
4616            let f: Box_<F> = Box_::new(f);
4617            connect_raw(
4618                self.as_ptr() as *mut _,
4619                c"notify::weight-set".as_ptr() as *const _,
4620                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4621                    notify_weight_set_trampoline::<Self, F> as *const (),
4622                )),
4623                Box_::into_raw(f),
4624            )
4625        }
4626    }
4627
4628    #[cfg(feature = "v4_6")]
4629    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
4630    #[doc(alias = "word")]
4631    fn connect_word_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4632        unsafe extern "C" fn notify_word_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4633            this: *mut ffi::GtkTextTag,
4634            _param_spec: glib::ffi::gpointer,
4635            f: glib::ffi::gpointer,
4636        ) {
4637            unsafe {
4638                let f: &F = &*(f as *const F);
4639                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4640            }
4641        }
4642        unsafe {
4643            let f: Box_<F> = Box_::new(f);
4644            connect_raw(
4645                self.as_ptr() as *mut _,
4646                c"notify::word".as_ptr() as *const _,
4647                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4648                    notify_word_trampoline::<Self, F> as *const (),
4649                )),
4650                Box_::into_raw(f),
4651            )
4652        }
4653    }
4654
4655    #[cfg(feature = "v4_6")]
4656    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
4657    #[doc(alias = "word-set")]
4658    fn connect_word_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4659        unsafe extern "C" fn notify_word_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4660            this: *mut ffi::GtkTextTag,
4661            _param_spec: glib::ffi::gpointer,
4662            f: glib::ffi::gpointer,
4663        ) {
4664            unsafe {
4665                let f: &F = &*(f as *const F);
4666                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4667            }
4668        }
4669        unsafe {
4670            let f: Box_<F> = Box_::new(f);
4671            connect_raw(
4672                self.as_ptr() as *mut _,
4673                c"notify::word-set".as_ptr() as *const _,
4674                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4675                    notify_word_set_trampoline::<Self, F> as *const (),
4676                )),
4677                Box_::into_raw(f),
4678            )
4679        }
4680    }
4681
4682    #[doc(alias = "wrap-mode")]
4683    fn connect_wrap_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4684        unsafe extern "C" fn notify_wrap_mode_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4685            this: *mut ffi::GtkTextTag,
4686            _param_spec: glib::ffi::gpointer,
4687            f: glib::ffi::gpointer,
4688        ) {
4689            unsafe {
4690                let f: &F = &*(f as *const F);
4691                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4692            }
4693        }
4694        unsafe {
4695            let f: Box_<F> = Box_::new(f);
4696            connect_raw(
4697                self.as_ptr() as *mut _,
4698                c"notify::wrap-mode".as_ptr() as *const _,
4699                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4700                    notify_wrap_mode_trampoline::<Self, F> as *const (),
4701                )),
4702                Box_::into_raw(f),
4703            )
4704        }
4705    }
4706
4707    #[doc(alias = "wrap-mode-set")]
4708    fn connect_wrap_mode_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4709        unsafe extern "C" fn notify_wrap_mode_set_trampoline<
4710            P: IsA<TextTag>,
4711            F: Fn(&P) + 'static,
4712        >(
4713            this: *mut ffi::GtkTextTag,
4714            _param_spec: glib::ffi::gpointer,
4715            f: glib::ffi::gpointer,
4716        ) {
4717            unsafe {
4718                let f: &F = &*(f as *const F);
4719                f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4720            }
4721        }
4722        unsafe {
4723            let f: Box_<F> = Box_::new(f);
4724            connect_raw(
4725                self.as_ptr() as *mut _,
4726                c"notify::wrap-mode-set".as_ptr() as *const _,
4727                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4728                    notify_wrap_mode_set_trampoline::<Self, F> as *const (),
4729                )),
4730                Box_::into_raw(f),
4731            )
4732        }
4733    }
4734}
4735
4736impl<O: IsA<TextTag>> TextTagExt for O {}