diff options
author | Michael Cummings <mcumming@microsoft.com> | 2019-08-20 16:46:00 +0300 |
---|---|---|
committer | Michael Cummings <mcumming@microsoft.com> | 2019-08-20 16:46:00 +0300 |
commit | 1add697852b5e22d012739bc805252b4c85897a2 (patch) | |
tree | a1ffcc7bf1d17c27ba538034304649e9d051a9da /Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs | |
parent | bf391688df31f9ea64554a709ccb811d7c46614f (diff) |
Added formatting samples
Fixed formatting in menu drop down
Added proper dispose handling for menu and button when formatted text
Diffstat (limited to 'Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs')
-rw-r--r-- | Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs index afcebcf7..e0ab8e77 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs @@ -197,25 +197,32 @@ namespace Xwt.GtkBackend Widget.Label = null; } + FormattedText formattedText = null; private void SetFormattedContent (FormattedText label, ContentPosition position) { if (label != null && label.Text.Length == 0) - label = null; + return; Button b = (Button)Frontend; - if (label != null && image.Backend == null && b.Type == ButtonType.Normal) { - labelWidget = new Gtk.Label (); - label.ApplyToLabel (labelWidget); + if (labelWidget == null) { + labelWidget = new Gtk.Label (label.Text); + Widget.Label = null; Widget.Image = labelWidget; - return; } - if (b.Type == ButtonType.Disclosure) { - return; - } + formattedText = label; + labelWidget.ApplyFormattedText (formattedText); + labelWidget.ShowAll (); + labelWidget.Realized += HandleStyleUpdate; + labelWidget.StyleSet += HandleStyleUpdate; + } - if (label != null && labelWidget != null) { - label.ApplyToLabel (labelWidget); + void HandleStyleUpdate (object sender, EventArgs e) + { + // force text update with updated link color + if (labelWidget.IsRealized && formattedText != null) { + labelWidget.ApplyFormattedText (formattedText); + labelWidget.ShowAll (); } } @@ -300,6 +307,15 @@ namespace Xwt.GtkBackend Widget.Child.SizeAllocate (args.Allocation); args.RetVal = true; } + + protected override void Dispose (bool disposing) + { + if (labelWidget != null) { + labelWidget.Realized -= HandleStyleUpdate; + labelWidget.StyleSet -= HandleStyleUpdate; + } + base.Dispose (disposing); + } } } |