mirror of https://github.com/buggins/dlangui.git
dsfml support - mouse events and window resize
This commit is contained in:
parent
27d07cc6d5
commit
460f02cd57
|
@ -53,7 +53,7 @@
|
|||
<cccmd>$(CC) -c</cccmd>
|
||||
<ccTransOpt>1</ccTransOpt>
|
||||
<program>$(DMDInstallDir)windows\bin\dmd.exe</program>
|
||||
<imppath>3rdparty ../DerelictGL3/source ../DerelictUtil/source ../DerelictFT/source ../de_image/source/interfaces ../de_image/source/png $(SolutionDir)/../dlib $(SolutionDir)/../gl3n</imppath>
|
||||
<imppath>3rdparty ../DerelictGL3/source ../DerelictUtil/source ../DerelictFT/source ../de_image/source/interfaces ../de_image/source/png $(SolutionDir)/../dlib $(SolutionDir)/../gl3n $(SolutionDir)/../DSFML/src</imppath>
|
||||
<fileImppath>$(SolutionDir)/views $(SolutionDir)/views/res $(SolutionDir)/views/res/i18n $(SolutionDir)/views/res/mdpi $(SolutionDir)/views/res/hdpi</fileImppath>
|
||||
<outdir>$(ConfigurationName)</outdir>
|
||||
<objdir>$(OutDir)</objdir>
|
||||
|
@ -72,7 +72,7 @@
|
|||
<debuglevel>0</debuglevel>
|
||||
<debugids>DebugFocus FontResources</debugids>
|
||||
<versionlevel>0</versionlevel>
|
||||
<versionids>EmbedStandardResources Unicode USE_FREETYPE USE_OPENGL</versionids>
|
||||
<versionids>EmbedStandardResources Unicode USE_FREETYPE USE_OPENGL USE_DSFML</versionids>
|
||||
<dump_source>0</dump_source>
|
||||
<mapverbosity>0</mapverbosity>
|
||||
<createImplib>1</createImplib>
|
||||
|
@ -403,6 +403,9 @@
|
|||
<Folder name="common">
|
||||
<File path="src\dlangui\platforms\common\platform.d" />
|
||||
</Folder>
|
||||
<Folder name="dsfml">
|
||||
<File path="src\dlangui\platforms\dsfml\dsfmlapp.d" />
|
||||
</Folder>
|
||||
<Folder name="sdl">
|
||||
<File path="src\dlangui\platforms\sdl\sdlapp.d" />
|
||||
</Folder>
|
||||
|
|
|
@ -482,6 +482,17 @@ enum MouseButton : ubyte {
|
|||
XButton2 = MouseFlag.XButton2, // additional button 2
|
||||
}
|
||||
|
||||
/// converts MouseButton to MouseFlag
|
||||
ushort mouseButtonToFlag(MouseButton btn) {
|
||||
switch(btn) with (MouseButton) {
|
||||
case Left: return MouseFlag.LButton;
|
||||
case Right: return MouseFlag.RButton;
|
||||
case Middle: return MouseFlag.MButton;
|
||||
case XButton1: return MouseFlag.XButton1;
|
||||
case XButton2: return MouseFlag.XButton2;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// Mouse button state details for MouseEvent
|
||||
struct ButtonDetails {
|
||||
|
|
|
@ -102,6 +102,67 @@ class DSFMLWindow : dlangui.platforms.common.platform.Window {
|
|||
buf.afterDrawing();
|
||||
}
|
||||
|
||||
private MouseButton translateButton(uint btn) {
|
||||
switch(btn) {
|
||||
default:
|
||||
case Mouse.Button.Left:
|
||||
return MouseButton.Left;
|
||||
case Mouse.Button.Right:
|
||||
return MouseButton.Right;
|
||||
case Mouse.Button.Middle:
|
||||
return MouseButton.Middle;
|
||||
case Mouse.Button.XButton1:
|
||||
return MouseButton.XButton1;
|
||||
case Mouse.Button.XButton2:
|
||||
return MouseButton.XButton2;
|
||||
}
|
||||
}
|
||||
|
||||
private ushort mouseFlags;
|
||||
|
||||
bool handleEvent(ref Event event) {
|
||||
switch (event.type) {
|
||||
case(event.EventType.Closed): {
|
||||
break;
|
||||
}
|
||||
case(event.EventType.Resized): {
|
||||
onResize(event.size.width, event.size.height);
|
||||
break;
|
||||
}
|
||||
case(event.EventType.MouseButtonPressed): {
|
||||
auto btn = translateButton(event.mouseButton.button);
|
||||
mouseFlags |= mouseButtonToFlag(btn);
|
||||
MouseEvent ev = new MouseEvent(MouseAction.ButtonDown, btn, mouseFlags, cast(short)event.mouseButton.x, cast(short)event.mouseButton.y);
|
||||
dispatchMouseEvent(ev);
|
||||
break;
|
||||
}
|
||||
case(event.EventType.MouseButtonReleased): {
|
||||
auto btn = translateButton(event.mouseButton.button);
|
||||
mouseFlags &= ~mouseButtonToFlag(btn);
|
||||
MouseEvent ev = new MouseEvent(MouseAction.ButtonUp, btn, mouseFlags, cast(short)event.mouseButton.x, cast(short)event.mouseButton.y);
|
||||
dispatchMouseEvent(ev);
|
||||
break;
|
||||
}
|
||||
case(event.EventType.MouseMoved): {
|
||||
MouseEvent ev = new MouseEvent(MouseAction.Move, MouseButton.None, mouseFlags, cast(short)event.mouseMove.x, cast(short)event.mouseMove.y);
|
||||
dispatchMouseEvent(ev);
|
||||
break;
|
||||
}
|
||||
case(event.EventType.MouseEntered): {
|
||||
break;
|
||||
}
|
||||
case(event.EventType.MouseLeft): {
|
||||
break;
|
||||
}
|
||||
case(event.EventType.MouseWheelMoved): {
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue