]> O.S.I.I.S - jp/crow.git/commitdiff
revert 65cf1452510c336fcd69f9922774389d6c3b1aee, to allow widget creation from code
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 11 Sep 2017 16:03:35 +0000 (18:03 +0200)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Mon, 11 Sep 2017 16:03:35 +0000 (18:03 +0200)
25 files changed:
Crow.OpenTK.nuspec
Tests/CrowWindow.cs
src/CompilerServices/CompilerServices.cs
src/CrowThread.cs
src/GraphicObjects/ColorSelector.cs
src/GraphicObjects/FileDialog.cs
src/GraphicObjects/GenericStack.cs
src/GraphicObjects/GraphicObject.cs
src/GraphicObjects/Grid.cs
src/GraphicObjects/Group.cs
src/GraphicObjects/Image.cs
src/GraphicObjects/Label.cs
src/GraphicObjects/MessageBox.cs
src/GraphicObjects/Popper.cs
src/GraphicObjects/PrivateContainer.cs
src/GraphicObjects/ScrollingObject.cs
src/GraphicObjects/ScrollingTextBox.cs
src/GraphicObjects/Splitter.cs
src/GraphicObjects/TabView.cs
src/GraphicObjects/TemplatedControl.cs
src/GraphicObjects/TemplatedGroup.cs
src/GraphicObjects/TextBox.cs
src/GraphicObjects/Window.cs
src/GraphicObjects/Wrapper.cs
src/LayoutingQueueItem.cs

index 21570980a2e3045dbadec35f802691d736bb4e35..eb3b1216fe4f6e3b2ad6e8f163754ad991215d51 100644 (file)
@@ -2,7 +2,7 @@
 <package >
        <metadata>
                <id>Crow.OpenTK</id>
-               <version>0.5.4</version>
+               <version>0.5.5</version>
                <title>C# Rapid Open Widget Toolkit</title>
                <authors>JP Bruyere</authors>
                <owners>Grand Tetras Software</owners>
@@ -27,6 +27,7 @@ Precompiled binaries of those libs are available at http://ftp.gnome.org/pub/GNO
 For more information, please visit https://jpbruyere.github.io/Crow/.
                </summary>
                <releaseNotes>
+                       - Bug fix (#35) of 0.5.4
                        - embed Cairo bindings in Crow.
                        - use of CairoRegion to handle clipping
                        - IDisposable for GraphicObject
index e66fa7b3ca1df9bfcad51ae222add2b4d5aa3fa3..2934af23c83a7f208a482d711d88ddfca70ad55c 100644 (file)
@@ -63,7 +63,7 @@ namespace Crow
                                        ValueChanged.Raise(this, new ValueChangeEventArgs ("fpsMin", fpsMin));
                                }
                                #endif
-                               if (frameCpt % 20 == 0) {
+                               if (frameCpt % 3 == 0) {
                                        ValueChanged.Raise (this, new ValueChangeEventArgs ("fps", _fps));
                                        #if MEASURE_TIME
                                        foreach (PerformanceMeasure m in ifaceControl[0].PerfMeasures)
index 752655f8a333d505c23adb97d54affc93223243f..5409aa5e7b2210ac63148d7459fe30ae8d941f6b 100644 (file)
@@ -76,7 +76,7 @@ namespace Crow
                internal static MethodInfo miDSChangeEmitHelper = typeof(Instantiator).GetMethod("dataSourceChangedEmitHelper", BindingFlags.Instance | BindingFlags.NonPublic);
                internal static MethodInfo miDSReverseBinding = typeof(Instantiator).GetMethod("dataSourceReverseBinding", BindingFlags.Static | BindingFlags.NonPublic);
 
-               internal static FieldInfo miSetCurIface = typeof(GraphicObject).GetField ("currentInterface", BindingFlags.Public | BindingFlags.Instance);
+               internal static FieldInfo miSetCurIface = typeof(GraphicObject).GetField ("currentInterface", BindingFlags.NonPublic | BindingFlags.Instance);
                internal static MethodInfo miFindByName = typeof (GraphicObject).GetMethod ("FindByName");
                internal static MethodInfo miGetGObjItem = typeof(List<GraphicObject>).GetMethod("get_Item", new Type[] { typeof(Int32) });
                internal static MethodInfo miLoadDefaultVals = typeof (GraphicObject).GetMethod ("loadDefaultValues");
index 823fe1a63b0df92776267b413410c42900294144..c3a4ba3b8c36833393356599bcd2753ee0ec9ab2 100644 (file)
@@ -41,15 +41,15 @@ namespace Crow
                        thread = new Thread (start);
                        thread.IsBackground = true;
                        Host = host;
-                       lock (Host.currentInterface.CrowThreads)
-                               Host.currentInterface.CrowThreads.Add (this);
+                       lock (Host.CurrentInterface.CrowThreads)
+                               Host.CurrentInterface.CrowThreads.Add (this);
                }
                public void CheckState(){
                        if (thread.ThreadState != ThreadState.Stopped)
                                return;
                        Finished.Raise (Host, null);
-                       lock (Host.currentInterface.CrowThreads)
-                               Host.currentInterface.CrowThreads.Remove (this);
+                       lock (Host.CurrentInterface.CrowThreads)
+                               Host.CurrentInterface.CrowThreads.Remove (this);
                }
                public void Start() { thread.Start();}
                public void Cancel(){
@@ -57,8 +57,8 @@ namespace Crow
                                cancelRequested = true;
                                thread.Join ();
                        }
-                       lock (Host.currentInterface.CrowThreads)
-                               Host.currentInterface.CrowThreads.Remove (this);
+                       lock (Host.CurrentInterface.CrowThreads)
+                               Host.CurrentInterface.CrowThreads.Remove (this);
                }
        }
 }
index 596d332e91697626df2ebcdf529292ca93ed3151..c9f3a19869da776fd656f571e80584e2eb70dcd0 100644 (file)
@@ -43,7 +43,7 @@ namespace Crow
                public override void onMouseMove (object sender, MouseMoveEventArgs e)
                {
                        base.onMouseMove (sender, e);
-                       if (currentInterface.Mouse.LeftButton == ButtonState.Released)
+                       if (CurrentInterface.Mouse.LeftButton == ButtonState.Released)
                                return;
                        updateMouseLocalPos (e.Position);
                }
index 47a6fb54e32a107fbb977bd73ed916e4aaf8b312..8182e02166dc3818125e32a4d09b6942e8a3ebbd 100644 (file)
@@ -117,11 +117,11 @@ namespace Crow
                                CurrentDirectory = SelectedDirectory;
                        else {
                                OkClicked.Raise (this, null);
-                               unloadDialog ((sender as GraphicObject).currentInterface);
+                               unloadDialog ((sender as GraphicObject).CurrentInterface);
                        }
                }
                void onCancel(object sender, MouseButtonEventArgs e){
-                       unloadDialog ((sender as GraphicObject).currentInterface);
+                       unloadDialog ((sender as GraphicObject).CurrentInterface);
                }
                void unloadDialog(Interface host){
                        host.DeleteWidget (this);
index 77f1cb1f922c637cecce8551601c8995ef26a003..cecdaffd5116825561ac2114810960b28fe8042b 100644 (file)
@@ -127,7 +127,7 @@ namespace Crow
 
                                //if no layouting remains in queue for item, registre for redraw
                                if (RegisteredLayoutings == LayoutingType.None && IsDirty)
-                                       currentInterface.EnqueueForRepaint (this);
+                                       CurrentInterface.EnqueueForRepaint (this);
 
                                return true;
                        }
index 7b9f0c56c795560fd41a0848f8e80ad4a7e5982a..0957f8acdb5dd7a15a1c7ffeb72808d9dd858f65 100644 (file)
@@ -91,7 +91,20 @@ namespace Crow
                internal static ulong currentUid = 0;
                internal ulong uid = 0;
 
-               public Interface currentInterface = null;
+               Interface currentInterface = null;
+
+               [XmlIgnore]public Interface CurrentInterface {
+                       get {
+                               if (currentInterface == null) {
+                                       currentInterface = Interface.CurrentInterface;
+                                       Initialize ();
+                               }
+                               return currentInterface;
+                       }
+                       set {
+                               currentInterface = value;
+                       }
+               }
 
                public Region Clipping;
 
@@ -107,12 +120,23 @@ namespace Crow
                #region CTOR
                public GraphicObject ()
                {
+                       Clipping = new Region ();
                        #if DEBUG
                        uid = currentUid;
                        currentUid++;
                        #endif
                }
                #endregion
+               internal bool initialized = false;
+               /// <summary>
+               /// Initialize this Graphic object instance by setting style and default values and loading template if required
+               /// </summary>
+               public virtual void Initialize(){
+                       if (currentInterface == null)
+                               currentInterface = Interface.CurrentInterface;                  
+                       loadDefaultValues ();
+                       initialized = true;
+               }
                #region private fields
                LayoutingType registeredLayoutings = LayoutingType.All;
                ILayoutable logicalParent;
@@ -677,8 +701,6 @@ namespace Crow
                        Debug.WriteLine ("LoadDefValues for " + this.ToString ());
                        #endif
 
-                       Clipping = new Region ();
-
                        Type thisType = this.GetType ();
 
                        if (!string.IsNullOrEmpty (Style)) {
@@ -910,7 +932,7 @@ namespace Crow
                        if (Width.IsFit || Height.IsFit)
                                RegisterForLayouting (LayoutingType.Sizing);
                        else if (RegisteredLayoutings == LayoutingType.None)
-                               currentInterface.EnqueueForRepaint (this);
+                               CurrentInterface.EnqueueForRepaint (this);
                }
                /// <summary> query an update of the content, a redraw </summary>
                [MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -921,7 +943,7 @@ namespace Crow
                        #endif
                        IsDirty = true;
                        if (RegisteredLayoutings == LayoutingType.None)
-                               currentInterface.EnqueueForRepaint (this);
+                               CurrentInterface.EnqueueForRepaint (this);
                }
                #endregion
 
@@ -933,12 +955,13 @@ namespace Crow
                                contentSize.Width + 2 * Margin: contentSize.Height + 2 * Margin;
                }
                /// <summary> By default in groups, LayoutingType.ArrangeChildren is reset </summary>
-               public virtual void ChildrenLayoutingConstraints(ref LayoutingType layoutType){}
+               public virtual void ChildrenLayoutingConstraints(ref LayoutingType layoutType){
+               }
                public virtual bool ArrangeChildren { get { return false; } }
                public virtual void RegisterForLayouting(LayoutingType layoutType){
                        if (Parent == null)
                                return;
-                       lock (currentInterface.LayoutMutex) {
+                       lock (CurrentInterface.LayoutMutex) {
                                //prevent queueing same LayoutingType for this
                                layoutType &= (~RegisteredLayoutings);
 
@@ -957,20 +980,23 @@ namespace Crow
                                if (Parent is GraphicObject)
                                        (Parent as GraphicObject).ChildrenLayoutingConstraints (ref layoutType);
 
+//                             //prevent queueing same LayoutingType for this
+//                             layoutType &= (~RegisteredLayoutings);
+
                                if (layoutType == LayoutingType.None)
                                        return;
 
                                //enqueue LQI LayoutingTypes separately
                                if (layoutType.HasFlag (LayoutingType.Width))
-                                       currentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.Width, this));
+                                       CurrentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.Width, this));
                                if (layoutType.HasFlag (LayoutingType.Height))
-                                       currentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.Height, this));
+                                       CurrentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.Height, this));
                                if (layoutType.HasFlag (LayoutingType.X))
-                                       currentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.X, this));
+                                       CurrentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.X, this));
                                if (layoutType.HasFlag (LayoutingType.Y))
-                                       currentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.Y, this));
+                                       CurrentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.Y, this));
                                if (layoutType.HasFlag (LayoutingType.ArrangeChildren))
-                                       currentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.ArrangeChildren, this));
+                                       CurrentInterface.LayoutingQueue.Enqueue (new LayoutingQueueItem (LayoutingType.ArrangeChildren, this));
                        }
                }
 
@@ -1143,7 +1169,7 @@ namespace Crow
 
                        //if no layouting remains in queue for item, registre for redraw
                        if (this.registeredLayoutings == LayoutingType.None && IsDirty)
-                               currentInterface.EnqueueForRepaint (this);
+                               CurrentInterface.EnqueueForRepaint (this);
 
                        return true;
                }
@@ -1276,8 +1302,8 @@ namespace Crow
                }
                public virtual void checkHoverWidget(MouseMoveEventArgs e)
                {
-                       if (currentInterface.HoverWidget != this) {
-                               currentInterface.HoverWidget = this;
+                       if (CurrentInterface.HoverWidget != this) {
+                               CurrentInterface.HoverWidget = this;
                                onMouseEnter (this, e);
                        }
 
@@ -1293,19 +1319,19 @@ namespace Crow
                        MouseMove.Raise (this, e);
                }
                public virtual void onMouseDown(object sender, MouseButtonEventArgs e){
-                       if (currentInterface.eligibleForDoubleClick == this && currentInterface.clickTimer.ElapsedMilliseconds < Interface.DoubleClick)
+                       if (CurrentInterface.eligibleForDoubleClick == this && CurrentInterface.clickTimer.ElapsedMilliseconds < Interface.DoubleClick)
                                onMouseDoubleClick (this, e);
                        else
                                currentInterface.clickTimer.Restart();
-                       currentInterface.eligibleForDoubleClick = null;
+                       CurrentInterface.eligibleForDoubleClick = null;
 
-                       if (currentInterface.ActiveWidget == null)
-                               currentInterface.ActiveWidget = this;
+                       if (CurrentInterface.ActiveWidget == null)
+                               CurrentInterface.ActiveWidget = this;
                        if (this.Focusable && !Interface.FocusOnHover) {
                                BubblingMouseButtonEventArg be = e as BubblingMouseButtonEventArg;
                                if (be.Focused == null) {
                                        be.Focused = this;
-                                       currentInterface.FocusedWidget = this;
+                                       CurrentInterface.FocusedWidget = this;
                                }
                        }
                        //bubble event to the top
@@ -1324,8 +1350,8 @@ namespace Crow
                        MouseUp.Raise (this, e);
 
                        if (MouseIsIn (e.Position) && IsActive) {
-                               if (currentInterface.clickTimer.ElapsedMilliseconds < Interface.DoubleClick)
-                                       currentInterface.eligibleForDoubleClick = this;
+                               if (CurrentInterface.clickTimer.ElapsedMilliseconds < Interface.DoubleClick)
+                                       CurrentInterface.eligibleForDoubleClick = this;
                                onMouseClick (this, e);
                        }
                }
index b2a13150311b5617be7edd74bff282e369df48d8..3d1847a28502f0d7783cf1c432927873b7e0dc66 100644 (file)
@@ -161,7 +161,7 @@ namespace Crow
 
                                //if no layouting remains in queue for item, registre for redraw
                                if (RegisteredLayoutings == LayoutingType.None && IsDirty)
-                                       currentInterface.EnqueueForRepaint (this);
+                                       CurrentInterface.EnqueueForRepaint (this);
                                
                                return true;
                        }
index 917087cc782d2ab444a0850fa6d86d2aef29ccbe..e4e9ba2047db34693c47ef3931751c272992aa27 100644 (file)
@@ -73,9 +73,14 @@ namespace Crow
         public virtual void RemoveChild(GraphicObject child)        
                {
                        child.LayoutChanged -= OnChildLayoutChanges;
+                       //check if HoverWidget is removed from Tree
+                       if (CurrentInterface.HoverWidget != null) {
+                               if (this.Contains (CurrentInterface.HoverWidget))
+                                       CurrentInterface.HoverWidget = null;
+                       }
 
                        lock (children)
-               Children.Remove(child);
+                               Children.Remove(child);
                        child.Dispose ();
 
                        if (child == largestChild && Width == Measure.Fit)
@@ -344,8 +349,8 @@ namespace Crow
                #region Mouse handling
                public override void checkHoverWidget (MouseMoveEventArgs e)
                {
-                       if (currentInterface.HoverWidget != this) {
-                               currentInterface.HoverWidget = this;
+                       if (CurrentInterface.HoverWidget != this) {
+                               CurrentInterface.HoverWidget = this;
                                onMouseEnter (this, e);
                        }
                        for (int i = Children.Count - 1; i >= 0; i--) {
index f2d540be06cd62b2cdfd975cccd4bb297bcc173e..6a4c590d0b274ed27b17c3343e2e68fd8a7538c2 100644 (file)
@@ -79,7 +79,7 @@ namespace Crow
                                        if (string.IsNullOrEmpty(value))
                                                Picture = null;
                                        else {
-                                               lock(currentInterface.LayoutMutex){
+                                               lock(CurrentInterface.LayoutMutex){
                                                        LoadImage (value);
                                                }
                                        }
index 7a802bda13ade2dcb1cdcb327d707b9b64cbef90..64ee9688c384276c2e6ef1d07acd93026a864794 100644 (file)
@@ -686,12 +686,12 @@ namespace Crow
                {
                        base.onMouseEnter (sender, e);
                        if (Selectable)
-                               currentInterface.MouseCursor = XCursor.Text;
+                               CurrentInterface.MouseCursor = XCursor.Text;
                }
                public override void onMouseLeave (object sender, MouseMoveEventArgs e)
                {
                        base.onMouseLeave (sender, e);
-                       currentInterface.MouseCursor = XCursor.Default;
+                       CurrentInterface.MouseCursor = XCursor.Default;
                }
                protected override void onFocused (object sender, EventArgs e)
                {
index 8c8380efe16c1e0bfc5e3b76e9be072d0c083922..d8ce1dae7d401b327d0a3ad08f9157ece9a4e722 100644 (file)
@@ -134,8 +134,8 @@ namespace Crow
                public static MessageBox Show (Type msgBoxType, string message, string okMsg = "", string cancelMsg = ""){
                        lock (Interface.CurrentInterface.UpdateMutex) {
                                MessageBox mb = new MessageBox ();
-                               mb.loadDefaultValues ();
-                               mb.currentInterface.AddWidget (mb);
+                               mb.Initialize ();
+                               mb.CurrentInterface.AddWidget (mb);
                                mb.MsgType = msgBoxType;
                                mb.Message = message;
                                if (!string.IsNullOrEmpty(okMsg))
index d6e363469fa5b0390ebbc94feb7b3e448984e39c..72a3fa8de380dc364c94108b302884e5918261b5 100644 (file)
@@ -204,8 +204,8 @@ namespace Crow
                }
                public override void checkHoverWidget (MouseMoveEventArgs e)
                {
-                       if (currentInterface.HoverWidget != this) {
-                               currentInterface.HoverWidget = this;
+                       if (CurrentInterface.HoverWidget != this) {
+                               CurrentInterface.HoverWidget = this;
                                onMouseEnter (this, e);
                        }
                        if (Content != null){
@@ -225,10 +225,10 @@ namespace Crow
                        if (Content != null) {
                                Content.Visible = true;
                                if (Content.Parent == null)
-                                       currentInterface.AddWidget (Content, true);
+                                       CurrentInterface.AddWidget (Content, true);
                                if (Content.LogicalParent != this)
                                        Content.LogicalParent = this;
-                               currentInterface.PutOnTop (Content, true);
+                               CurrentInterface.PutOnTop (Content, true);
                                _content_LayoutChanged (this, new LayoutingEventArgs (LayoutingType.Sizing));
                        }
                        Popped.Raise (this, e);
index 077f732f3d382013a77a43f4f49671c97cf9ddb0..c40bceb47b49c749832cf33ca481e6d3108b8e85 100644 (file)
@@ -54,6 +54,10 @@ namespace Crow
 
                        if (child != null) {
                                //check if HoverWidget is removed from Tree
+                               if (CurrentInterface.HoverWidget != null) {
+                                       if (this.Contains (CurrentInterface.HoverWidget))
+                                               CurrentInterface.HoverWidget = null;
+                               }
                                contentSize = new Size (0, 0);
                                child.LayoutChanged -= OnChildLayoutChanges;
                                child.Dispose ();
index 42acdbf9d9d02bd1a366641a067279be6a3b2905..09558984d9ca0b3b5b29fdcb2343bd1484e2826e 100644 (file)
@@ -146,7 +146,7 @@ namespace Crow
                public override void onMouseWheel (object sender, MouseWheelEventArgs e)
                {
                        base.onMouseWheel (sender, e);
-                       if (currentInterface.Keyboard.IsKeyDown (Key.ShiftLeft))
+                       if (CurrentInterface.Keyboard.IsKeyDown (Key.ShiftLeft))
                                ScrollX += e.Delta * MouseWheelSpeed;
                        else
                                ScrollY -= e.Delta * MouseWheelSpeed;
index c409d02295a92f2b841fd879b0292cdc0914e879..a435f9ee6bf042dcbed486d0e84f1a37a49a4bbd 100644 (file)
@@ -464,12 +464,12 @@ namespace Crow
                public override void onMouseEnter (object sender, MouseMoveEventArgs e)
                {
                        base.onMouseEnter (sender, e);
-                       currentInterface.MouseCursor = XCursor.Text;
+                       CurrentInterface.MouseCursor = XCursor.Text;
                }
                public override void onMouseLeave (object sender, MouseMoveEventArgs e)
                {
                        base.onMouseLeave (sender, e);
-                       currentInterface.MouseCursor = XCursor.Default;
+                       CurrentInterface.MouseCursor = XCursor.Default;
                }
                protected override void onFocused (object sender, EventArgs e)
                {
@@ -555,7 +555,7 @@ namespace Crow
                                        if (!MoveRight ())
                                                return;
                                }else if (e.Shift)
-                                       currentInterface.Clipboard = this.SelectedText;
+                                       CurrentInterface.Clipboard = this.SelectedText;
                                this.DeleteChar ();
                                break;
                        case Key.Enter:
@@ -601,9 +601,9 @@ namespace Crow
                                break;
                        case Key.Insert:
                                if (e.Shift)
-                                       this.Insert (currentInterface.Clipboard);
+                                       this.Insert (CurrentInterface.Clipboard);
                                else if (e.Control && !selectionIsEmpty)
-                                       currentInterface.Clipboard = this.SelectedText;
+                                       CurrentInterface.Clipboard = this.SelectedText;
                                break;
                        case Key.Left:
                                if (e.Shift) {
index 503e1ecaf7612374e8d71a139283ee2e028f6032..2f5dd15b9601a2b6bcf68b72a8ab6fd0ad317608 100644 (file)
@@ -86,14 +86,14 @@ namespace Crow
                {
                        base.onMouseEnter (sender, e);
                        if ((Parent as GenericStack).Orientation == Orientation.Horizontal)
-                               currentInterface.MouseCursor = XCursor.H;
+                               CurrentInterface.MouseCursor = XCursor.H;
                        else
-                               currentInterface.MouseCursor = XCursor.V;
+                               CurrentInterface.MouseCursor = XCursor.V;
                }
                public override void onMouseLeave (object sender, MouseMoveEventArgs e)
                {
                        base.onMouseLeave (sender, e);
-                       currentInterface.MouseCursor = XCursor.Default;
+                       CurrentInterface.MouseCursor = XCursor.Default;
                }
                public override void onMouseDown (object sender, MouseButtonEventArgs e)
                {
index c0c07fc760bb0557b7036dd489849e745de4d18a..ecf38f109a692fb789c80f75b828cb3f69ec8a6a 100644 (file)
@@ -139,7 +139,7 @@ namespace Crow
 
                                //if no layouting remains in queue for item, registre for redraw
                                if (RegisteredLayoutings == LayoutingType.None && IsDirty)
-                                       currentInterface.EnqueueForRepaint (this);
+                                       CurrentInterface.EnqueueForRepaint (this);
 
                                return true;
                        }
@@ -177,8 +177,8 @@ namespace Crow
                #region Mouse handling
                public override void checkHoverWidget (MouseMoveEventArgs e)
                {
-                       if (currentInterface.HoverWidget != this) {
-                               currentInterface.HoverWidget = this;
+                       if (CurrentInterface.HoverWidget != this) {
+                               CurrentInterface.HoverWidget = this;
                                onMouseEnter (this, e);
                        }
 
index ba580dae830cd2724adc877e8116d6de65bdd723..c4ef5788708679f4bcc91805be930723c2da62c7 100644 (file)
@@ -62,7 +62,7 @@ namespace Crow
                                if (string.IsNullOrEmpty(_template))
                                        loadTemplate ();
                                else
-                                       loadTemplate (currentInterface.Load (_template));
+                                       loadTemplate (CurrentInterface.Load (_template));
                        }
                }
                [XmlAttributeAttribute()][DefaultValue("Templated Control")]
@@ -76,6 +76,11 @@ namespace Crow
                        }
                }
                #region GraphicObject overrides
+               public override void Initialize ()
+               {
+                       loadTemplate ();
+                       base.Initialize ();
+               }
                public override GraphicObject FindByName (string nameToFind)
                {
                        //prevent name searching in template
@@ -108,7 +113,7 @@ namespace Crow
                        if (template == null) {
                                if (!Interface.DefaultTemplates.ContainsKey (this.GetType ().FullName))
                                        throw new Exception (string.Format ("No default template found for '{0}'", this.GetType ().FullName));
-                               this.SetChild (currentInterface.Load (Interface.DefaultTemplates[this.GetType ().FullName]));
+                               this.SetChild (CurrentInterface.Load (Interface.DefaultTemplates[this.GetType ().FullName]));
                        }else
                                this.SetChild (template);
                }
index 1cbc4935366c905cbdd6aa0f916129f7001e048c..60f18994707f7198c646a43742f681228bfc20f4 100644 (file)
@@ -159,7 +159,7 @@ namespace Crow
 
                                NotifyValueChanged ("Data", data);
 
-                               lock (currentInterface.LayoutMutex)
+                               lock (CurrentInterface.LayoutMutex)
                                        ClearItems ();
 
                                if (data == null)
@@ -298,8 +298,8 @@ namespace Crow
                                itemPerPage = int.MaxValue;
                        } else if (typeof(GenericStack).IsAssignableFrom (items.GetType ())) {
                                GenericStack gs = new GenericStack ();
-                               gs.currentInterface = items.currentInterface;
-                               gs.loadDefaultValues ();
+                               gs.CurrentInterface = items.CurrentInterface;
+                               gs.Initialize ();
                                gs.Orientation = (items as GenericStack).Orientation;
                                gs.Width = items.Width;
                                gs.Height = items.Height;
@@ -327,7 +327,7 @@ namespace Crow
 
                        if (page == items)
                                return;
-                       lock (currentInterface.LayoutMutex)
+                       lock (CurrentInterface.LayoutMutex)
                                items.AddChild (page);
 
                        #if DEBUG_LOAD
@@ -380,8 +380,8 @@ namespace Crow
                                        iTemp = ItemTemplates ["default"];
                        }
 
-                       lock (currentInterface.LayoutMutex) {
-                               g = iTemp.CreateInstance(currentInterface);
+                       lock (CurrentInterface.LayoutMutex) {
+                               g = iTemp.CreateInstance(CurrentInterface);
                                page.AddChild (g);
                                //g.LogicalParent = this;
                                registerItemClick (g);
index 5e2d55cbeac0fdc36210bda850455a5a2e0f71d0..0cbee9f8a4e560b16731be318f1814bea79c6e11 100644 (file)
@@ -85,7 +85,7 @@ namespace Crow
                                        if (!MoveRight ())
                                                return;
                                }else if (e.Shift)
-                                       currentInterface.Clipboard = this.SelectedText;
+                                       CurrentInterface.Clipboard = this.SelectedText;
                                this.DeleteChar ();
                                break;
                        case Key.Enter:
@@ -134,9 +134,9 @@ namespace Crow
                                break;
                        case Key.Insert:
                                if (e.Shift)
-                                       this.Insert (currentInterface.Clipboard);
+                                       this.Insert (CurrentInterface.Clipboard);
                                else if (e.Control && !selectionIsEmpty)
-                                       currentInterface.Clipboard = this.SelectedText;
+                                       CurrentInterface.Clipboard = this.SelectedText;
                                break;
                        case Key.Left:
                                if (e.Shift) {
index 176e8d9099db0cafe633039b26cd51b555d484eb..7ea4db752d0d279eab0bb9b80a11e87b137d0608 100644 (file)
@@ -152,7 +152,7 @@ namespace Crow
                                alwaysOnTop = value;
 
                                if (alwaysOnTop && Parent != null)
-                                       currentInterface.PutOnTop (this);
+                                       CurrentInterface.PutOnTop (this);
 
                                NotifyValueChanged ("AlwaysOnTop", alwaysOnTop);
                        }
@@ -178,11 +178,11 @@ namespace Crow
                {
                        base.onMouseMove (sender, e);
 
-                       Interface otkgw = currentInterface;
+                       Interface otkgw = CurrentInterface;
 
                        if (!hoverBorder) {
                                currentDirection = Direction.None;
-                               currentInterface.MouseCursor = XCursor.Default;
+                               CurrentInterface.MouseCursor = XCursor.Default;
                                return;
                        }
 
@@ -323,7 +323,7 @@ namespace Crow
                #endregion
 
                protected void onMaximized (object sender, EventArgs e){
-                       lock (currentInterface.LayoutMutex) {
+                       lock (CurrentInterface.LayoutMutex) {
                                if (!IsMinimized)
                                        savedBounds = this.LastPaintedSlot;
                                this.Left = this.Top = 0;
@@ -342,7 +342,7 @@ namespace Crow
 
                }
                protected void onUnmaximized (object sender, EventArgs e){
-                       lock (currentInterface.LayoutMutex) {
+                       lock (CurrentInterface.LayoutMutex) {
                                this.Left = savedBounds.Left;
                                this.Top = savedBounds.Top;
                                this.Width = savedBounds.Width;
@@ -357,7 +357,7 @@ namespace Crow
                        Unmaximized.Raise (sender, e);
                }
                protected void onMinimized (object sender, EventArgs e){
-                       lock (currentInterface.LayoutMutex) {
+                       lock (CurrentInterface.LayoutMutex) {
                                if (IsNormal)
                                        savedBounds = this.LastPaintedSlot;
                                Width = 200;
@@ -375,7 +375,7 @@ namespace Crow
                {
                        hoverBorder = false;
                        currentDirection = Direction.None;
-                       currentInterface.MouseCursor = XCursor.Default;
+                       CurrentInterface.MouseCursor = XCursor.Default;
                }
                protected void onBorderMouseEnter (object sender, MouseMoveEventArgs e)
                {
@@ -385,7 +385,7 @@ namespace Crow
 
                protected void butQuitPress (object sender, MouseButtonEventArgs e)
                {
-                       currentInterface.MouseCursor = XCursor.Default;
+                       CurrentInterface.MouseCursor = XCursor.Default;
                        close ();
                }
 
index 224109193aaa2847c0ea9bca9edb078de560a1e9..8b282ebbce528908981925d1af7d6e5fee849031 100644 (file)
@@ -189,7 +189,7 @@ namespace Crow
 
                                //if no layouting remains in queue for item, registre for redraw
                                if (RegisteredLayoutings == LayoutingType.None && IsDirty)
-                                       currentInterface.EnqueueForRepaint (this);
+                                       CurrentInterface.EnqueueForRepaint (this);
 
                                return true;
                        }
index 47807a9939a2bd2d65150fde85de0ff522cd3ee5..7f272d982bacff25752ed9fc8ad4e928a7c9d5c6 100644 (file)
@@ -116,7 +116,7 @@ namespace Crow
                                #endif
                                if (LayoutingTries < Interface.MaxLayoutingTries) {
                                        Layoutable.RegisteredLayoutings |= LayoutType;
-                                       (Layoutable as GraphicObject).currentInterface.LayoutingQueue.Enqueue (this);
+                                       (Layoutable as GraphicObject).CurrentInterface.LayoutingQueue.Enqueue (this);
                                } else if (DiscardCount < Interface.MaxDiscardCount) {
                                        #if DEBUG_LAYOUTING
                                        Debug.WriteLine ("\t\tDiscarded");
@@ -124,7 +124,7 @@ namespace Crow
                                        LayoutingTries = 0;
                                        DiscardCount++;
                                        Layoutable.RegisteredLayoutings |= LayoutType;
-                                       (Layoutable as GraphicObject).currentInterface.DiscardQueue.Enqueue (this);
+                                       (Layoutable as GraphicObject).CurrentInterface.DiscardQueue.Enqueue (this);
                                }
                                #if DEBUG_LAYOUTING
                                else