diff options
Diffstat (limited to 'Xwt.WPF/Xwt.WPFBackend/WidgetBackend.cs')
-rw-r--r-- | Xwt.WPF/Xwt.WPFBackend/WidgetBackend.cs | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/Xwt.WPF/Xwt.WPFBackend/WidgetBackend.cs b/Xwt.WPF/Xwt.WPFBackend/WidgetBackend.cs index 3033dea5..39f28bf9 100644 --- a/Xwt.WPF/Xwt.WPFBackend/WidgetBackend.cs +++ b/Xwt.WPF/Xwt.WPFBackend/WidgetBackend.cs @@ -439,7 +439,7 @@ namespace Xwt.WPFBackend Widget.Cursor = Cursors.Arrow;
else if (cursor == CursorType.Crosshair)
Widget.Cursor = Cursors.Cross;
- else if (cursor == CursorType.Hand)
+ else if (cursor == CursorType.Hand || cursor == CursorType.Hand2)
Widget.Cursor = Cursors.Hand;
else if (cursor == CursorType.IBeam)
Widget.Cursor = Cursors.IBeam;
@@ -455,6 +455,10 @@ namespace Xwt.WPFBackend Widget.Cursor = Cursors.SizeWE;
else if (cursor == CursorType.ResizeLeftRight)
widget.Cursor = Cursors.SizeWE;
+ else if (cursor == CursorType.ResizeNE || cursor == CursorType.ResizeSW)
+ widget.Cursor = Cursors.SizeNESW;
+ else if (cursor == CursorType.ResizeNW || cursor == CursorType.ResizeSE)
+ widget.Cursor = Cursors.SizeNWSE;
else if (cursor == CursorType.Move)
widget.Cursor = Cursors.SizeAll;
else if (cursor == CursorType.Wait)
@@ -463,6 +467,8 @@ namespace Xwt.WPFBackend widget.Cursor = Cursors.Help;
else if (cursor == CursorType.Invisible)
widget.Cursor = Cursors.None;
+ else if (cursor == CursorType.NotAllowed)
+ widget.Cursor = Cursors.No;
else
Widget.Cursor = Cursors.Arrow;
}
@@ -645,6 +651,11 @@ namespace Xwt.WPFBackend e.Handled = true;
}
+ internal void WidgetMouseDownForDragHandler(object o, MouseButtonEventArgs e) + { + SetupDragRect(e); + } + void WidgetMouseUpHandler (object o, MouseButtonEventArgs e)
{
var args = e.ToXwtButtonArgs (Widget);
@@ -684,6 +695,11 @@ namespace Xwt.WPFBackend return Widget.GetParentWindow ();
}
+ private SW.Window GetParentOrMainWindow ()
+ {
+ return Widget.GetParentOrMainWindow ();
+ }
+
public void DragStart (DragStartData data)
{
if (data.Data == null)
@@ -692,7 +708,7 @@ namespace Xwt.WPFBackend DataObject dataObj = data.Data.ToDataObject();
if (data.ImageBackend != null) {
- AdornedWindow = GetParentWindow ();
+ AdornedWindow = GetParentOrMainWindow ();
AdornedWindow.AllowDrop = true;
var e = (UIElement)AdornedWindow.Content;
@@ -742,6 +758,7 @@ namespace Xwt.WPFBackend DragDropInfo.TargetTypes = types == null ? new TransferDataType [0] : types;
Widget.MouseUp += WidgetMouseUpForDragHandler;
Widget.MouseMove += WidgetMouseMoveForDragHandler;
+ Widget.MouseDown += WidgetMouseDownForDragHandler; }
private void SetupDragRect (MouseEventArgs e)
@@ -752,7 +769,7 @@ namespace Xwt.WPFBackend DragDropInfo.DragRect = new Rect (loc.X - width / 2, loc.Y - height / 2, width, height);
}
- void WidgetMouseUpForDragHandler (object o, EventArgs e)
+ internal void WidgetMouseUpForDragHandler (object o, EventArgs e) {
DragDropInfo.DragRect = Rect.Empty;
}
@@ -765,7 +782,7 @@ namespace Xwt.WPFBackend return;
if (DragDropInfo.DragRect.IsEmpty)
- SetupDragRect (e);
+ return; if (DragDropInfo.DragRect.Contains (e.GetPosition (Widget)))
return;
@@ -858,7 +875,7 @@ namespace Xwt.WPFBackend void WidgetDragOverHandler (object sender, System.Windows.DragEventArgs e)
{
if (Adorner != null) {
- var w = GetParentWindow ();
+ var w = GetParentOrMainWindow ();
var v = (UIElement)w.Content;
if (w != AdornedWindow) {
|