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

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@novell.com>2010-04-20 13:21:12 +0400
committerLluis Sanchez <lluis@novell.com>2010-04-20 13:21:12 +0400
commit14139a1ea78f2734cacdabe15d0db6b2e261abbc (patch)
treea048fb7816e4514139200fc6e797c9e0d8684c97 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking
parent3abd1409a9629742ef6feb78e209668e7b6bfe9e (diff)
* MonoDevelop.Components.Docking/ShadedContainer.cs: Don't store
screen coordinates because those may change if the main window is moved. Should fix bug #595192 - Pad shadow rendering issues. svn path=/trunk/monodevelop/; revision=155787
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/ShadedContainer.cs30
1 files changed, 18 insertions, 12 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/ShadedContainer.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/ShadedContainer.cs
index f8d20a906e..b85e676fba 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/ShadedContainer.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/ShadedContainer.cs
@@ -72,6 +72,7 @@ namespace MonoDevelop.Components.Docking
w.Shown += HandleWShown;
w.Hidden += HandleWHidden;
w.SizeAllocated += HandleWSizeAllocated;
+ w.Realized += HandleWRealized;
IShadedWidget sw = w as IShadedWidget;
if (sw != null)
sw.AreasChanged += HandleSwAreasChanged;
@@ -85,6 +86,7 @@ namespace MonoDevelop.Components.Docking
w.Destroyed -= HandleWDestroyed;
w.Shown -= HandleWShown;
w.Hidden -= HandleWHidden;
+ w.Realized -= HandleWRealized;
IShadedWidget sw = w as IShadedWidget;
if (sw != null)
sw.AreasChanged -= HandleSwAreasChanged;
@@ -94,19 +96,14 @@ namespace MonoDevelop.Components.Docking
void UpdateAllocation (Widget w)
{
if (w.IsRealized) {
- int x, y;
- w.GdkWindow.GetOrigin (out x, out y);
IShadedWidget sw = w as IShadedWidget;
if (sw != null) {
List<Gdk.Rectangle> rects = new List<Gdk.Rectangle> ();
- foreach (Gdk.Rectangle ar in sw.GetShadedAreas ()) {
- Gdk.Rectangle r = new Gdk.Rectangle (x + ar.X, y + ar.Y, ar.Width, ar.Height);
- rects.Add (r);
- }
+ foreach (Gdk.Rectangle ar in sw.GetShadedAreas ())
+ rects.Add (ar);
allocations [w] = rects.ToArray ();
} else {
- Gdk.Rectangle r = new Gdk.Rectangle (x + w.Allocation.X, y + w.Allocation.Y, w.Allocation.Width, w.Allocation.Height);
- allocations [w] = new Gdk.Rectangle [] { r };
+ allocations [w] = new Gdk.Rectangle [] { w.Allocation };
}
}
else {
@@ -114,6 +111,12 @@ namespace MonoDevelop.Components.Docking
}
}
+ void HandleWRealized (object sender, EventArgs e)
+ {
+ UpdateAllocation ((Widget) sender);
+ RedrawAll ();
+ }
+
void HandleSwAreasChanged (object sender, EventArgs e)
{
UpdateAllocation ((Gtk.Widget)sender);
@@ -181,11 +184,14 @@ namespace MonoDevelop.Components.Docking
secsL.Add (s);
secsR.Add (s);
- foreach (var rects in allocations.Values) {
- foreach (Gdk.Rectangle sr in rects) {
- if (sr == rect)
+ foreach (var rects in allocations) {
+ int sx, sy;
+ rects.Key.GdkWindow.GetOrigin (out sx, out sy);
+ foreach (Gdk.Rectangle srt in rects.Value) {
+ if (srt == rect)
continue;
-
+ Gdk.Rectangle sr = srt;
+ sr.Offset (sx, sy);
if (sr.Right == rect.X)
RemoveSection (secsL, sr.Y - rect.Y, sr.Height);
if (sr.Bottom == rect.Y)