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::{ffi, Justification, TextDirection, WrapMode};
6use glib::{
7    prelude::*,
8    signal::{connect_raw, SignalHandlerId},
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            let f: &F = &*(f as *const F);
2359            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2360        }
2361        unsafe {
2362            let f: Box_<F> = Box_::new(f);
2363            connect_raw(
2364                self.as_ptr() as *mut _,
2365                c"notify::accumulative-margin".as_ptr() as *const _,
2366                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2367                    notify_accumulative_margin_trampoline::<Self, F> as *const (),
2368                )),
2369                Box_::into_raw(f),
2370            )
2371        }
2372    }
2373
2374    #[doc(alias = "allow-breaks")]
2375    fn connect_allow_breaks_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2376        unsafe extern "C" fn notify_allow_breaks_trampoline<
2377            P: IsA<TextTag>,
2378            F: Fn(&P) + 'static,
2379        >(
2380            this: *mut ffi::GtkTextTag,
2381            _param_spec: glib::ffi::gpointer,
2382            f: glib::ffi::gpointer,
2383        ) {
2384            let f: &F = &*(f as *const F);
2385            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2386        }
2387        unsafe {
2388            let f: Box_<F> = Box_::new(f);
2389            connect_raw(
2390                self.as_ptr() as *mut _,
2391                c"notify::allow-breaks".as_ptr() as *const _,
2392                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2393                    notify_allow_breaks_trampoline::<Self, F> as *const (),
2394                )),
2395                Box_::into_raw(f),
2396            )
2397        }
2398    }
2399
2400    #[doc(alias = "allow-breaks-set")]
2401    fn connect_allow_breaks_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2402        unsafe extern "C" fn notify_allow_breaks_set_trampoline<
2403            P: IsA<TextTag>,
2404            F: Fn(&P) + 'static,
2405        >(
2406            this: *mut ffi::GtkTextTag,
2407            _param_spec: glib::ffi::gpointer,
2408            f: glib::ffi::gpointer,
2409        ) {
2410            let f: &F = &*(f as *const F);
2411            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2412        }
2413        unsafe {
2414            let f: Box_<F> = Box_::new(f);
2415            connect_raw(
2416                self.as_ptr() as *mut _,
2417                c"notify::allow-breaks-set".as_ptr() as *const _,
2418                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2419                    notify_allow_breaks_set_trampoline::<Self, F> as *const (),
2420                )),
2421                Box_::into_raw(f),
2422            )
2423        }
2424    }
2425
2426    #[doc(alias = "background")]
2427    fn connect_background_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2428        unsafe extern "C" fn notify_background_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2429            this: *mut ffi::GtkTextTag,
2430            _param_spec: glib::ffi::gpointer,
2431            f: glib::ffi::gpointer,
2432        ) {
2433            let f: &F = &*(f as *const F);
2434            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2435        }
2436        unsafe {
2437            let f: Box_<F> = Box_::new(f);
2438            connect_raw(
2439                self.as_ptr() as *mut _,
2440                c"notify::background".as_ptr() as *const _,
2441                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2442                    notify_background_trampoline::<Self, F> as *const (),
2443                )),
2444                Box_::into_raw(f),
2445            )
2446        }
2447    }
2448
2449    #[doc(alias = "background-full-height")]
2450    fn connect_background_full_height_notify<F: Fn(&Self) + 'static>(
2451        &self,
2452        f: F,
2453    ) -> SignalHandlerId {
2454        unsafe extern "C" fn notify_background_full_height_trampoline<
2455            P: IsA<TextTag>,
2456            F: Fn(&P) + 'static,
2457        >(
2458            this: *mut ffi::GtkTextTag,
2459            _param_spec: glib::ffi::gpointer,
2460            f: glib::ffi::gpointer,
2461        ) {
2462            let f: &F = &*(f as *const F);
2463            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2464        }
2465        unsafe {
2466            let f: Box_<F> = Box_::new(f);
2467            connect_raw(
2468                self.as_ptr() as *mut _,
2469                c"notify::background-full-height".as_ptr() as *const _,
2470                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2471                    notify_background_full_height_trampoline::<Self, F> as *const (),
2472                )),
2473                Box_::into_raw(f),
2474            )
2475        }
2476    }
2477
2478    #[doc(alias = "background-full-height-set")]
2479    fn connect_background_full_height_set_notify<F: Fn(&Self) + 'static>(
2480        &self,
2481        f: F,
2482    ) -> SignalHandlerId {
2483        unsafe extern "C" fn notify_background_full_height_set_trampoline<
2484            P: IsA<TextTag>,
2485            F: Fn(&P) + 'static,
2486        >(
2487            this: *mut ffi::GtkTextTag,
2488            _param_spec: glib::ffi::gpointer,
2489            f: glib::ffi::gpointer,
2490        ) {
2491            let f: &F = &*(f as *const F);
2492            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2493        }
2494        unsafe {
2495            let f: Box_<F> = Box_::new(f);
2496            connect_raw(
2497                self.as_ptr() as *mut _,
2498                c"notify::background-full-height-set".as_ptr() as *const _,
2499                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2500                    notify_background_full_height_set_trampoline::<Self, F> as *const (),
2501                )),
2502                Box_::into_raw(f),
2503            )
2504        }
2505    }
2506
2507    #[doc(alias = "background-rgba")]
2508    fn connect_background_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2509        unsafe extern "C" fn notify_background_rgba_trampoline<
2510            P: IsA<TextTag>,
2511            F: Fn(&P) + 'static,
2512        >(
2513            this: *mut ffi::GtkTextTag,
2514            _param_spec: glib::ffi::gpointer,
2515            f: glib::ffi::gpointer,
2516        ) {
2517            let f: &F = &*(f as *const F);
2518            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2519        }
2520        unsafe {
2521            let f: Box_<F> = Box_::new(f);
2522            connect_raw(
2523                self.as_ptr() as *mut _,
2524                c"notify::background-rgba".as_ptr() as *const _,
2525                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2526                    notify_background_rgba_trampoline::<Self, F> as *const (),
2527                )),
2528                Box_::into_raw(f),
2529            )
2530        }
2531    }
2532
2533    #[doc(alias = "background-set")]
2534    fn connect_background_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2535        unsafe extern "C" fn notify_background_set_trampoline<
2536            P: IsA<TextTag>,
2537            F: Fn(&P) + 'static,
2538        >(
2539            this: *mut ffi::GtkTextTag,
2540            _param_spec: glib::ffi::gpointer,
2541            f: glib::ffi::gpointer,
2542        ) {
2543            let f: &F = &*(f as *const F);
2544            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2545        }
2546        unsafe {
2547            let f: Box_<F> = Box_::new(f);
2548            connect_raw(
2549                self.as_ptr() as *mut _,
2550                c"notify::background-set".as_ptr() as *const _,
2551                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2552                    notify_background_set_trampoline::<Self, F> as *const (),
2553                )),
2554                Box_::into_raw(f),
2555            )
2556        }
2557    }
2558
2559    #[doc(alias = "direction")]
2560    fn connect_direction_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2561        unsafe extern "C" fn notify_direction_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2562            this: *mut ffi::GtkTextTag,
2563            _param_spec: glib::ffi::gpointer,
2564            f: glib::ffi::gpointer,
2565        ) {
2566            let f: &F = &*(f as *const F);
2567            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2568        }
2569        unsafe {
2570            let f: Box_<F> = Box_::new(f);
2571            connect_raw(
2572                self.as_ptr() as *mut _,
2573                c"notify::direction".as_ptr() as *const _,
2574                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2575                    notify_direction_trampoline::<Self, F> as *const (),
2576                )),
2577                Box_::into_raw(f),
2578            )
2579        }
2580    }
2581
2582    #[doc(alias = "editable")]
2583    fn connect_editable_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2584        unsafe extern "C" fn notify_editable_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2585            this: *mut ffi::GtkTextTag,
2586            _param_spec: glib::ffi::gpointer,
2587            f: glib::ffi::gpointer,
2588        ) {
2589            let f: &F = &*(f as *const F);
2590            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2591        }
2592        unsafe {
2593            let f: Box_<F> = Box_::new(f);
2594            connect_raw(
2595                self.as_ptr() as *mut _,
2596                c"notify::editable".as_ptr() as *const _,
2597                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2598                    notify_editable_trampoline::<Self, F> as *const (),
2599                )),
2600                Box_::into_raw(f),
2601            )
2602        }
2603    }
2604
2605    #[doc(alias = "editable-set")]
2606    fn connect_editable_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2607        unsafe extern "C" fn notify_editable_set_trampoline<
2608            P: IsA<TextTag>,
2609            F: Fn(&P) + 'static,
2610        >(
2611            this: *mut ffi::GtkTextTag,
2612            _param_spec: glib::ffi::gpointer,
2613            f: glib::ffi::gpointer,
2614        ) {
2615            let f: &F = &*(f as *const F);
2616            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2617        }
2618        unsafe {
2619            let f: Box_<F> = Box_::new(f);
2620            connect_raw(
2621                self.as_ptr() as *mut _,
2622                c"notify::editable-set".as_ptr() as *const _,
2623                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2624                    notify_editable_set_trampoline::<Self, F> as *const (),
2625                )),
2626                Box_::into_raw(f),
2627            )
2628        }
2629    }
2630
2631    #[doc(alias = "fallback")]
2632    fn connect_fallback_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2633        unsafe extern "C" fn notify_fallback_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2634            this: *mut ffi::GtkTextTag,
2635            _param_spec: glib::ffi::gpointer,
2636            f: glib::ffi::gpointer,
2637        ) {
2638            let f: &F = &*(f as *const F);
2639            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2640        }
2641        unsafe {
2642            let f: Box_<F> = Box_::new(f);
2643            connect_raw(
2644                self.as_ptr() as *mut _,
2645                c"notify::fallback".as_ptr() as *const _,
2646                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2647                    notify_fallback_trampoline::<Self, F> as *const (),
2648                )),
2649                Box_::into_raw(f),
2650            )
2651        }
2652    }
2653
2654    #[doc(alias = "fallback-set")]
2655    fn connect_fallback_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2656        unsafe extern "C" fn notify_fallback_set_trampoline<
2657            P: IsA<TextTag>,
2658            F: Fn(&P) + 'static,
2659        >(
2660            this: *mut ffi::GtkTextTag,
2661            _param_spec: glib::ffi::gpointer,
2662            f: glib::ffi::gpointer,
2663        ) {
2664            let f: &F = &*(f as *const F);
2665            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2666        }
2667        unsafe {
2668            let f: Box_<F> = Box_::new(f);
2669            connect_raw(
2670                self.as_ptr() as *mut _,
2671                c"notify::fallback-set".as_ptr() as *const _,
2672                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2673                    notify_fallback_set_trampoline::<Self, F> as *const (),
2674                )),
2675                Box_::into_raw(f),
2676            )
2677        }
2678    }
2679
2680    #[doc(alias = "family")]
2681    fn connect_family_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2682        unsafe extern "C" fn notify_family_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2683            this: *mut ffi::GtkTextTag,
2684            _param_spec: glib::ffi::gpointer,
2685            f: glib::ffi::gpointer,
2686        ) {
2687            let f: &F = &*(f as *const F);
2688            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2689        }
2690        unsafe {
2691            let f: Box_<F> = Box_::new(f);
2692            connect_raw(
2693                self.as_ptr() as *mut _,
2694                c"notify::family".as_ptr() as *const _,
2695                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2696                    notify_family_trampoline::<Self, F> as *const (),
2697                )),
2698                Box_::into_raw(f),
2699            )
2700        }
2701    }
2702
2703    #[doc(alias = "family-set")]
2704    fn connect_family_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2705        unsafe extern "C" fn notify_family_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2706            this: *mut ffi::GtkTextTag,
2707            _param_spec: glib::ffi::gpointer,
2708            f: glib::ffi::gpointer,
2709        ) {
2710            let f: &F = &*(f as *const F);
2711            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2712        }
2713        unsafe {
2714            let f: Box_<F> = Box_::new(f);
2715            connect_raw(
2716                self.as_ptr() as *mut _,
2717                c"notify::family-set".as_ptr() as *const _,
2718                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2719                    notify_family_set_trampoline::<Self, F> as *const (),
2720                )),
2721                Box_::into_raw(f),
2722            )
2723        }
2724    }
2725
2726    #[doc(alias = "font")]
2727    fn connect_font_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2728        unsafe extern "C" fn notify_font_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2729            this: *mut ffi::GtkTextTag,
2730            _param_spec: glib::ffi::gpointer,
2731            f: glib::ffi::gpointer,
2732        ) {
2733            let f: &F = &*(f as *const F);
2734            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2735        }
2736        unsafe {
2737            let f: Box_<F> = Box_::new(f);
2738            connect_raw(
2739                self.as_ptr() as *mut _,
2740                c"notify::font".as_ptr() as *const _,
2741                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2742                    notify_font_trampoline::<Self, F> as *const (),
2743                )),
2744                Box_::into_raw(f),
2745            )
2746        }
2747    }
2748
2749    #[doc(alias = "font-desc")]
2750    fn connect_font_desc_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2751        unsafe extern "C" fn notify_font_desc_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2752            this: *mut ffi::GtkTextTag,
2753            _param_spec: glib::ffi::gpointer,
2754            f: glib::ffi::gpointer,
2755        ) {
2756            let f: &F = &*(f as *const F);
2757            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2758        }
2759        unsafe {
2760            let f: Box_<F> = Box_::new(f);
2761            connect_raw(
2762                self.as_ptr() as *mut _,
2763                c"notify::font-desc".as_ptr() as *const _,
2764                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2765                    notify_font_desc_trampoline::<Self, F> as *const (),
2766                )),
2767                Box_::into_raw(f),
2768            )
2769        }
2770    }
2771
2772    #[doc(alias = "font-features")]
2773    fn connect_font_features_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2774        unsafe extern "C" fn notify_font_features_trampoline<
2775            P: IsA<TextTag>,
2776            F: Fn(&P) + 'static,
2777        >(
2778            this: *mut ffi::GtkTextTag,
2779            _param_spec: glib::ffi::gpointer,
2780            f: glib::ffi::gpointer,
2781        ) {
2782            let f: &F = &*(f as *const F);
2783            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2784        }
2785        unsafe {
2786            let f: Box_<F> = Box_::new(f);
2787            connect_raw(
2788                self.as_ptr() as *mut _,
2789                c"notify::font-features".as_ptr() as *const _,
2790                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2791                    notify_font_features_trampoline::<Self, F> as *const (),
2792                )),
2793                Box_::into_raw(f),
2794            )
2795        }
2796    }
2797
2798    #[doc(alias = "font-features-set")]
2799    fn connect_font_features_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2800        unsafe extern "C" fn notify_font_features_set_trampoline<
2801            P: IsA<TextTag>,
2802            F: Fn(&P) + 'static,
2803        >(
2804            this: *mut ffi::GtkTextTag,
2805            _param_spec: glib::ffi::gpointer,
2806            f: glib::ffi::gpointer,
2807        ) {
2808            let f: &F = &*(f as *const F);
2809            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2810        }
2811        unsafe {
2812            let f: Box_<F> = Box_::new(f);
2813            connect_raw(
2814                self.as_ptr() as *mut _,
2815                c"notify::font-features-set".as_ptr() as *const _,
2816                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2817                    notify_font_features_set_trampoline::<Self, F> as *const (),
2818                )),
2819                Box_::into_raw(f),
2820            )
2821        }
2822    }
2823
2824    #[doc(alias = "foreground")]
2825    fn connect_foreground_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2826        unsafe extern "C" fn notify_foreground_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2827            this: *mut ffi::GtkTextTag,
2828            _param_spec: glib::ffi::gpointer,
2829            f: glib::ffi::gpointer,
2830        ) {
2831            let f: &F = &*(f as *const F);
2832            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2833        }
2834        unsafe {
2835            let f: Box_<F> = Box_::new(f);
2836            connect_raw(
2837                self.as_ptr() as *mut _,
2838                c"notify::foreground".as_ptr() as *const _,
2839                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2840                    notify_foreground_trampoline::<Self, F> as *const (),
2841                )),
2842                Box_::into_raw(f),
2843            )
2844        }
2845    }
2846
2847    #[doc(alias = "foreground-rgba")]
2848    fn connect_foreground_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2849        unsafe extern "C" fn notify_foreground_rgba_trampoline<
2850            P: IsA<TextTag>,
2851            F: Fn(&P) + 'static,
2852        >(
2853            this: *mut ffi::GtkTextTag,
2854            _param_spec: glib::ffi::gpointer,
2855            f: glib::ffi::gpointer,
2856        ) {
2857            let f: &F = &*(f as *const F);
2858            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2859        }
2860        unsafe {
2861            let f: Box_<F> = Box_::new(f);
2862            connect_raw(
2863                self.as_ptr() as *mut _,
2864                c"notify::foreground-rgba".as_ptr() as *const _,
2865                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2866                    notify_foreground_rgba_trampoline::<Self, F> as *const (),
2867                )),
2868                Box_::into_raw(f),
2869            )
2870        }
2871    }
2872
2873    #[doc(alias = "foreground-set")]
2874    fn connect_foreground_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2875        unsafe extern "C" fn notify_foreground_set_trampoline<
2876            P: IsA<TextTag>,
2877            F: Fn(&P) + 'static,
2878        >(
2879            this: *mut ffi::GtkTextTag,
2880            _param_spec: glib::ffi::gpointer,
2881            f: glib::ffi::gpointer,
2882        ) {
2883            let f: &F = &*(f as *const F);
2884            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2885        }
2886        unsafe {
2887            let f: Box_<F> = Box_::new(f);
2888            connect_raw(
2889                self.as_ptr() as *mut _,
2890                c"notify::foreground-set".as_ptr() as *const _,
2891                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2892                    notify_foreground_set_trampoline::<Self, F> as *const (),
2893                )),
2894                Box_::into_raw(f),
2895            )
2896        }
2897    }
2898
2899    #[doc(alias = "indent")]
2900    fn connect_indent_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2901        unsafe extern "C" fn notify_indent_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2902            this: *mut ffi::GtkTextTag,
2903            _param_spec: glib::ffi::gpointer,
2904            f: glib::ffi::gpointer,
2905        ) {
2906            let f: &F = &*(f as *const F);
2907            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2908        }
2909        unsafe {
2910            let f: Box_<F> = Box_::new(f);
2911            connect_raw(
2912                self.as_ptr() as *mut _,
2913                c"notify::indent".as_ptr() as *const _,
2914                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2915                    notify_indent_trampoline::<Self, F> as *const (),
2916                )),
2917                Box_::into_raw(f),
2918            )
2919        }
2920    }
2921
2922    #[doc(alias = "indent-set")]
2923    fn connect_indent_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2924        unsafe extern "C" fn notify_indent_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
2925            this: *mut ffi::GtkTextTag,
2926            _param_spec: glib::ffi::gpointer,
2927            f: glib::ffi::gpointer,
2928        ) {
2929            let f: &F = &*(f as *const F);
2930            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2931        }
2932        unsafe {
2933            let f: Box_<F> = Box_::new(f);
2934            connect_raw(
2935                self.as_ptr() as *mut _,
2936                c"notify::indent-set".as_ptr() as *const _,
2937                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2938                    notify_indent_set_trampoline::<Self, F> as *const (),
2939                )),
2940                Box_::into_raw(f),
2941            )
2942        }
2943    }
2944
2945    #[doc(alias = "insert-hyphens")]
2946    fn connect_insert_hyphens_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2947        unsafe extern "C" fn notify_insert_hyphens_trampoline<
2948            P: IsA<TextTag>,
2949            F: Fn(&P) + 'static,
2950        >(
2951            this: *mut ffi::GtkTextTag,
2952            _param_spec: glib::ffi::gpointer,
2953            f: glib::ffi::gpointer,
2954        ) {
2955            let f: &F = &*(f as *const F);
2956            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2957        }
2958        unsafe {
2959            let f: Box_<F> = Box_::new(f);
2960            connect_raw(
2961                self.as_ptr() as *mut _,
2962                c"notify::insert-hyphens".as_ptr() as *const _,
2963                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2964                    notify_insert_hyphens_trampoline::<Self, F> as *const (),
2965                )),
2966                Box_::into_raw(f),
2967            )
2968        }
2969    }
2970
2971    #[doc(alias = "insert-hyphens-set")]
2972    fn connect_insert_hyphens_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2973        unsafe extern "C" fn notify_insert_hyphens_set_trampoline<
2974            P: IsA<TextTag>,
2975            F: Fn(&P) + 'static,
2976        >(
2977            this: *mut ffi::GtkTextTag,
2978            _param_spec: glib::ffi::gpointer,
2979            f: glib::ffi::gpointer,
2980        ) {
2981            let f: &F = &*(f as *const F);
2982            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
2983        }
2984        unsafe {
2985            let f: Box_<F> = Box_::new(f);
2986            connect_raw(
2987                self.as_ptr() as *mut _,
2988                c"notify::insert-hyphens-set".as_ptr() as *const _,
2989                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
2990                    notify_insert_hyphens_set_trampoline::<Self, F> as *const (),
2991                )),
2992                Box_::into_raw(f),
2993            )
2994        }
2995    }
2996
2997    #[doc(alias = "invisible")]
2998    fn connect_invisible_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2999        unsafe extern "C" fn notify_invisible_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3000            this: *mut ffi::GtkTextTag,
3001            _param_spec: glib::ffi::gpointer,
3002            f: glib::ffi::gpointer,
3003        ) {
3004            let f: &F = &*(f as *const F);
3005            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3006        }
3007        unsafe {
3008            let f: Box_<F> = Box_::new(f);
3009            connect_raw(
3010                self.as_ptr() as *mut _,
3011                c"notify::invisible".as_ptr() as *const _,
3012                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3013                    notify_invisible_trampoline::<Self, F> as *const (),
3014                )),
3015                Box_::into_raw(f),
3016            )
3017        }
3018    }
3019
3020    #[doc(alias = "invisible-set")]
3021    fn connect_invisible_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3022        unsafe extern "C" fn notify_invisible_set_trampoline<
3023            P: IsA<TextTag>,
3024            F: Fn(&P) + 'static,
3025        >(
3026            this: *mut ffi::GtkTextTag,
3027            _param_spec: glib::ffi::gpointer,
3028            f: glib::ffi::gpointer,
3029        ) {
3030            let f: &F = &*(f as *const F);
3031            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3032        }
3033        unsafe {
3034            let f: Box_<F> = Box_::new(f);
3035            connect_raw(
3036                self.as_ptr() as *mut _,
3037                c"notify::invisible-set".as_ptr() as *const _,
3038                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3039                    notify_invisible_set_trampoline::<Self, F> as *const (),
3040                )),
3041                Box_::into_raw(f),
3042            )
3043        }
3044    }
3045
3046    #[doc(alias = "justification")]
3047    fn connect_justification_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3048        unsafe extern "C" fn notify_justification_trampoline<
3049            P: IsA<TextTag>,
3050            F: Fn(&P) + 'static,
3051        >(
3052            this: *mut ffi::GtkTextTag,
3053            _param_spec: glib::ffi::gpointer,
3054            f: glib::ffi::gpointer,
3055        ) {
3056            let f: &F = &*(f as *const F);
3057            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3058        }
3059        unsafe {
3060            let f: Box_<F> = Box_::new(f);
3061            connect_raw(
3062                self.as_ptr() as *mut _,
3063                c"notify::justification".as_ptr() as *const _,
3064                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3065                    notify_justification_trampoline::<Self, F> as *const (),
3066                )),
3067                Box_::into_raw(f),
3068            )
3069        }
3070    }
3071
3072    #[doc(alias = "justification-set")]
3073    fn connect_justification_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3074        unsafe extern "C" fn notify_justification_set_trampoline<
3075            P: IsA<TextTag>,
3076            F: Fn(&P) + 'static,
3077        >(
3078            this: *mut ffi::GtkTextTag,
3079            _param_spec: glib::ffi::gpointer,
3080            f: glib::ffi::gpointer,
3081        ) {
3082            let f: &F = &*(f as *const F);
3083            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3084        }
3085        unsafe {
3086            let f: Box_<F> = Box_::new(f);
3087            connect_raw(
3088                self.as_ptr() as *mut _,
3089                c"notify::justification-set".as_ptr() as *const _,
3090                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3091                    notify_justification_set_trampoline::<Self, F> as *const (),
3092                )),
3093                Box_::into_raw(f),
3094            )
3095        }
3096    }
3097
3098    #[doc(alias = "language")]
3099    fn connect_language_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3100        unsafe extern "C" fn notify_language_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3101            this: *mut ffi::GtkTextTag,
3102            _param_spec: glib::ffi::gpointer,
3103            f: glib::ffi::gpointer,
3104        ) {
3105            let f: &F = &*(f as *const F);
3106            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3107        }
3108        unsafe {
3109            let f: Box_<F> = Box_::new(f);
3110            connect_raw(
3111                self.as_ptr() as *mut _,
3112                c"notify::language".as_ptr() as *const _,
3113                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3114                    notify_language_trampoline::<Self, F> as *const (),
3115                )),
3116                Box_::into_raw(f),
3117            )
3118        }
3119    }
3120
3121    #[doc(alias = "language-set")]
3122    fn connect_language_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3123        unsafe extern "C" fn notify_language_set_trampoline<
3124            P: IsA<TextTag>,
3125            F: Fn(&P) + 'static,
3126        >(
3127            this: *mut ffi::GtkTextTag,
3128            _param_spec: glib::ffi::gpointer,
3129            f: glib::ffi::gpointer,
3130        ) {
3131            let f: &F = &*(f as *const F);
3132            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3133        }
3134        unsafe {
3135            let f: Box_<F> = Box_::new(f);
3136            connect_raw(
3137                self.as_ptr() as *mut _,
3138                c"notify::language-set".as_ptr() as *const _,
3139                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3140                    notify_language_set_trampoline::<Self, F> as *const (),
3141                )),
3142                Box_::into_raw(f),
3143            )
3144        }
3145    }
3146
3147    #[doc(alias = "left-margin")]
3148    fn connect_left_margin_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3149        unsafe extern "C" fn notify_left_margin_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3150            this: *mut ffi::GtkTextTag,
3151            _param_spec: glib::ffi::gpointer,
3152            f: glib::ffi::gpointer,
3153        ) {
3154            let f: &F = &*(f as *const F);
3155            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3156        }
3157        unsafe {
3158            let f: Box_<F> = Box_::new(f);
3159            connect_raw(
3160                self.as_ptr() as *mut _,
3161                c"notify::left-margin".as_ptr() as *const _,
3162                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3163                    notify_left_margin_trampoline::<Self, F> as *const (),
3164                )),
3165                Box_::into_raw(f),
3166            )
3167        }
3168    }
3169
3170    #[doc(alias = "left-margin-set")]
3171    fn connect_left_margin_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3172        unsafe extern "C" fn notify_left_margin_set_trampoline<
3173            P: IsA<TextTag>,
3174            F: Fn(&P) + 'static,
3175        >(
3176            this: *mut ffi::GtkTextTag,
3177            _param_spec: glib::ffi::gpointer,
3178            f: glib::ffi::gpointer,
3179        ) {
3180            let f: &F = &*(f as *const F);
3181            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3182        }
3183        unsafe {
3184            let f: Box_<F> = Box_::new(f);
3185            connect_raw(
3186                self.as_ptr() as *mut _,
3187                c"notify::left-margin-set".as_ptr() as *const _,
3188                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3189                    notify_left_margin_set_trampoline::<Self, F> as *const (),
3190                )),
3191                Box_::into_raw(f),
3192            )
3193        }
3194    }
3195
3196    #[doc(alias = "letter-spacing")]
3197    fn connect_letter_spacing_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3198        unsafe extern "C" fn notify_letter_spacing_trampoline<
3199            P: IsA<TextTag>,
3200            F: Fn(&P) + 'static,
3201        >(
3202            this: *mut ffi::GtkTextTag,
3203            _param_spec: glib::ffi::gpointer,
3204            f: glib::ffi::gpointer,
3205        ) {
3206            let f: &F = &*(f as *const F);
3207            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3208        }
3209        unsafe {
3210            let f: Box_<F> = Box_::new(f);
3211            connect_raw(
3212                self.as_ptr() as *mut _,
3213                c"notify::letter-spacing".as_ptr() as *const _,
3214                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3215                    notify_letter_spacing_trampoline::<Self, F> as *const (),
3216                )),
3217                Box_::into_raw(f),
3218            )
3219        }
3220    }
3221
3222    #[doc(alias = "letter-spacing-set")]
3223    fn connect_letter_spacing_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3224        unsafe extern "C" fn notify_letter_spacing_set_trampoline<
3225            P: IsA<TextTag>,
3226            F: Fn(&P) + 'static,
3227        >(
3228            this: *mut ffi::GtkTextTag,
3229            _param_spec: glib::ffi::gpointer,
3230            f: glib::ffi::gpointer,
3231        ) {
3232            let f: &F = &*(f as *const F);
3233            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3234        }
3235        unsafe {
3236            let f: Box_<F> = Box_::new(f);
3237            connect_raw(
3238                self.as_ptr() as *mut _,
3239                c"notify::letter-spacing-set".as_ptr() as *const _,
3240                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3241                    notify_letter_spacing_set_trampoline::<Self, F> as *const (),
3242                )),
3243                Box_::into_raw(f),
3244            )
3245        }
3246    }
3247
3248    #[cfg(feature = "v4_6")]
3249    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
3250    #[doc(alias = "line-height")]
3251    fn connect_line_height_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3252        unsafe extern "C" fn notify_line_height_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3253            this: *mut ffi::GtkTextTag,
3254            _param_spec: glib::ffi::gpointer,
3255            f: glib::ffi::gpointer,
3256        ) {
3257            let f: &F = &*(f as *const F);
3258            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3259        }
3260        unsafe {
3261            let f: Box_<F> = Box_::new(f);
3262            connect_raw(
3263                self.as_ptr() as *mut _,
3264                c"notify::line-height".as_ptr() as *const _,
3265                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3266                    notify_line_height_trampoline::<Self, F> as *const (),
3267                )),
3268                Box_::into_raw(f),
3269            )
3270        }
3271    }
3272
3273    #[cfg(feature = "v4_6")]
3274    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
3275    #[doc(alias = "line-height-set")]
3276    fn connect_line_height_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3277        unsafe extern "C" fn notify_line_height_set_trampoline<
3278            P: IsA<TextTag>,
3279            F: Fn(&P) + 'static,
3280        >(
3281            this: *mut ffi::GtkTextTag,
3282            _param_spec: glib::ffi::gpointer,
3283            f: glib::ffi::gpointer,
3284        ) {
3285            let f: &F = &*(f as *const F);
3286            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3287        }
3288        unsafe {
3289            let f: Box_<F> = Box_::new(f);
3290            connect_raw(
3291                self.as_ptr() as *mut _,
3292                c"notify::line-height-set".as_ptr() as *const _,
3293                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3294                    notify_line_height_set_trampoline::<Self, F> as *const (),
3295                )),
3296                Box_::into_raw(f),
3297            )
3298        }
3299    }
3300
3301    #[doc(alias = "overline")]
3302    fn connect_overline_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3303        unsafe extern "C" fn notify_overline_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3304            this: *mut ffi::GtkTextTag,
3305            _param_spec: glib::ffi::gpointer,
3306            f: glib::ffi::gpointer,
3307        ) {
3308            let f: &F = &*(f as *const F);
3309            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3310        }
3311        unsafe {
3312            let f: Box_<F> = Box_::new(f);
3313            connect_raw(
3314                self.as_ptr() as *mut _,
3315                c"notify::overline".as_ptr() as *const _,
3316                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3317                    notify_overline_trampoline::<Self, F> as *const (),
3318                )),
3319                Box_::into_raw(f),
3320            )
3321        }
3322    }
3323
3324    #[doc(alias = "overline-rgba")]
3325    fn connect_overline_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3326        unsafe extern "C" fn notify_overline_rgba_trampoline<
3327            P: IsA<TextTag>,
3328            F: Fn(&P) + 'static,
3329        >(
3330            this: *mut ffi::GtkTextTag,
3331            _param_spec: glib::ffi::gpointer,
3332            f: glib::ffi::gpointer,
3333        ) {
3334            let f: &F = &*(f as *const F);
3335            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3336        }
3337        unsafe {
3338            let f: Box_<F> = Box_::new(f);
3339            connect_raw(
3340                self.as_ptr() as *mut _,
3341                c"notify::overline-rgba".as_ptr() as *const _,
3342                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3343                    notify_overline_rgba_trampoline::<Self, F> as *const (),
3344                )),
3345                Box_::into_raw(f),
3346            )
3347        }
3348    }
3349
3350    #[doc(alias = "overline-rgba-set")]
3351    fn connect_overline_rgba_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3352        unsafe extern "C" fn notify_overline_rgba_set_trampoline<
3353            P: IsA<TextTag>,
3354            F: Fn(&P) + 'static,
3355        >(
3356            this: *mut ffi::GtkTextTag,
3357            _param_spec: glib::ffi::gpointer,
3358            f: glib::ffi::gpointer,
3359        ) {
3360            let f: &F = &*(f as *const F);
3361            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3362        }
3363        unsafe {
3364            let f: Box_<F> = Box_::new(f);
3365            connect_raw(
3366                self.as_ptr() as *mut _,
3367                c"notify::overline-rgba-set".as_ptr() as *const _,
3368                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3369                    notify_overline_rgba_set_trampoline::<Self, F> as *const (),
3370                )),
3371                Box_::into_raw(f),
3372            )
3373        }
3374    }
3375
3376    #[doc(alias = "overline-set")]
3377    fn connect_overline_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3378        unsafe extern "C" fn notify_overline_set_trampoline<
3379            P: IsA<TextTag>,
3380            F: Fn(&P) + 'static,
3381        >(
3382            this: *mut ffi::GtkTextTag,
3383            _param_spec: glib::ffi::gpointer,
3384            f: glib::ffi::gpointer,
3385        ) {
3386            let f: &F = &*(f as *const F);
3387            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3388        }
3389        unsafe {
3390            let f: Box_<F> = Box_::new(f);
3391            connect_raw(
3392                self.as_ptr() as *mut _,
3393                c"notify::overline-set".as_ptr() as *const _,
3394                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3395                    notify_overline_set_trampoline::<Self, F> as *const (),
3396                )),
3397                Box_::into_raw(f),
3398            )
3399        }
3400    }
3401
3402    #[doc(alias = "paragraph-background")]
3403    fn connect_paragraph_background_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3404        unsafe extern "C" fn notify_paragraph_background_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            let f: &F = &*(f as *const F);
3413            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3414        }
3415        unsafe {
3416            let f: Box_<F> = Box_::new(f);
3417            connect_raw(
3418                self.as_ptr() as *mut _,
3419                c"notify::paragraph-background".as_ptr() as *const _,
3420                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3421                    notify_paragraph_background_trampoline::<Self, F> as *const (),
3422                )),
3423                Box_::into_raw(f),
3424            )
3425        }
3426    }
3427
3428    #[doc(alias = "paragraph-background-rgba")]
3429    fn connect_paragraph_background_rgba_notify<F: Fn(&Self) + 'static>(
3430        &self,
3431        f: F,
3432    ) -> SignalHandlerId {
3433        unsafe extern "C" fn notify_paragraph_background_rgba_trampoline<
3434            P: IsA<TextTag>,
3435            F: Fn(&P) + 'static,
3436        >(
3437            this: *mut ffi::GtkTextTag,
3438            _param_spec: glib::ffi::gpointer,
3439            f: glib::ffi::gpointer,
3440        ) {
3441            let f: &F = &*(f as *const F);
3442            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3443        }
3444        unsafe {
3445            let f: Box_<F> = Box_::new(f);
3446            connect_raw(
3447                self.as_ptr() as *mut _,
3448                c"notify::paragraph-background-rgba".as_ptr() as *const _,
3449                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3450                    notify_paragraph_background_rgba_trampoline::<Self, F> as *const (),
3451                )),
3452                Box_::into_raw(f),
3453            )
3454        }
3455    }
3456
3457    #[doc(alias = "paragraph-background-set")]
3458    fn connect_paragraph_background_set_notify<F: Fn(&Self) + 'static>(
3459        &self,
3460        f: F,
3461    ) -> SignalHandlerId {
3462        unsafe extern "C" fn notify_paragraph_background_set_trampoline<
3463            P: IsA<TextTag>,
3464            F: Fn(&P) + 'static,
3465        >(
3466            this: *mut ffi::GtkTextTag,
3467            _param_spec: glib::ffi::gpointer,
3468            f: glib::ffi::gpointer,
3469        ) {
3470            let f: &F = &*(f as *const F);
3471            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3472        }
3473        unsafe {
3474            let f: Box_<F> = Box_::new(f);
3475            connect_raw(
3476                self.as_ptr() as *mut _,
3477                c"notify::paragraph-background-set".as_ptr() as *const _,
3478                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3479                    notify_paragraph_background_set_trampoline::<Self, F> as *const (),
3480                )),
3481                Box_::into_raw(f),
3482            )
3483        }
3484    }
3485
3486    #[doc(alias = "pixels-above-lines")]
3487    fn connect_pixels_above_lines_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3488        unsafe extern "C" fn notify_pixels_above_lines_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            let f: &F = &*(f as *const F);
3497            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3498        }
3499        unsafe {
3500            let f: Box_<F> = Box_::new(f);
3501            connect_raw(
3502                self.as_ptr() as *mut _,
3503                c"notify::pixels-above-lines".as_ptr() as *const _,
3504                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3505                    notify_pixels_above_lines_trampoline::<Self, F> as *const (),
3506                )),
3507                Box_::into_raw(f),
3508            )
3509        }
3510    }
3511
3512    #[doc(alias = "pixels-above-lines-set")]
3513    fn connect_pixels_above_lines_set_notify<F: Fn(&Self) + 'static>(
3514        &self,
3515        f: F,
3516    ) -> SignalHandlerId {
3517        unsafe extern "C" fn notify_pixels_above_lines_set_trampoline<
3518            P: IsA<TextTag>,
3519            F: Fn(&P) + 'static,
3520        >(
3521            this: *mut ffi::GtkTextTag,
3522            _param_spec: glib::ffi::gpointer,
3523            f: glib::ffi::gpointer,
3524        ) {
3525            let f: &F = &*(f as *const F);
3526            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3527        }
3528        unsafe {
3529            let f: Box_<F> = Box_::new(f);
3530            connect_raw(
3531                self.as_ptr() as *mut _,
3532                c"notify::pixels-above-lines-set".as_ptr() as *const _,
3533                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3534                    notify_pixels_above_lines_set_trampoline::<Self, F> as *const (),
3535                )),
3536                Box_::into_raw(f),
3537            )
3538        }
3539    }
3540
3541    #[doc(alias = "pixels-below-lines")]
3542    fn connect_pixels_below_lines_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3543        unsafe extern "C" fn notify_pixels_below_lines_trampoline<
3544            P: IsA<TextTag>,
3545            F: Fn(&P) + 'static,
3546        >(
3547            this: *mut ffi::GtkTextTag,
3548            _param_spec: glib::ffi::gpointer,
3549            f: glib::ffi::gpointer,
3550        ) {
3551            let f: &F = &*(f as *const F);
3552            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3553        }
3554        unsafe {
3555            let f: Box_<F> = Box_::new(f);
3556            connect_raw(
3557                self.as_ptr() as *mut _,
3558                c"notify::pixels-below-lines".as_ptr() as *const _,
3559                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3560                    notify_pixels_below_lines_trampoline::<Self, F> as *const (),
3561                )),
3562                Box_::into_raw(f),
3563            )
3564        }
3565    }
3566
3567    #[doc(alias = "pixels-below-lines-set")]
3568    fn connect_pixels_below_lines_set_notify<F: Fn(&Self) + 'static>(
3569        &self,
3570        f: F,
3571    ) -> SignalHandlerId {
3572        unsafe extern "C" fn notify_pixels_below_lines_set_trampoline<
3573            P: IsA<TextTag>,
3574            F: Fn(&P) + 'static,
3575        >(
3576            this: *mut ffi::GtkTextTag,
3577            _param_spec: glib::ffi::gpointer,
3578            f: glib::ffi::gpointer,
3579        ) {
3580            let f: &F = &*(f as *const F);
3581            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3582        }
3583        unsafe {
3584            let f: Box_<F> = Box_::new(f);
3585            connect_raw(
3586                self.as_ptr() as *mut _,
3587                c"notify::pixels-below-lines-set".as_ptr() as *const _,
3588                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3589                    notify_pixels_below_lines_set_trampoline::<Self, F> as *const (),
3590                )),
3591                Box_::into_raw(f),
3592            )
3593        }
3594    }
3595
3596    #[doc(alias = "pixels-inside-wrap")]
3597    fn connect_pixels_inside_wrap_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3598        unsafe extern "C" fn notify_pixels_inside_wrap_trampoline<
3599            P: IsA<TextTag>,
3600            F: Fn(&P) + 'static,
3601        >(
3602            this: *mut ffi::GtkTextTag,
3603            _param_spec: glib::ffi::gpointer,
3604            f: glib::ffi::gpointer,
3605        ) {
3606            let f: &F = &*(f as *const F);
3607            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3608        }
3609        unsafe {
3610            let f: Box_<F> = Box_::new(f);
3611            connect_raw(
3612                self.as_ptr() as *mut _,
3613                c"notify::pixels-inside-wrap".as_ptr() as *const _,
3614                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3615                    notify_pixels_inside_wrap_trampoline::<Self, F> as *const (),
3616                )),
3617                Box_::into_raw(f),
3618            )
3619        }
3620    }
3621
3622    #[doc(alias = "pixels-inside-wrap-set")]
3623    fn connect_pixels_inside_wrap_set_notify<F: Fn(&Self) + 'static>(
3624        &self,
3625        f: F,
3626    ) -> SignalHandlerId {
3627        unsafe extern "C" fn notify_pixels_inside_wrap_set_trampoline<
3628            P: IsA<TextTag>,
3629            F: Fn(&P) + 'static,
3630        >(
3631            this: *mut ffi::GtkTextTag,
3632            _param_spec: glib::ffi::gpointer,
3633            f: glib::ffi::gpointer,
3634        ) {
3635            let f: &F = &*(f as *const F);
3636            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3637        }
3638        unsafe {
3639            let f: Box_<F> = Box_::new(f);
3640            connect_raw(
3641                self.as_ptr() as *mut _,
3642                c"notify::pixels-inside-wrap-set".as_ptr() as *const _,
3643                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3644                    notify_pixels_inside_wrap_set_trampoline::<Self, F> as *const (),
3645                )),
3646                Box_::into_raw(f),
3647            )
3648        }
3649    }
3650
3651    #[doc(alias = "right-margin")]
3652    fn connect_right_margin_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3653        unsafe extern "C" fn notify_right_margin_trampoline<
3654            P: IsA<TextTag>,
3655            F: Fn(&P) + 'static,
3656        >(
3657            this: *mut ffi::GtkTextTag,
3658            _param_spec: glib::ffi::gpointer,
3659            f: glib::ffi::gpointer,
3660        ) {
3661            let f: &F = &*(f as *const F);
3662            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3663        }
3664        unsafe {
3665            let f: Box_<F> = Box_::new(f);
3666            connect_raw(
3667                self.as_ptr() as *mut _,
3668                c"notify::right-margin".as_ptr() as *const _,
3669                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3670                    notify_right_margin_trampoline::<Self, F> as *const (),
3671                )),
3672                Box_::into_raw(f),
3673            )
3674        }
3675    }
3676
3677    #[doc(alias = "right-margin-set")]
3678    fn connect_right_margin_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3679        unsafe extern "C" fn notify_right_margin_set_trampoline<
3680            P: IsA<TextTag>,
3681            F: Fn(&P) + 'static,
3682        >(
3683            this: *mut ffi::GtkTextTag,
3684            _param_spec: glib::ffi::gpointer,
3685            f: glib::ffi::gpointer,
3686        ) {
3687            let f: &F = &*(f as *const F);
3688            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3689        }
3690        unsafe {
3691            let f: Box_<F> = Box_::new(f);
3692            connect_raw(
3693                self.as_ptr() as *mut _,
3694                c"notify::right-margin-set".as_ptr() as *const _,
3695                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3696                    notify_right_margin_set_trampoline::<Self, F> as *const (),
3697                )),
3698                Box_::into_raw(f),
3699            )
3700        }
3701    }
3702
3703    #[doc(alias = "rise")]
3704    fn connect_rise_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3705        unsafe extern "C" fn notify_rise_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3706            this: *mut ffi::GtkTextTag,
3707            _param_spec: glib::ffi::gpointer,
3708            f: glib::ffi::gpointer,
3709        ) {
3710            let f: &F = &*(f as *const F);
3711            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3712        }
3713        unsafe {
3714            let f: Box_<F> = Box_::new(f);
3715            connect_raw(
3716                self.as_ptr() as *mut _,
3717                c"notify::rise".as_ptr() as *const _,
3718                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3719                    notify_rise_trampoline::<Self, F> as *const (),
3720                )),
3721                Box_::into_raw(f),
3722            )
3723        }
3724    }
3725
3726    #[doc(alias = "rise-set")]
3727    fn connect_rise_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3728        unsafe extern "C" fn notify_rise_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3729            this: *mut ffi::GtkTextTag,
3730            _param_spec: glib::ffi::gpointer,
3731            f: glib::ffi::gpointer,
3732        ) {
3733            let f: &F = &*(f as *const F);
3734            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3735        }
3736        unsafe {
3737            let f: Box_<F> = Box_::new(f);
3738            connect_raw(
3739                self.as_ptr() as *mut _,
3740                c"notify::rise-set".as_ptr() as *const _,
3741                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3742                    notify_rise_set_trampoline::<Self, F> as *const (),
3743                )),
3744                Box_::into_raw(f),
3745            )
3746        }
3747    }
3748
3749    #[doc(alias = "scale")]
3750    fn connect_scale_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3751        unsafe extern "C" fn notify_scale_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3752            this: *mut ffi::GtkTextTag,
3753            _param_spec: glib::ffi::gpointer,
3754            f: glib::ffi::gpointer,
3755        ) {
3756            let f: &F = &*(f as *const F);
3757            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3758        }
3759        unsafe {
3760            let f: Box_<F> = Box_::new(f);
3761            connect_raw(
3762                self.as_ptr() as *mut _,
3763                c"notify::scale".as_ptr() as *const _,
3764                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3765                    notify_scale_trampoline::<Self, F> as *const (),
3766                )),
3767                Box_::into_raw(f),
3768            )
3769        }
3770    }
3771
3772    #[doc(alias = "scale-set")]
3773    fn connect_scale_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3774        unsafe extern "C" fn notify_scale_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3775            this: *mut ffi::GtkTextTag,
3776            _param_spec: glib::ffi::gpointer,
3777            f: glib::ffi::gpointer,
3778        ) {
3779            let f: &F = &*(f as *const F);
3780            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3781        }
3782        unsafe {
3783            let f: Box_<F> = Box_::new(f);
3784            connect_raw(
3785                self.as_ptr() as *mut _,
3786                c"notify::scale-set".as_ptr() as *const _,
3787                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3788                    notify_scale_set_trampoline::<Self, F> as *const (),
3789                )),
3790                Box_::into_raw(f),
3791            )
3792        }
3793    }
3794
3795    #[cfg(feature = "v4_6")]
3796    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
3797    #[doc(alias = "sentence")]
3798    fn connect_sentence_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3799        unsafe extern "C" fn notify_sentence_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3800            this: *mut ffi::GtkTextTag,
3801            _param_spec: glib::ffi::gpointer,
3802            f: glib::ffi::gpointer,
3803        ) {
3804            let f: &F = &*(f as *const F);
3805            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3806        }
3807        unsafe {
3808            let f: Box_<F> = Box_::new(f);
3809            connect_raw(
3810                self.as_ptr() as *mut _,
3811                c"notify::sentence".as_ptr() as *const _,
3812                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3813                    notify_sentence_trampoline::<Self, F> as *const (),
3814                )),
3815                Box_::into_raw(f),
3816            )
3817        }
3818    }
3819
3820    #[cfg(feature = "v4_6")]
3821    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
3822    #[doc(alias = "sentence-set")]
3823    fn connect_sentence_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3824        unsafe extern "C" fn notify_sentence_set_trampoline<
3825            P: IsA<TextTag>,
3826            F: Fn(&P) + 'static,
3827        >(
3828            this: *mut ffi::GtkTextTag,
3829            _param_spec: glib::ffi::gpointer,
3830            f: glib::ffi::gpointer,
3831        ) {
3832            let f: &F = &*(f as *const F);
3833            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3834        }
3835        unsafe {
3836            let f: Box_<F> = Box_::new(f);
3837            connect_raw(
3838                self.as_ptr() as *mut _,
3839                c"notify::sentence-set".as_ptr() as *const _,
3840                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3841                    notify_sentence_set_trampoline::<Self, F> as *const (),
3842                )),
3843                Box_::into_raw(f),
3844            )
3845        }
3846    }
3847
3848    #[doc(alias = "show-spaces")]
3849    fn connect_show_spaces_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3850        unsafe extern "C" fn notify_show_spaces_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3851            this: *mut ffi::GtkTextTag,
3852            _param_spec: glib::ffi::gpointer,
3853            f: glib::ffi::gpointer,
3854        ) {
3855            let f: &F = &*(f as *const F);
3856            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3857        }
3858        unsafe {
3859            let f: Box_<F> = Box_::new(f);
3860            connect_raw(
3861                self.as_ptr() as *mut _,
3862                c"notify::show-spaces".as_ptr() as *const _,
3863                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3864                    notify_show_spaces_trampoline::<Self, F> as *const (),
3865                )),
3866                Box_::into_raw(f),
3867            )
3868        }
3869    }
3870
3871    #[doc(alias = "show-spaces-set")]
3872    fn connect_show_spaces_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3873        unsafe extern "C" fn notify_show_spaces_set_trampoline<
3874            P: IsA<TextTag>,
3875            F: Fn(&P) + 'static,
3876        >(
3877            this: *mut ffi::GtkTextTag,
3878            _param_spec: glib::ffi::gpointer,
3879            f: glib::ffi::gpointer,
3880        ) {
3881            let f: &F = &*(f as *const F);
3882            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3883        }
3884        unsafe {
3885            let f: Box_<F> = Box_::new(f);
3886            connect_raw(
3887                self.as_ptr() as *mut _,
3888                c"notify::show-spaces-set".as_ptr() as *const _,
3889                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3890                    notify_show_spaces_set_trampoline::<Self, F> as *const (),
3891                )),
3892                Box_::into_raw(f),
3893            )
3894        }
3895    }
3896
3897    #[doc(alias = "size")]
3898    fn connect_size_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3899        unsafe extern "C" fn notify_size_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3900            this: *mut ffi::GtkTextTag,
3901            _param_spec: glib::ffi::gpointer,
3902            f: glib::ffi::gpointer,
3903        ) {
3904            let f: &F = &*(f as *const F);
3905            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3906        }
3907        unsafe {
3908            let f: Box_<F> = Box_::new(f);
3909            connect_raw(
3910                self.as_ptr() as *mut _,
3911                c"notify::size".as_ptr() as *const _,
3912                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3913                    notify_size_trampoline::<Self, F> as *const (),
3914                )),
3915                Box_::into_raw(f),
3916            )
3917        }
3918    }
3919
3920    #[doc(alias = "size-points")]
3921    fn connect_size_points_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3922        unsafe extern "C" fn notify_size_points_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3923            this: *mut ffi::GtkTextTag,
3924            _param_spec: glib::ffi::gpointer,
3925            f: glib::ffi::gpointer,
3926        ) {
3927            let f: &F = &*(f as *const F);
3928            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3929        }
3930        unsafe {
3931            let f: Box_<F> = Box_::new(f);
3932            connect_raw(
3933                self.as_ptr() as *mut _,
3934                c"notify::size-points".as_ptr() as *const _,
3935                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3936                    notify_size_points_trampoline::<Self, F> as *const (),
3937                )),
3938                Box_::into_raw(f),
3939            )
3940        }
3941    }
3942
3943    #[doc(alias = "size-set")]
3944    fn connect_size_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3945        unsafe extern "C" fn notify_size_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3946            this: *mut ffi::GtkTextTag,
3947            _param_spec: glib::ffi::gpointer,
3948            f: glib::ffi::gpointer,
3949        ) {
3950            let f: &F = &*(f as *const F);
3951            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3952        }
3953        unsafe {
3954            let f: Box_<F> = Box_::new(f);
3955            connect_raw(
3956                self.as_ptr() as *mut _,
3957                c"notify::size-set".as_ptr() as *const _,
3958                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3959                    notify_size_set_trampoline::<Self, F> as *const (),
3960                )),
3961                Box_::into_raw(f),
3962            )
3963        }
3964    }
3965
3966    #[doc(alias = "stretch")]
3967    fn connect_stretch_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3968        unsafe extern "C" fn notify_stretch_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            let f: &F = &*(f as *const F);
3974            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3975        }
3976        unsafe {
3977            let f: Box_<F> = Box_::new(f);
3978            connect_raw(
3979                self.as_ptr() as *mut _,
3980                c"notify::stretch".as_ptr() as *const _,
3981                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
3982                    notify_stretch_trampoline::<Self, F> as *const (),
3983                )),
3984                Box_::into_raw(f),
3985            )
3986        }
3987    }
3988
3989    #[doc(alias = "stretch-set")]
3990    fn connect_stretch_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3991        unsafe extern "C" fn notify_stretch_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
3992            this: *mut ffi::GtkTextTag,
3993            _param_spec: glib::ffi::gpointer,
3994            f: glib::ffi::gpointer,
3995        ) {
3996            let f: &F = &*(f as *const F);
3997            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
3998        }
3999        unsafe {
4000            let f: Box_<F> = Box_::new(f);
4001            connect_raw(
4002                self.as_ptr() as *mut _,
4003                c"notify::stretch-set".as_ptr() as *const _,
4004                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4005                    notify_stretch_set_trampoline::<Self, F> as *const (),
4006                )),
4007                Box_::into_raw(f),
4008            )
4009        }
4010    }
4011
4012    #[doc(alias = "strikethrough")]
4013    fn connect_strikethrough_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4014        unsafe extern "C" fn notify_strikethrough_trampoline<
4015            P: IsA<TextTag>,
4016            F: Fn(&P) + 'static,
4017        >(
4018            this: *mut ffi::GtkTextTag,
4019            _param_spec: glib::ffi::gpointer,
4020            f: glib::ffi::gpointer,
4021        ) {
4022            let f: &F = &*(f as *const F);
4023            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4024        }
4025        unsafe {
4026            let f: Box_<F> = Box_::new(f);
4027            connect_raw(
4028                self.as_ptr() as *mut _,
4029                c"notify::strikethrough".as_ptr() as *const _,
4030                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4031                    notify_strikethrough_trampoline::<Self, F> as *const (),
4032                )),
4033                Box_::into_raw(f),
4034            )
4035        }
4036    }
4037
4038    #[doc(alias = "strikethrough-rgba")]
4039    fn connect_strikethrough_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4040        unsafe extern "C" fn notify_strikethrough_rgba_trampoline<
4041            P: IsA<TextTag>,
4042            F: Fn(&P) + 'static,
4043        >(
4044            this: *mut ffi::GtkTextTag,
4045            _param_spec: glib::ffi::gpointer,
4046            f: glib::ffi::gpointer,
4047        ) {
4048            let f: &F = &*(f as *const F);
4049            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4050        }
4051        unsafe {
4052            let f: Box_<F> = Box_::new(f);
4053            connect_raw(
4054                self.as_ptr() as *mut _,
4055                c"notify::strikethrough-rgba".as_ptr() as *const _,
4056                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4057                    notify_strikethrough_rgba_trampoline::<Self, F> as *const (),
4058                )),
4059                Box_::into_raw(f),
4060            )
4061        }
4062    }
4063
4064    #[doc(alias = "strikethrough-rgba-set")]
4065    fn connect_strikethrough_rgba_set_notify<F: Fn(&Self) + 'static>(
4066        &self,
4067        f: F,
4068    ) -> SignalHandlerId {
4069        unsafe extern "C" fn notify_strikethrough_rgba_set_trampoline<
4070            P: IsA<TextTag>,
4071            F: Fn(&P) + 'static,
4072        >(
4073            this: *mut ffi::GtkTextTag,
4074            _param_spec: glib::ffi::gpointer,
4075            f: glib::ffi::gpointer,
4076        ) {
4077            let f: &F = &*(f as *const F);
4078            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4079        }
4080        unsafe {
4081            let f: Box_<F> = Box_::new(f);
4082            connect_raw(
4083                self.as_ptr() as *mut _,
4084                c"notify::strikethrough-rgba-set".as_ptr() as *const _,
4085                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4086                    notify_strikethrough_rgba_set_trampoline::<Self, F> as *const (),
4087                )),
4088                Box_::into_raw(f),
4089            )
4090        }
4091    }
4092
4093    #[doc(alias = "strikethrough-set")]
4094    fn connect_strikethrough_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4095        unsafe extern "C" fn notify_strikethrough_set_trampoline<
4096            P: IsA<TextTag>,
4097            F: Fn(&P) + 'static,
4098        >(
4099            this: *mut ffi::GtkTextTag,
4100            _param_spec: glib::ffi::gpointer,
4101            f: glib::ffi::gpointer,
4102        ) {
4103            let f: &F = &*(f as *const F);
4104            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4105        }
4106        unsafe {
4107            let f: Box_<F> = Box_::new(f);
4108            connect_raw(
4109                self.as_ptr() as *mut _,
4110                c"notify::strikethrough-set".as_ptr() as *const _,
4111                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4112                    notify_strikethrough_set_trampoline::<Self, F> as *const (),
4113                )),
4114                Box_::into_raw(f),
4115            )
4116        }
4117    }
4118
4119    #[doc(alias = "style")]
4120    fn connect_style_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4121        unsafe extern "C" fn notify_style_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            let f: &F = &*(f as *const F);
4127            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4128        }
4129        unsafe {
4130            let f: Box_<F> = Box_::new(f);
4131            connect_raw(
4132                self.as_ptr() as *mut _,
4133                c"notify::style".as_ptr() as *const _,
4134                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4135                    notify_style_trampoline::<Self, F> as *const (),
4136                )),
4137                Box_::into_raw(f),
4138            )
4139        }
4140    }
4141
4142    #[doc(alias = "style-set")]
4143    fn connect_style_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4144        unsafe extern "C" fn notify_style_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4145            this: *mut ffi::GtkTextTag,
4146            _param_spec: glib::ffi::gpointer,
4147            f: glib::ffi::gpointer,
4148        ) {
4149            let f: &F = &*(f as *const F);
4150            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4151        }
4152        unsafe {
4153            let f: Box_<F> = Box_::new(f);
4154            connect_raw(
4155                self.as_ptr() as *mut _,
4156                c"notify::style-set".as_ptr() as *const _,
4157                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4158                    notify_style_set_trampoline::<Self, F> as *const (),
4159                )),
4160                Box_::into_raw(f),
4161            )
4162        }
4163    }
4164
4165    #[doc(alias = "tabs")]
4166    fn connect_tabs_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4167        unsafe extern "C" fn notify_tabs_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4168            this: *mut ffi::GtkTextTag,
4169            _param_spec: glib::ffi::gpointer,
4170            f: glib::ffi::gpointer,
4171        ) {
4172            let f: &F = &*(f as *const F);
4173            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4174        }
4175        unsafe {
4176            let f: Box_<F> = Box_::new(f);
4177            connect_raw(
4178                self.as_ptr() as *mut _,
4179                c"notify::tabs".as_ptr() as *const _,
4180                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4181                    notify_tabs_trampoline::<Self, F> as *const (),
4182                )),
4183                Box_::into_raw(f),
4184            )
4185        }
4186    }
4187
4188    #[doc(alias = "tabs-set")]
4189    fn connect_tabs_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4190        unsafe extern "C" fn notify_tabs_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4191            this: *mut ffi::GtkTextTag,
4192            _param_spec: glib::ffi::gpointer,
4193            f: glib::ffi::gpointer,
4194        ) {
4195            let f: &F = &*(f as *const F);
4196            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4197        }
4198        unsafe {
4199            let f: Box_<F> = Box_::new(f);
4200            connect_raw(
4201                self.as_ptr() as *mut _,
4202                c"notify::tabs-set".as_ptr() as *const _,
4203                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4204                    notify_tabs_set_trampoline::<Self, F> as *const (),
4205                )),
4206                Box_::into_raw(f),
4207            )
4208        }
4209    }
4210
4211    #[cfg(feature = "v4_6")]
4212    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
4213    #[doc(alias = "text-transform")]
4214    fn connect_text_transform_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4215        unsafe extern "C" fn notify_text_transform_trampoline<
4216            P: IsA<TextTag>,
4217            F: Fn(&P) + 'static,
4218        >(
4219            this: *mut ffi::GtkTextTag,
4220            _param_spec: glib::ffi::gpointer,
4221            f: glib::ffi::gpointer,
4222        ) {
4223            let f: &F = &*(f as *const F);
4224            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4225        }
4226        unsafe {
4227            let f: Box_<F> = Box_::new(f);
4228            connect_raw(
4229                self.as_ptr() as *mut _,
4230                c"notify::text-transform".as_ptr() as *const _,
4231                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4232                    notify_text_transform_trampoline::<Self, F> as *const (),
4233                )),
4234                Box_::into_raw(f),
4235            )
4236        }
4237    }
4238
4239    #[cfg(feature = "v4_6")]
4240    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
4241    #[doc(alias = "text-transform-set")]
4242    fn connect_text_transform_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4243        unsafe extern "C" fn notify_text_transform_set_trampoline<
4244            P: IsA<TextTag>,
4245            F: Fn(&P) + 'static,
4246        >(
4247            this: *mut ffi::GtkTextTag,
4248            _param_spec: glib::ffi::gpointer,
4249            f: glib::ffi::gpointer,
4250        ) {
4251            let f: &F = &*(f as *const F);
4252            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4253        }
4254        unsafe {
4255            let f: Box_<F> = Box_::new(f);
4256            connect_raw(
4257                self.as_ptr() as *mut _,
4258                c"notify::text-transform-set".as_ptr() as *const _,
4259                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4260                    notify_text_transform_set_trampoline::<Self, F> as *const (),
4261                )),
4262                Box_::into_raw(f),
4263            )
4264        }
4265    }
4266
4267    #[doc(alias = "underline")]
4268    fn connect_underline_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4269        unsafe extern "C" fn notify_underline_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4270            this: *mut ffi::GtkTextTag,
4271            _param_spec: glib::ffi::gpointer,
4272            f: glib::ffi::gpointer,
4273        ) {
4274            let f: &F = &*(f as *const F);
4275            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4276        }
4277        unsafe {
4278            let f: Box_<F> = Box_::new(f);
4279            connect_raw(
4280                self.as_ptr() as *mut _,
4281                c"notify::underline".as_ptr() as *const _,
4282                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4283                    notify_underline_trampoline::<Self, F> as *const (),
4284                )),
4285                Box_::into_raw(f),
4286            )
4287        }
4288    }
4289
4290    #[doc(alias = "underline-rgba")]
4291    fn connect_underline_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4292        unsafe extern "C" fn notify_underline_rgba_trampoline<
4293            P: IsA<TextTag>,
4294            F: Fn(&P) + 'static,
4295        >(
4296            this: *mut ffi::GtkTextTag,
4297            _param_spec: glib::ffi::gpointer,
4298            f: glib::ffi::gpointer,
4299        ) {
4300            let f: &F = &*(f as *const F);
4301            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4302        }
4303        unsafe {
4304            let f: Box_<F> = Box_::new(f);
4305            connect_raw(
4306                self.as_ptr() as *mut _,
4307                c"notify::underline-rgba".as_ptr() as *const _,
4308                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4309                    notify_underline_rgba_trampoline::<Self, F> as *const (),
4310                )),
4311                Box_::into_raw(f),
4312            )
4313        }
4314    }
4315
4316    #[doc(alias = "underline-rgba-set")]
4317    fn connect_underline_rgba_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4318        unsafe extern "C" fn notify_underline_rgba_set_trampoline<
4319            P: IsA<TextTag>,
4320            F: Fn(&P) + 'static,
4321        >(
4322            this: *mut ffi::GtkTextTag,
4323            _param_spec: glib::ffi::gpointer,
4324            f: glib::ffi::gpointer,
4325        ) {
4326            let f: &F = &*(f as *const F);
4327            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4328        }
4329        unsafe {
4330            let f: Box_<F> = Box_::new(f);
4331            connect_raw(
4332                self.as_ptr() as *mut _,
4333                c"notify::underline-rgba-set".as_ptr() as *const _,
4334                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4335                    notify_underline_rgba_set_trampoline::<Self, F> as *const (),
4336                )),
4337                Box_::into_raw(f),
4338            )
4339        }
4340    }
4341
4342    #[doc(alias = "underline-set")]
4343    fn connect_underline_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4344        unsafe extern "C" fn notify_underline_set_trampoline<
4345            P: IsA<TextTag>,
4346            F: Fn(&P) + 'static,
4347        >(
4348            this: *mut ffi::GtkTextTag,
4349            _param_spec: glib::ffi::gpointer,
4350            f: glib::ffi::gpointer,
4351        ) {
4352            let f: &F = &*(f as *const F);
4353            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4354        }
4355        unsafe {
4356            let f: Box_<F> = Box_::new(f);
4357            connect_raw(
4358                self.as_ptr() as *mut _,
4359                c"notify::underline-set".as_ptr() as *const _,
4360                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4361                    notify_underline_set_trampoline::<Self, F> as *const (),
4362                )),
4363                Box_::into_raw(f),
4364            )
4365        }
4366    }
4367
4368    #[doc(alias = "variant")]
4369    fn connect_variant_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4370        unsafe extern "C" fn notify_variant_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4371            this: *mut ffi::GtkTextTag,
4372            _param_spec: glib::ffi::gpointer,
4373            f: glib::ffi::gpointer,
4374        ) {
4375            let f: &F = &*(f as *const F);
4376            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4377        }
4378        unsafe {
4379            let f: Box_<F> = Box_::new(f);
4380            connect_raw(
4381                self.as_ptr() as *mut _,
4382                c"notify::variant".as_ptr() as *const _,
4383                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4384                    notify_variant_trampoline::<Self, F> as *const (),
4385                )),
4386                Box_::into_raw(f),
4387            )
4388        }
4389    }
4390
4391    #[doc(alias = "variant-set")]
4392    fn connect_variant_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4393        unsafe extern "C" fn notify_variant_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4394            this: *mut ffi::GtkTextTag,
4395            _param_spec: glib::ffi::gpointer,
4396            f: glib::ffi::gpointer,
4397        ) {
4398            let f: &F = &*(f as *const F);
4399            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4400        }
4401        unsafe {
4402            let f: Box_<F> = Box_::new(f);
4403            connect_raw(
4404                self.as_ptr() as *mut _,
4405                c"notify::variant-set".as_ptr() as *const _,
4406                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4407                    notify_variant_set_trampoline::<Self, F> as *const (),
4408                )),
4409                Box_::into_raw(f),
4410            )
4411        }
4412    }
4413
4414    #[doc(alias = "weight")]
4415    fn connect_weight_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4416        unsafe extern "C" fn notify_weight_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4417            this: *mut ffi::GtkTextTag,
4418            _param_spec: glib::ffi::gpointer,
4419            f: glib::ffi::gpointer,
4420        ) {
4421            let f: &F = &*(f as *const F);
4422            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4423        }
4424        unsafe {
4425            let f: Box_<F> = Box_::new(f);
4426            connect_raw(
4427                self.as_ptr() as *mut _,
4428                c"notify::weight".as_ptr() as *const _,
4429                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4430                    notify_weight_trampoline::<Self, F> as *const (),
4431                )),
4432                Box_::into_raw(f),
4433            )
4434        }
4435    }
4436
4437    #[doc(alias = "weight-set")]
4438    fn connect_weight_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4439        unsafe extern "C" fn notify_weight_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4440            this: *mut ffi::GtkTextTag,
4441            _param_spec: glib::ffi::gpointer,
4442            f: glib::ffi::gpointer,
4443        ) {
4444            let f: &F = &*(f as *const F);
4445            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4446        }
4447        unsafe {
4448            let f: Box_<F> = Box_::new(f);
4449            connect_raw(
4450                self.as_ptr() as *mut _,
4451                c"notify::weight-set".as_ptr() as *const _,
4452                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4453                    notify_weight_set_trampoline::<Self, F> as *const (),
4454                )),
4455                Box_::into_raw(f),
4456            )
4457        }
4458    }
4459
4460    #[cfg(feature = "v4_6")]
4461    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
4462    #[doc(alias = "word")]
4463    fn connect_word_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4464        unsafe extern "C" fn notify_word_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4465            this: *mut ffi::GtkTextTag,
4466            _param_spec: glib::ffi::gpointer,
4467            f: glib::ffi::gpointer,
4468        ) {
4469            let f: &F = &*(f as *const F);
4470            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4471        }
4472        unsafe {
4473            let f: Box_<F> = Box_::new(f);
4474            connect_raw(
4475                self.as_ptr() as *mut _,
4476                c"notify::word".as_ptr() as *const _,
4477                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4478                    notify_word_trampoline::<Self, F> as *const (),
4479                )),
4480                Box_::into_raw(f),
4481            )
4482        }
4483    }
4484
4485    #[cfg(feature = "v4_6")]
4486    #[cfg_attr(docsrs, doc(cfg(feature = "v4_6")))]
4487    #[doc(alias = "word-set")]
4488    fn connect_word_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4489        unsafe extern "C" fn notify_word_set_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4490            this: *mut ffi::GtkTextTag,
4491            _param_spec: glib::ffi::gpointer,
4492            f: glib::ffi::gpointer,
4493        ) {
4494            let f: &F = &*(f as *const F);
4495            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4496        }
4497        unsafe {
4498            let f: Box_<F> = Box_::new(f);
4499            connect_raw(
4500                self.as_ptr() as *mut _,
4501                c"notify::word-set".as_ptr() as *const _,
4502                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4503                    notify_word_set_trampoline::<Self, F> as *const (),
4504                )),
4505                Box_::into_raw(f),
4506            )
4507        }
4508    }
4509
4510    #[doc(alias = "wrap-mode")]
4511    fn connect_wrap_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4512        unsafe extern "C" fn notify_wrap_mode_trampoline<P: IsA<TextTag>, F: Fn(&P) + 'static>(
4513            this: *mut ffi::GtkTextTag,
4514            _param_spec: glib::ffi::gpointer,
4515            f: glib::ffi::gpointer,
4516        ) {
4517            let f: &F = &*(f as *const F);
4518            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4519        }
4520        unsafe {
4521            let f: Box_<F> = Box_::new(f);
4522            connect_raw(
4523                self.as_ptr() as *mut _,
4524                c"notify::wrap-mode".as_ptr() as *const _,
4525                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4526                    notify_wrap_mode_trampoline::<Self, F> as *const (),
4527                )),
4528                Box_::into_raw(f),
4529            )
4530        }
4531    }
4532
4533    #[doc(alias = "wrap-mode-set")]
4534    fn connect_wrap_mode_set_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
4535        unsafe extern "C" fn notify_wrap_mode_set_trampoline<
4536            P: IsA<TextTag>,
4537            F: Fn(&P) + 'static,
4538        >(
4539            this: *mut ffi::GtkTextTag,
4540            _param_spec: glib::ffi::gpointer,
4541            f: glib::ffi::gpointer,
4542        ) {
4543            let f: &F = &*(f as *const F);
4544            f(TextTag::from_glib_borrow(this).unsafe_cast_ref())
4545        }
4546        unsafe {
4547            let f: Box_<F> = Box_::new(f);
4548            connect_raw(
4549                self.as_ptr() as *mut _,
4550                c"notify::wrap-mode-set".as_ptr() as *const _,
4551                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
4552                    notify_wrap_mode_set_trampoline::<Self, F> as *const (),
4553                )),
4554                Box_::into_raw(f),
4555            )
4556        }
4557    }
4558}
4559
4560impl<O: IsA<TextTag>> TextTagExt for O {}