Skip to main content

gtk4/auto/
text_tag.rs

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