~ubuntu-branches/ubuntu/oneiric/monodevelop/oneiric

« back to all changes in this revision

Viewing changes to src/core/MonoDevelop.Ide/MonoDevelop.Components/CompactScrolledWindow.cs

  • Committer: Bazaar Package Importer
  • Author(s): Jo Shields
  • Date: 2011-06-27 17:03:13 UTC
  • mto: (1.8.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 54.
  • Revision ID: james.westby@ubuntu.com-20110627170313-6cvz3s19x6e9hqe9
ImportĀ upstreamĀ versionĀ 2.5.92+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 
29
29
namespace MonoDevelop.Components
30
30
{
 
31
        [System.ComponentModel.ToolboxItem (true)]
31
32
        public class CompactScrolledWindow : Gtk.ScrolledWindow
32
33
        {
33
34
                const string styleName = "MonoDevelop.Components.CompactScrolledWindow";
34
35
                
 
36
                bool showBorderLine;
 
37
                
35
38
                static CompactScrolledWindow ()
36
39
                {
37
40
                        Gtk.Rc.ParseString (@"style """ + styleName + @"""
45
48
                        //HACK to hide the useless padding that many themes have inside the ScrolledWindow - GTK default is 3
46
49
                        Gtk.Rc.ParseString (string.Format ("widget \"*.{0}\" style \"{1}\" ", Name, styleName));
47
50
                }
 
51
                
 
52
                public bool ShowBorderLine {
 
53
                        get {
 
54
                                return showBorderLine;
 
55
                        }
 
56
                        set {
 
57
                                if (showBorderLine == value)
 
58
                                        return;
 
59
                                showBorderLine = value;
 
60
                                if (showBorderLine)
 
61
                                        BorderWidth = 1;
 
62
                                else
 
63
                                        BorderWidth = 0;
 
64
                                QueueDraw ();
 
65
                        }
 
66
                }
 
67
                
 
68
                protected override bool OnExposeEvent (Gdk.EventExpose evnt)
 
69
                {
 
70
                        var ret = base.OnExposeEvent (evnt);
 
71
                        if (!showBorderLine)
 
72
                                return ret;
 
73
                        
 
74
                        var alloc = Allocation;
 
75
                        double border = BorderWidth;
 
76
                        var halfBorder = border / 2.0;
 
77
                        
 
78
                        using (var cr = Gdk.CairoHelper.Create (evnt.Window)) {
 
79
                                Gdk.CairoHelper.Region (cr, evnt.Region);
 
80
                                cr.Clip ();
 
81
                                
 
82
                                var borderCol = Convert (Style.Dark (Gtk.StateType.Normal));
 
83
                                cr.Color = borderCol;
 
84
                                cr.LineWidth = border;
 
85
                                cr.Translate (alloc.X, alloc.Y);
 
86
                                cr.Rectangle (halfBorder, halfBorder, alloc.Width - border, alloc.Height - border);
 
87
                                cr.Stroke ();
 
88
                        }
 
89
                        
 
90
                        return ret;
 
91
                }
 
92
                
 
93
                static Cairo.Color Convert (Gdk.Color color)
 
94
                {
 
95
                        return new Cairo.Color (
 
96
                                color.Red   / (double) ushort.MaxValue,
 
97
                                color.Green / (double) ushort.MaxValue,
 
98
                                color.Blue  / (double) ushort.MaxValue);
 
99
                }
48
100
        }
49
101
}
50
102