76 lines
2.1 KiB
C++
76 lines
2.1 KiB
C++
|
|
#include "WindowMessageDispatchHandlers.h"
|
||
|
|
|
||
|
|
#include "Platform/Win32/EditorWindow.h"
|
||
|
|
#include "WindowMessageHost.h"
|
||
|
|
|
||
|
|
namespace XCEngine::UI::Editor::Host {
|
||
|
|
|
||
|
|
namespace {
|
||
|
|
|
||
|
|
constexpr UINT kMessageNcUaDrawCaption = 0x00AEu;
|
||
|
|
constexpr UINT kMessageNcUaDrawFrame = 0x00AFu;
|
||
|
|
|
||
|
|
} // namespace
|
||
|
|
|
||
|
|
bool TryDispatchWindowChromeMessage(
|
||
|
|
const WindowMessageDispatchContext& context,
|
||
|
|
UINT message,
|
||
|
|
WPARAM wParam,
|
||
|
|
LPARAM lParam,
|
||
|
|
LRESULT& outResult) {
|
||
|
|
switch (message) {
|
||
|
|
case WM_GETMINMAXINFO:
|
||
|
|
if (context.window.IsBorderlessWindowEnabled() &&
|
||
|
|
context.window.HandleBorderlessWindowGetMinMaxInfo(lParam)) {
|
||
|
|
outResult = 0;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
case WM_NCCALCSIZE:
|
||
|
|
if (context.window.IsBorderlessWindowEnabled()) {
|
||
|
|
outResult = context.window.HandleBorderlessWindowNcCalcSize(wParam, lParam);
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
case WM_NCACTIVATE:
|
||
|
|
if (context.window.IsBorderlessWindowEnabled()) {
|
||
|
|
outResult = TRUE;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
case WM_NCHITTEST:
|
||
|
|
if (context.window.IsBorderlessWindowEnabled()) {
|
||
|
|
outResult = HTCLIENT;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
case WM_NCPAINT:
|
||
|
|
case kMessageNcUaDrawCaption:
|
||
|
|
case kMessageNcUaDrawFrame:
|
||
|
|
if (context.window.IsBorderlessWindowEnabled()) {
|
||
|
|
outResult = 0;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
case WM_SYSCOMMAND:
|
||
|
|
if (context.window.HandleBorderlessWindowSystemCommand(
|
||
|
|
context.windowHost.GetEditorContext(),
|
||
|
|
context.windowHost.IsGlobalTabDragActive(),
|
||
|
|
wParam)) {
|
||
|
|
outResult = 0;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
case WM_SETCURSOR:
|
||
|
|
if (LOWORD(lParam) == HTCLIENT && context.window.ApplyCurrentCursor()) {
|
||
|
|
outResult = TRUE;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
default:
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
} // namespace XCEngine::UI::Editor::Host
|