Move drop file event to Window, handle mouse capture automatically
This commit is contained in:
@@ -28,8 +28,6 @@ namespace lime {
|
||||
printf ("Could not initialize SDL: %s.\n", SDL_GetError ());
|
||||
|
||||
}
|
||||
|
||||
SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
|
||||
|
||||
SDL_LogSetPriority (SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN);
|
||||
|
||||
@@ -48,10 +46,10 @@ namespace lime {
|
||||
nextUpdate = 0;
|
||||
|
||||
ApplicationEvent applicationEvent;
|
||||
DropEvent dropEvent;
|
||||
GamepadEvent gamepadEvent;
|
||||
JoystickEvent joystickEvent;
|
||||
KeyEvent keyEvent;
|
||||
DropEvent dropEvent;
|
||||
MouseEvent mouseEvent;
|
||||
RenderEvent renderEvent;
|
||||
SensorEvent sensorEvent;
|
||||
@@ -59,6 +57,7 @@ namespace lime {
|
||||
TouchEvent touchEvent;
|
||||
WindowEvent windowEvent;
|
||||
|
||||
SDL_EventState (SDL_DROPFILE, SDL_ENABLE);
|
||||
SDLJoystick::Init ();
|
||||
|
||||
#ifdef HX_MACOS
|
||||
@@ -151,6 +150,11 @@ namespace lime {
|
||||
ProcessGamepadEvent (event);
|
||||
break;
|
||||
|
||||
case SDL_DROPFILE:
|
||||
|
||||
ProcessDropEvent (event);
|
||||
break;
|
||||
|
||||
case SDL_FINGERMOTION:
|
||||
case SDL_FINGERDOWN:
|
||||
case SDL_FINGERUP:
|
||||
@@ -204,11 +208,6 @@ namespace lime {
|
||||
ProcessTextEvent (event);
|
||||
break;
|
||||
|
||||
case SDL_DROPFILE:
|
||||
|
||||
ProcessDropEvent (event);
|
||||
break;
|
||||
|
||||
case SDL_WINDOWEVENT:
|
||||
|
||||
switch (event->window.event) {
|
||||
@@ -265,6 +264,21 @@ namespace lime {
|
||||
}
|
||||
|
||||
|
||||
void SDLApplication::ProcessDropEvent (SDL_Event* event) {
|
||||
|
||||
if (DropEvent::callback) {
|
||||
|
||||
dropEvent.type = DROP_FILE;
|
||||
dropEvent.file = event->drop.file;
|
||||
|
||||
DropEvent::Dispatch (&dropEvent);
|
||||
SDL_free (dropEvent.file);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void SDLApplication::ProcessGamepadEvent (SDL_Event* event) {
|
||||
|
||||
if (GamepadEvent::callback) {
|
||||
@@ -462,17 +476,6 @@ namespace lime {
|
||||
|
||||
}
|
||||
|
||||
void SDLApplication::ProcessDropEvent (SDL_Event* event)
|
||||
{
|
||||
if (DropEvent::callback)
|
||||
{
|
||||
dropEvent.type = DROP_FILE;
|
||||
dropEvent.file = event->drop.file;
|
||||
|
||||
DropEvent::Dispatch(&dropEvent);
|
||||
SDL_free(dropEvent.file);
|
||||
}
|
||||
}
|
||||
|
||||
void SDLApplication::ProcessKeyEvent (SDL_Event* event) {
|
||||
|
||||
@@ -513,6 +516,8 @@ namespace lime {
|
||||
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
|
||||
SDL_CaptureMouse (SDL_TRUE);
|
||||
|
||||
mouseEvent.type = MOUSE_DOWN;
|
||||
mouseEvent.button = event->button.button - 1;
|
||||
mouseEvent.x = event->button.x;
|
||||
@@ -521,6 +526,8 @@ namespace lime {
|
||||
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
|
||||
SDL_CaptureMouse (SDL_FALSE);
|
||||
|
||||
mouseEvent.type = MOUSE_UP;
|
||||
mouseEvent.button = event->button.button - 1;
|
||||
mouseEvent.x = event->button.x;
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
#include <app/ApplicationEvent.h>
|
||||
#include <graphics/RenderEvent.h>
|
||||
#include <system/SensorEvent.h>
|
||||
#include <ui/DropEvent.h>
|
||||
#include <ui/GamepadEvent.h>
|
||||
#include <ui/JoystickEvent.h>
|
||||
#include <ui/KeyEvent.h>
|
||||
#include <ui/MouseEvent.h>
|
||||
#include <ui/DropEvent.h>
|
||||
#include <ui/TextEvent.h>
|
||||
#include <ui/TouchEvent.h>
|
||||
#include <ui/WindowEvent.h>
|
||||
@@ -39,10 +39,10 @@ namespace lime {
|
||||
private:
|
||||
|
||||
void HandleEvent (SDL_Event* event);
|
||||
void ProcessDropEvent (SDL_Event* event);
|
||||
void ProcessGamepadEvent (SDL_Event* event);
|
||||
void ProcessJoystickEvent (SDL_Event* event);
|
||||
void ProcessKeyEvent (SDL_Event* event);
|
||||
void ProcessDropEvent (SDL_Event* event);
|
||||
void ProcessMouseEvent (SDL_Event* event);
|
||||
void ProcessSensorEvent (SDL_Event* event);
|
||||
void ProcessTextEvent (SDL_Event* event);
|
||||
@@ -59,10 +59,10 @@ namespace lime {
|
||||
ApplicationEvent applicationEvent;
|
||||
Uint32 currentUpdate;
|
||||
double framePeriod;
|
||||
DropEvent dropEvent;
|
||||
GamepadEvent gamepadEvent;
|
||||
JoystickEvent joystickEvent;
|
||||
KeyEvent keyEvent;
|
||||
DropEvent dropEvent;
|
||||
Uint32 lastUpdate;
|
||||
MouseEvent mouseEvent;
|
||||
double nextUpdate;
|
||||
|
||||
@@ -176,19 +176,8 @@ namespace lime {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Mouse::SetCaptureMode(bool capture)
|
||||
{
|
||||
if (capture)
|
||||
{
|
||||
SDL_CaptureMouse(SDL_TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
SDL_CaptureMouse(SDL_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Mouse::Show () {
|
||||
|
||||
SDL_ShowCursor (SDL_ENABLE);
|
||||
|
||||
@@ -324,20 +324,23 @@ namespace lime {
|
||||
|
||||
}
|
||||
|
||||
bool SDLWindow::SetMaximized (bool maximized)
|
||||
{
|
||||
if (maximized)
|
||||
{
|
||||
SDL_MaximizeWindow(sdlWindow);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
SDL_RestoreWindow(sdlWindow);
|
||||
}
|
||||
|
||||
return maximized;
|
||||
}
|
||||
|
||||
bool SDLWindow::SetMaximized (bool maximized) {
|
||||
|
||||
if (maximized) {
|
||||
|
||||
SDL_MaximizeWindow (sdlWindow);
|
||||
|
||||
} else {
|
||||
|
||||
SDL_RestoreWindow (sdlWindow);
|
||||
|
||||
}
|
||||
|
||||
return maximized;
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool SDLWindow::SetMinimized (bool minimized) {
|
||||
|
||||
|
||||
@@ -33,9 +33,9 @@ namespace lime {
|
||||
virtual void SetEnableTextEvents (bool enabled);
|
||||
virtual bool SetFullscreen (bool fullscreen);
|
||||
virtual void SetIcon (ImageBuffer *imageBuffer);
|
||||
virtual bool SetMaximized (bool maximized);
|
||||
virtual bool SetMinimized (bool minimized);
|
||||
virtual bool SetResizable (bool resizable);
|
||||
virtual bool SetMaximized (bool minimized);
|
||||
virtual const char* SetTitle (const char* title);
|
||||
|
||||
SDL_Window* sdlWindow;
|
||||
|
||||
Reference in New Issue
Block a user