mirror of
https://github.com/cyanfish/naps2.git
synced 2024-10-03 19:07:17 +03:00
parent
f5a5d5b2b4
commit
b99d95bc58
@ -252,26 +252,25 @@ public class GtkEtoPlatform : EtoPlatform
|
||||
{
|
||||
var native = control.ToNative();
|
||||
// Attach to the child so that the scrollbars don't steal the event from us
|
||||
var child = (native as GTK.Bin)?.Child;
|
||||
if (child == null)
|
||||
if (native is GTK.EventBox eventBox)
|
||||
{
|
||||
Log.Error("Expected scrollable to be GTK.Bin");
|
||||
base.AttachMouseWheelEvent(control, eventHandler);
|
||||
native = eventBox.Child;
|
||||
}
|
||||
else
|
||||
if (native is GTK.ScrolledWindow scrolledWindow)
|
||||
{
|
||||
child.ScrollEvent += (sender, args) =>
|
||||
{
|
||||
var ev = args.Event;
|
||||
var newArgs = new MouseEventArgs(
|
||||
MouseButtons.None,
|
||||
ev.State.ToEtoKey(),
|
||||
new PointF((float) ev.X, (float) ev.Y),
|
||||
// Negate deltaY to match WinForms
|
||||
new SizeF((float) ev.DeltaX, (float) -ev.DeltaY));
|
||||
eventHandler.Invoke(sender, newArgs);
|
||||
args.RetVal = newArgs.Handled;
|
||||
};
|
||||
native = scrolledWindow.Child;
|
||||
}
|
||||
native.ScrollEvent += (sender, args) =>
|
||||
{
|
||||
var ev = args.Event;
|
||||
var newArgs = new MouseEventArgs(
|
||||
MouseButtons.None,
|
||||
ev.State.ToEtoKey(),
|
||||
new PointF((float) ev.X, (float) ev.Y),
|
||||
// Negate deltaY to match WinForms
|
||||
new SizeF((float) ev.DeltaX, (float) -ev.DeltaY));
|
||||
eventHandler.Invoke(sender, newArgs);
|
||||
args.RetVal = newArgs.Handled;
|
||||
};
|
||||
}
|
||||
}
|
@ -286,10 +286,17 @@ public class WinFormsEtoPlatform : EtoPlatform
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotImplementedException("Only implemented for Scrollable");
|
||||
var wfControl = control.ToNative();
|
||||
wfControl.MouseWheel += (sender, e) => eventHandler(sender, e.ToEto(wfControl));
|
||||
}
|
||||
}
|
||||
|
||||
public override void AttachMouseMoveEvent(Control control, EventHandler<MouseEventArgs> eventHandler)
|
||||
{
|
||||
var wfControl = control.ToNative();
|
||||
wfControl.MouseMove += (sender, e) => eventHandler(sender, e.ToEto(wfControl));
|
||||
}
|
||||
|
||||
private class ScrollableWithMouseWheelEvents : ScrollableHandler.CustomScrollable
|
||||
{
|
||||
private readonly EventHandler<MouseEventArgs> _mouseWheelHandler;
|
||||
|
@ -140,4 +140,9 @@ public abstract class EtoPlatform
|
||||
{
|
||||
control.MouseWheel += eventHandler;
|
||||
}
|
||||
|
||||
public virtual void AttachMouseMoveEvent(Control control, EventHandler<MouseEventArgs> eventHandler)
|
||||
{
|
||||
control.MouseMove += eventHandler;
|
||||
}
|
||||
}
|
@ -86,8 +86,8 @@ public abstract class DesktopForm : EtoFormBase
|
||||
// TODO: Fix Eto so that we don't need to set an item here (otherwise the first time we right click nothing happens)
|
||||
_contextMenu.Items.Add(Commands.SelectAll);
|
||||
_contextMenu.Opening += OpeningContextMenu;
|
||||
_listView.Control.MouseWheel += ListViewMouseWheel;
|
||||
_listView.Control.MouseMove += ListViewMouseMove;
|
||||
EtoPlatform.Current.AttachMouseWheelEvent(_listView.Control, ListViewMouseWheel);
|
||||
EtoPlatform.Current.AttachMouseMoveEvent(_listView.Control, ListViewMouseMove);
|
||||
EtoPlatform.Current.HandleKeyDown(this, _keyboardShortcuts.Perform);
|
||||
EtoPlatform.Current.HandleKeyDown(_listView.Control, _keyboardShortcuts.Perform);
|
||||
|
||||
@ -526,7 +526,8 @@ public abstract class DesktopForm : EtoFormBase
|
||||
{
|
||||
if (e.Modifiers.HasFlag(Keys.Control))
|
||||
{
|
||||
_thumbnailController.StepSize(e.Delta.Height); // / (double) SystemInformation.MouseWheelScrollDelta
|
||||
_thumbnailController.StepSize(e.Delta.Height);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user