Navigation Menu

Skip to content

Commit

Permalink
First shot (not even compiled) at Windows hit-testing support.
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed May 29, 2014
1 parent 661548c commit 89ad793
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/video/windows/SDL_windowsevents.c
Expand Up @@ -865,6 +865,21 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
return 0;
}
break;

case WM_NCHITTEST:
{
SDL_Window *window = data->window;
if (window->hit_test) {
const SDL_Point point = { (int) LOWORD(lParam), (int) HIWORD(lParam) };
const SDL_HitTestResult rc = window->hit_test(window, &point, window->hit_test_data);
if (rc == SDL_HITTEST_DRAGGABLE) {
return HTCAPTION;
}
// if we didn't return, this will call DefWindowProc below.
}
}
break;

}

/* If there's a window proc, assume it's going to handle messages */
Expand Down
1 change: 1 addition & 0 deletions src/video/windows/SDL_windowsvideo.c
Expand Up @@ -121,6 +121,7 @@ WIN_CreateDevice(int devindex)
device->UpdateWindowFramebuffer = WIN_UpdateWindowFramebuffer;
device->DestroyWindowFramebuffer = WIN_DestroyWindowFramebuffer;
device->OnWindowEnter = WIN_OnWindowEnter;
device->SetWindowHitTest = WIN_SetWindowHitTest;

device->shape_driver.CreateShaper = Win32_CreateShaper;
device->shape_driver.SetWindowShape = Win32_SetWindowShape;
Expand Down
6 changes: 6 additions & 0 deletions src/video/windows/SDL_windowswindow.c
Expand Up @@ -782,6 +782,12 @@ WIN_UpdateClipCursor(SDL_Window *window)
}
}

int
WIN_SetWindowHitTest(SDL_Window *window, SDL_bool enabled)
{
return 0; /* just succeed, the real work is done elsewhere. */
}

#endif /* SDL_VIDEO_DRIVER_WINDOWS */

/* vi: set ts=4 sw=4 expandtab: */
1 change: 1 addition & 0 deletions src/video/windows/SDL_windowswindow.h
Expand Up @@ -68,6 +68,7 @@ extern SDL_bool WIN_GetWindowWMInfo(_THIS, SDL_Window * window,
struct SDL_SysWMinfo *info);
extern void WIN_OnWindowEnter(_THIS, SDL_Window * window);
extern void WIN_UpdateClipCursor(SDL_Window *window);
extern int WIN_SetWindowHitTest(SDL_Window *window, SDL_bool enabled);

#endif /* _SDL_windowswindow_h */

Expand Down

0 comments on commit 89ad793

Please sign in to comment.