diff options
author | Vsevolod Kukol <sevoku@xamarin.com> | 2016-04-14 11:51:26 +0300 |
---|---|---|
committer | Vsevolod Kukol <sevoku@xamarin.com> | 2016-04-14 11:55:45 +0300 |
commit | 982513f6bfee2a885f63863fe81a882e6326c21e (patch) | |
tree | b7e70007a7d40ab59b3e156f6bb34857bbd97fba /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components | |
parent | 6c4fb77fb244427c3bb27f8138c8b361f108f8c9 (diff) |
[Ide] Fix disabled state colors in Solution Pad
* Load cell foreground colors from GtkTreeView style
* Different selected state colors on Mac
(fixes bug #28451)
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs index b388534ab5..7ed2e6911a 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs @@ -325,10 +325,8 @@ namespace MonoDevelop.Ide.Gui.Components var info = (NodeInfo)model.GetValue (it, NodeInfoColumn); var cell = (CustomCellRendererText)renderer; - if (info.DisabledStyle) - cell.TextMarkup = "<span foreground='gray'>" + info.Label + "</span>"; - else - cell.TextMarkup = info.Label; + cell.DisabledStyle = info.DisabledStyle; + cell.TextMarkup = info.Label; cell.StatusIcon = info.StatusIconInternal; } @@ -2386,6 +2384,8 @@ namespace MonoDevelop.Ide.Gui.Components set { Markup = markup = value; } } + public bool DisabledStyle { get; set; } + [GLib.Property ("status-icon")] public Xwt.Drawing.Image StatusIcon { get; set; } @@ -2419,7 +2419,7 @@ namespace MonoDevelop.Ide.Gui.Components return icon.WithSize (size); } - void SetupLayout (Gtk.Widget widget) + void SetupLayout (Gtk.Widget widget, Gtk.CellRendererState flags = 0) { if (scaledFont == null) { if (scaledFont != null) @@ -2437,7 +2437,15 @@ namespace MonoDevelop.Ide.Gui.Components layout.FontDescription = scaledFont; } - layout.SetMarkup (TextMarkup); + if (DisabledStyle) { + Gdk.Color fgColor; + if (Platform.IsMac && flags.HasFlag (Gtk.CellRendererState.Selected)) + fgColor = widget.Style.Text (IdeTheme.UserInterfaceSkin == Skin.Light ? Gtk.StateType.Selected : Gtk.StateType.Normal); + else + fgColor = widget.Style.Text (Gtk.StateType.Insensitive); + layout.SetMarkup ("<span foreground='" + fgColor.GetHex () + "'>" + TextMarkup + "</span>"); + } else + layout.SetMarkup (TextMarkup); } protected override void Render (Gdk.Drawable window, Gtk.Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gdk.Rectangle expose_area, Gtk.CellRendererState flags) @@ -2452,7 +2460,7 @@ namespace MonoDevelop.Ide.Gui.Components if ((flags & Gtk.CellRendererState.Selected) != 0) st = widget.HasFocus ? Gtk.StateType.Selected : Gtk.StateType.Active; - SetupLayout (widget); + SetupLayout (widget, flags); int w, h; layout.GetPixelSize (out w, out h); |