|
@@ -1,9 +1,12 @@
|
|
|
#include "CmPlatformWndProc.h"
|
|
#include "CmPlatformWndProc.h"
|
|
|
#include "CmRenderWindow.h"
|
|
#include "CmRenderWindow.h"
|
|
|
#include "CmApplication.h"
|
|
#include "CmApplication.h"
|
|
|
|
|
+#include "CmInput.h"
|
|
|
|
|
|
|
|
namespace CamelotFramework
|
|
namespace CamelotFramework
|
|
|
{
|
|
{
|
|
|
|
|
+ UINT32 PlatformWndProc::mMoveResizeMouseUpState = 0;
|
|
|
|
|
+
|
|
|
LRESULT CALLBACK PlatformWndProc::_win32WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
LRESULT CALLBACK PlatformWndProc::_win32WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
|
{
|
|
{
|
|
|
if (uMsg == WM_CREATE)
|
|
if (uMsg == WM_CREATE)
|
|
@@ -65,8 +68,14 @@ namespace CamelotFramework
|
|
|
return 0;
|
|
return 0;
|
|
|
break;
|
|
break;
|
|
|
case WM_ENTERSIZEMOVE:
|
|
case WM_ENTERSIZEMOVE:
|
|
|
|
|
+ mMoveResizeMouseUpState = 1;
|
|
|
break;
|
|
break;
|
|
|
case WM_EXITSIZEMOVE:
|
|
case WM_EXITSIZEMOVE:
|
|
|
|
|
+ // HACK - Windows doesn't send mouseUp event after move/resize if the cursor moved out of the original window bounds
|
|
|
|
|
+ if(mMoveResizeMouseUpState != 2)
|
|
|
|
|
+ gInput().instance().simulateButtonUp(BC_MOUSE_LEFT);
|
|
|
|
|
+
|
|
|
|
|
+ mMoveResizeMouseUpState = 0;
|
|
|
break;
|
|
break;
|
|
|
case WM_MOVE:
|
|
case WM_MOVE:
|
|
|
windowMovedOrResized(win);
|
|
windowMovedOrResized(win);
|
|
@@ -190,6 +199,13 @@ namespace CamelotFramework
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case WM_NCLBUTTONUP:
|
|
|
|
|
+ case WM_LBUTTONUP:
|
|
|
|
|
+ // Part of a hack that's done in WM_EXITSIZEMOVE (see there)
|
|
|
|
|
+ if(mMoveResizeMouseUpState = 1)
|
|
|
|
|
+ mMoveResizeMouseUpState = 2;
|
|
|
|
|
+
|
|
|
|
|
+ break;
|
|
|
case WM_NCMOUSEMOVE:
|
|
case WM_NCMOUSEMOVE:
|
|
|
case WM_MOUSEMOVE:
|
|
case WM_MOUSEMOVE:
|
|
|
{
|
|
{
|