Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Cummings <mcumming@microsoft.com>2019-08-20 16:46:00 +0300
committerMichael Cummings <mcumming@microsoft.com>2019-08-20 16:46:00 +0300
commit1add697852b5e22d012739bc805252b4c85897a2 (patch)
treea1ffcc7bf1d17c27ba538034304649e9d051a9da /Xwt.Gtk/Xwt.GtkBackend/ButtonBackend.cs
parentbf391688df31f9ea64554a709ccb811d7c46614f (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.cs36
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);
+ }
}
}