]> O.S.I.I.S - jp/crow.git/commitdiff
text box Validate event
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Thu, 28 Jan 2021 18:51:54 +0000 (19:51 +0100)
committerj-p <jp_bruyere@hotmail.com>
Sat, 6 Feb 2021 19:28:02 +0000 (20:28 +0100)
13 files changed:
Crow/src/DebugUtils/DebugLogger.cs
Crow/src/EventArgs/DragDropEventArgs.cs
Crow/src/EventArgs/LayoutingEventArgs.cs
Crow/src/EventArgs/ListChangedEventArg.cs
Crow/src/EventArgs/MouseCursorChangedEventArgs.cs
Crow/src/EventArgs/ScrollingEventArgs.cs
Crow/src/EventArgs/TextChangeEventArgs.cs
Crow/src/EventArgs/ValidateEventArgs.cs [new file with mode: 0644]
Crow/src/Interface.cs
Crow/src/Widgets/Label.cs
Crow/src/Widgets/TextBox.cs
Crow/src/Widgets/Widget.cs
Directory.Build.props

index ce0fa21481d566c99e087bbcec69b300dfa97ed8..cbaec88c8ea1d62a0934e5a8097a2adf12aab4b3 100644 (file)
@@ -32,9 +32,10 @@ namespace Crow
                IFaceInit                                               = IFace | 0x06,
                CreateITor                                              = IFace | 0x07,
 
-               HoverWidget                                             = Focus | 0x01,
-               FocusedWidget                                   = Focus | 0x02,
-               ActiveWidget                                    = Focus | 0x03,
+               HoverWidget                                             = IFace | Focus | Widget | 0x01,
+               FocusedWidget                                   = IFace | Focus | Widget | 0x02,
+               ActiveWidget                                    = IFace | Focus | Widget | 0x03,
+               UnfocusedWidget                                 = IFace | Focus | Widget | 0x04,
 
                //10 nth bit set for graphic obj
                TemplatedGroup                                  = 0x1000,
@@ -51,8 +52,8 @@ namespace Crow
                GOAddChild                                              = Widget | 0x08,
 
                GOSearchLargestChild                    = Widget | 0x09,
-               GOSearchTallestChild                    = Widget | 0x10,
-               GORegisterForRedraw                             = Widget | 0x11,
+               GOSearchTallestChild                    = Widget | 0x0A,
+               GORegisterForRedraw                             = Widget | 0x0B,
 
                AlreadyDisposed                                 = Dispose | Widget | Error | 0x01,
                DisposedByGC                                    = Dispose | Widget | Error | 0x02,
index b79c3669b655cc113e02f381dc689652247eaab7..3a505527098157391acb9908ccec06dfe953bf6a 100644 (file)
@@ -1,29 +1,6 @@
-//
-// LayoutingEventArgs.cs
+// Copyright (c) 2013-2021  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
 //
-// Author:
-//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
 using System;
 
 namespace Crow
@@ -39,7 +16,11 @@ namespace Crow
                /// </summary>
                public Widget DropTarget;
 
-               //public DragDropEventArgs (GraphicObject source, GraphicObject target = null) : base()
+               /// <summary>
+               /// Create a new instance of DragDropEventArgs.
+               /// </summary>
+               /// <param name="source">the widget instance source of the event</param>
+               /// <param name="target">the target widget of the event</param>
                public DragDropEventArgs (Widget source = null, Widget target = null) : base()
                {
                        DragSource = source;
index 9254aec4960a67dd2e1779fb51f8b6e1a28c8f8e..a71548de31af1b99076b9ff2c70d9c637060a90a 100644 (file)
@@ -1,37 +1,23 @@
-//
-// LayoutingEventArgs.cs
+// Copyright (c) 2013-2021  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
 //
-// Author:
-//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
 using System;
 
 namespace Crow
 {
+       /// <summary>
+       /// Event argument for layouting events.
+       /// </summary>
        public class LayoutingEventArgs: EventArgs
        {
+               /// <summary>
+               /// The layout type that has changed.
+               /// </summary>
                public LayoutingType  LayoutType;
-
+               /// <summary>
+               /// Create a new instance of LayoutingEventArgs.
+               /// </summary>
+               /// <param name="_layoutType">The layout type that trigger the event.</param>
                public LayoutingEventArgs (LayoutingType  _layoutType) : base()
                {
                        LayoutType = _layoutType;
index 3fc509e474fc423b38d0448db93e6924b3b046e6..3651e3baf8f311cebdbece8cf2e7dd2dd5891d2e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (c) 2020  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+// Copyright (c) 2013-2021  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
 //
 // This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
 using System;
index 5e58b861ef96e44d7cccdafedc8b2fc6e2dae08b..10c366acddb5fcbbdae91794a5f8c19cdeded300 100644 (file)
@@ -1,33 +1,13 @@
-//
-// MouseCursorChangedEventArgs.cs
+// Copyright (c) 2013-2021  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
 //
-// Author:
-//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
 using System;
 
 namespace Crow
 {
+       /// <summary>
+       /// Occurs when the mouse cursor changes.
+       /// </summary>
        public class MouseCursorChangedEventArgs : EventArgs
        {
                public MouseCursor NewCursor;
index 3ff420659c93752d918543cae57ed43b977cf47f..76b38ce8eae9697a412af861feb7b5639c6e666e 100644 (file)
@@ -1,29 +1,6 @@
-//
-// ScrollingEventArgs.cs
+// Copyright (c) 2013-2021  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
 //
-// Author:
-//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
 using System;
 
 namespace Crow
index a51ce29f6c5ae3c4a7cca31157d97cbbe3e67cb1..4a1cc9a37f3e21db43df37e557132699857c36b5 100644 (file)
@@ -1,36 +1,20 @@
-//
-// TextChangeEventArgs.cs
+// Copyright (c) 2013-2021  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
 //
-// Author:
-//       Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
 
 using Crow.Text;
 using System;
 
 namespace Crow
 {
+       /// <summary>
+       /// Occurs in the TextBox widget when the text has changed.
+       /// </summary>
        public class TextChangeEventArgs: EventArgs
        {
+               /// <summary>
+               /// The TextChange structure representing the change.
+               /// </summary>
                public TextChange Change;
 
                public TextChangeEventArgs (TextChange _newValue) : base()
diff --git a/Crow/src/EventArgs/ValidateEventArgs.cs b/Crow/src/EventArgs/ValidateEventArgs.cs
new file mode 100644 (file)
index 0000000..eabaf35
--- /dev/null
@@ -0,0 +1,22 @@
+// Copyright (c) 2013-2021  Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
+using System;
+
+namespace Crow
+{
+       /// <summary>
+       /// Occurs in the TextBox widget when the text has changed. Contains the 
+       /// validated text.
+       /// </summary>
+       public class ValidateEventArgs : EventArgs
+       {
+               /// <summary>
+               /// The validated text.
+               /// </summary>
+               public string ValidatedText;
+               public ValidateEventArgs (string _text) : base () {
+                       ValidatedText = _text;
+               }
+       }
+}
index 1c55ad3823dd73f86ff67b8a34d812349be03ed9..b17a8dc55bf6e2d85fb254f0e538a5cd8467c7ef 100644 (file)
@@ -62,10 +62,6 @@ namespace Crow
                #region CTOR
                static Interface ()
                {
-                       /*if (Type.GetType ("Mono.Runtime") == null) {
-                               throw new Exception (@"C.R.O.W. run only on Mono, download latest version at: http://www.mono-project.com/download/stable/");
-                       }*/
-
                        CROW_CONFIG_ROOT =
                                System.IO.Path.Combine (
                                        Environment.GetFolderPath (Environment.SpecialFolder.UserProfile),
@@ -678,8 +674,7 @@ namespace Crow
                                        _focusedWidget.HasFocus = false;
                                _focusedWidget = value;
 
-                               NotifyValueChanged ("FocusedWidget", _focusedWidget);
-                               DbgLogger.AddEvent (DbgEvtType.FocusedWidget, _focusedWidget);
+                               NotifyValueChanged ("FocusedWidget", _focusedWidget);                           
                                if (_focusedWidget != null)
                                        _focusedWidget.HasFocus = true;
                        }
index fc261cb5a59900e2a7e08df60102aea372b7719d..81632de7d380c60b4862ac9cf00ccb9492cd7b87 100644 (file)
@@ -444,7 +444,7 @@ namespace Crow {
                        OnTextChanged (this, new TextChangeEventArgs (Text));
                }
                */
-               bool textMeasureIsUpToDate = false;
+               protected bool textMeasureIsUpToDate = false;
                Size cachedTextSize = default(Size);
                protected LineCollection lines;         
                protected void getLines () {
index 3564ee499e186a4c9830f4dab7c4929b21874c4d..61af412701d63aa0d0b6fa5ab078dfb33f073fa8 100644 (file)
@@ -9,93 +9,108 @@ using System;
 
 namespace Crow
 {
-       public class TextBox : Label
+    public class TextBox : Label
     {
-               #region CTOR
-               protected TextBox() {}
-               public TextBox(Interface iface, string style = null) : base (iface, style) { }
-               #endregion
+        #region CTOR
+        protected TextBox () { }
+        public TextBox (Interface iface, string style = null) : base (iface, style) { }
+        #endregion
+
+        /// <summary>
+        /// Validate content of the text box. Occurs in non multiline TextBox when 'Enter' key
+        /// is pressed.
+        /// </summary>
+        public event EventHandler<ValidateEventArgs> Validate;
+        public virtual void OnValidate (Object sender, ValidateEventArgs e) {
+            Validate.Raise (this, e);
+        }
+
 
-                       
         #region Keyboard handling
-               public override void onKeyDown (object sender, KeyEventArgs e)
-               {
-                       Key key = e.Key;
-                       TextSpan selection = Selection;
-                       switch (key)
-                       {
-                       case Key.Backspace:
-                               if (selection.Length == 0) {
-                                        if (selection.Start == 0)
-                                               return;
-                                       update (new TextChange (selection.Start - 1, 1, ""));
-                               } else                                  
-                                       update (new TextChange (selection.Start, selection.Length, ""));
-                               break;
-                       case Key.Delete:
-                               if (selection.Length == 0) {
-                                       if (selection.Start == Text.Length)
-                                               return;                                 
-                                       update (new TextChange (selection.Start, 1, ""));
-                               } else {
-                                       if (IFace.Shift)
-                                               IFace.Clipboard = Text.AsSpan(selection.Start, selection.End).ToString();
-                                       update (new TextChange (selection.Start, selection.Length, ""));
-                               }
-                               break;
-                       case Key.Insert:
-                               if (IFace.Shift)
-                                       update (new TextChange (selection.Start, selection.Length, IFace.Clipboard));
-                               else if (IFace.Ctrl && !selection.IsEmpty)
-                                       IFace.Clipboard = Text.AsSpan (selection.Start, selection.End).ToString ();
-                               break;
-                       case Key.KeypadEnter:
-                       case Key.Enter:                         
-                               if (Multiline)
-                                       update (new TextChange (selection.Start, selection.Length, "\n"));
-                               else
-                                       OnTextChanged(this,new TextChangeEventArgs(default));
-                               break;
-                       case Key.Escape:
-                               selectionStart = null;
-                               currentLoc = lines.GetLocation (selection.Start);
-                               RegisterForRedraw ();
-                               break;                  
-                       case Key.Tab:                           
-                               update (new TextChange (selection.Start, selection.Length, "\t"));
-                               break;
-                       default:
-                               base.onKeyDown (sender, e);
-                               break;
-                       }
-                       e.Handled = true;
-               }
-               public override void onKeyPress (object sender, KeyPressEventArgs e)
-               {
-                       base.onKeyPress (sender, e);
+        public override void onKeyDown (object sender, KeyEventArgs e) {
+            Key key = e.Key;
+            TextSpan selection = Selection;
+            switch (key) {
+            case Key.Backspace:
+                if (selection.Length == 0) {
+                    if (selection.Start == 0)
+                        return;
+                    update (new TextChange (selection.Start - 1, 1, ""));
+                } else
+                    update (new TextChange (selection.Start, selection.Length, ""));
+                break;
+            case Key.Delete:
+                if (selection.Length == 0) {
+                    if (selection.Start == Text.Length)
+                        return;
+                    update (new TextChange (selection.Start, 1, ""));
+                } else {
+                    if (IFace.Shift)
+                        IFace.Clipboard = Text.AsSpan (selection.Start, selection.End).ToString ();
+                    update (new TextChange (selection.Start, selection.Length, ""));
+                }
+                break;
+            case Key.Insert:
+                if (IFace.Shift)
+                    update (new TextChange (selection.Start, selection.Length, IFace.Clipboard));
+                else if (IFace.Ctrl && !selection.IsEmpty)
+                    IFace.Clipboard = Text.AsSpan (selection.Start, selection.End).ToString ();
+                break;
+            case Key.KeypadEnter:
+            case Key.Enter:
+                if (Multiline)
+                    update (new TextChange (selection.Start, selection.Length, "\n"));
+                else
+                    OnValidate (this, new ValidateEventArgs(_text));
+                break;
+            case Key.Escape:
+                selectionStart = null;
+                currentLoc = lines.GetLocation (selection.Start);
+                RegisterForRedraw ();
+                break;
+            case Key.Tab:
+                update (new TextChange (selection.Start, selection.Length, "\t"));
+                break;
+            default:
+                base.onKeyDown (sender, e);
+                break;
+            }
+            e.Handled = true;
+        }
+        public override void onKeyPress (object sender, KeyPressEventArgs e) {
+            base.onKeyPress (sender, e);
 
-                       TextSpan selection = Selection;
-                       update (new TextChange (selection.Start, selection.Length, e.KeyChar.ToString ()));
-                       
-                       /*Insert (e.KeyChar.ToString());
+            TextSpan selection = Selection;
+            update (new TextChange (selection.Start, selection.Length, e.KeyChar.ToString ()));
+
+            /*Insert (e.KeyChar.ToString());
 
                        SelRelease = -1;
                        SelBegin = new Point(CurrentColumn, SelBegin.Y);
 
                        RegisterForGraphicUpdate();*/
-               }
+        }
         #endregion
 
-               void update(TextChange change) {
-                       Span<char> tmp = stackalloc char[Text.Length + (change.ChangedText.Length - change.Length)];
-                       ReadOnlySpan<char> src = Text.AsSpan ();                        
-                       src.Slice (0, change.Start).CopyTo (tmp);
-                       change.ChangedText.AsSpan ().CopyTo (tmp.Slice (change.Start));
-                       src.Slice (change.End).CopyTo (tmp.Slice (change.Start + change.ChangedText.Length));
-                       Text = tmp.ToString ();
-                       
-                       selectionStart = null;
-                       currentLoc = lines.GetLocation (change.Start + change.ChangedText.Length);
-               }
-       } 
+        void update (TextChange change) {
+            Span<char> tmp = stackalloc char[Text.Length + (change.ChangedText.Length - change.Length)];
+            ReadOnlySpan<char> src = Text.AsSpan ();
+            src.Slice (0, change.Start).CopyTo (tmp);
+            change.ChangedText.AsSpan ().CopyTo (tmp.Slice (change.Start));
+            src.Slice (change.End).CopyTo (tmp.Slice (change.Start + change.ChangedText.Length));
+
+            _text = tmp.ToString ();
+
+            getLines ();
+
+            textMeasureIsUpToDate = false;
+            NotifyValueChanged ("Text", Text);
+            OnTextChanged (this, new TextChangeEventArgs (change));
+
+            selectionStart = null;
+            currentLoc = lines.GetLocation (change.Start + change.ChangedText.Length);
+
+            RegisterForGraphicUpdate ();
+        }
+    }
 }
index 8a844ed06ac478979192ec8ea0b36488f1b4abba..92711e2793b6ec6dbab602999849ad1f8b902924 100644 (file)
@@ -2044,15 +2044,11 @@ namespace Crow
                #endregion
 
                protected virtual void onFocused(object sender, EventArgs e){
-                       #if DEBUG_FOCUS
-                       Debug.WriteLine("Focused => " + this.ToString());
-                       #endif
+                       DbgLogger.AddEvent (DbgEvtType.FocusedWidget, this);
                        Focused.Raise (this, e);
                }
                protected virtual void onUnfocused(object sender, EventArgs e){
-                       #if DEBUG_FOCUS
-                       Debug.WriteLine("UnFocused => " + this.ToString());
-                       #endif
+                       DbgLogger.AddEvent (DbgEvtType.UnfocusedWidget, this);
                        Unfocused.Raise (this, e);
                }
 
index a05750a6e59ad275a56576322b5394b890ba262f..c9936924d91a4532e7b82061bde7773050482f6e 100644 (file)
@@ -7,7 +7,7 @@
                <Authors>Jean-Philippe Bruyère</Authors>           
                <LangVersion>7.2</LangVersion>
                
-               <CrowVersion>0.9.2</CrowVersion>
+               <CrowVersion>0.9.3</CrowVersion>
                <CrowPackageVersion>$(CrowVersion)-beta</CrowPackageVersion>
                <CrowStbSharp>true</CrowStbSharp>
        </PropertyGroup>