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

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBret Johnson <bret.johnson@microsoft.com>2021-09-29 23:34:32 +0300
committerBret Johnson <bret.johnson@microsoft.com>2021-09-29 23:34:32 +0300
commite797956459dd56c6cfedc29f0b780e4748e98600 (patch)
tree1e3d139617cf5024a91e3273d03966fc96b0dabf
parent7e2eab6274aba48045db578136eef292b17216b9 (diff)
Support setting Cocoa PanedView divider position
-rw-r--r--Xwt.XamMac/Xwt.Mac/PanedBackend.cs53
1 files changed, 51 insertions, 2 deletions
diff --git a/Xwt.XamMac/Xwt.Mac/PanedBackend.cs b/Xwt.XamMac/Xwt.Mac/PanedBackend.cs
index 02624533..fb5a2a8b 100644
--- a/Xwt.XamMac/Xwt.Mac/PanedBackend.cs
+++ b/Xwt.XamMac/Xwt.Mac/PanedBackend.cs
@@ -24,7 +24,9 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+using System;
using AppKit;
+using CoreGraphics;
using Foundation;
using Xwt.Backends;
@@ -35,7 +37,8 @@ namespace Xwt.Mac
SplitViewDelegate viewDelegate;
NSView view1;
NSView view2;
-
+ double position;
+
class SplitViewDelegate: NSSplitViewDelegate
{
public PanedBackend PanedBackend;
@@ -120,9 +123,12 @@ namespace Xwt.Mac
public double Position {
get {
- return 0;
+ return position;
}
set {
+ ((CustomSplitView)Widget)?.SetDividerPosition ((nfloat) position);
+ position = value;
+ this.DidResizeSubviews();
}
}
#endregion
@@ -130,6 +136,9 @@ namespace Xwt.Mac
class CustomSplitView: NSSplitView, IViewObject
{
+ nfloat delayedSetDividerPosition = -1;
+ ViewBackend backend;
+
public NSView View {
get {
return this;
@@ -137,6 +146,46 @@ namespace Xwt.Mac
}
public ViewBackend Backend { get; set; }
+#if NOTNEEDED
+ public ViewBackend Backend {
+ get {
+ return backend;
+ }
+ set {
+ if (value != null) {
+ backend = value;
+
+ if (Frame.Width == 0)
+ needsDividerSet = true;
+ else
+ SetDividerPosition();
+ }
+ }
+ }
+#endif
+
+ public override CGRect Frame
+ {
+ get {
+ return base.Frame;
+ }
+
+ set {
+ base.Frame = value;
+ if (delayedSetDividerPosition != -1 && Frame.Width != 0) {
+ SetPositionOfDivider(delayedSetDividerPosition, 0);
+ delayedSetDividerPosition = -1;
+ }
+ }
+ }
+
+ public void SetDividerPosition(nfloat position)
+ {
+ if (Frame.Width == 0)
+ delayedSetDividerPosition = position;
+ else
+ SetPositionOfDivider(position, 0);
+ }
}
}