Files
XCEngine/new_editor/app/Platform/Win32/WindowMessageDispatcherChrome.cpp

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