mirror of
https://github.com/reactos/reactos.git
synced 2025-06-03 00:10:39 +00:00
Add hit-testing for caption buttons.
svn path=/trunk/; revision=25443
This commit is contained in:
parent
1b7e5efafd
commit
088891d47e
1 changed files with 30 additions and 2 deletions
|
@ -3,7 +3,7 @@
|
|||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: lib/cpl/desk/preview.c
|
||||
* PURPOSE: Draws the preview control
|
||||
* COPYRIGHT: Copyright 2006 Eric Kohl
|
||||
* COPYRIGHT: Copyright 2006, 2007 Eric Kohl
|
||||
*/
|
||||
|
||||
#include "desk.h"
|
||||
|
@ -37,9 +37,11 @@ typedef struct _PREVIEW_DATA
|
|||
RECT rcDesktop;
|
||||
RECT rcInactiveFrame;
|
||||
RECT rcInactiveCaption;
|
||||
RECT rcInactiveCaptionButtons;
|
||||
|
||||
RECT rcActiveFrame;
|
||||
RECT rcActiveCaption;
|
||||
RECT rcActiveCaptionButtons;
|
||||
RECT rcActiveMenuBar;
|
||||
RECT rcSelectedMenuItem;
|
||||
RECT rcActiveClient;
|
||||
|
@ -47,6 +49,7 @@ typedef struct _PREVIEW_DATA
|
|||
|
||||
RECT rcDialogFrame;
|
||||
RECT rcDialogCaption;
|
||||
RECT rcDialogCaptionButtons;
|
||||
RECT rcDialogClient;
|
||||
|
||||
RECT rcDialogButton;
|
||||
|
@ -215,6 +218,12 @@ OnSize(INT cx, INT cy, PPREVIEW_DATA pPreviewData)
|
|||
pPreviewData->rcInactiveCaption.right = pPreviewData->rcInactiveFrame.right - pPreviewData->cxEdge - 1/*3*/ - 1;
|
||||
pPreviewData->rcInactiveCaption.bottom = pPreviewData->rcInactiveFrame.top + pPreviewData->cyCaption /*20*/ + 2;
|
||||
|
||||
/* Calculate the inactive caption buttons rectangle */
|
||||
pPreviewData->rcInactiveCaptionButtons.left = pPreviewData->rcInactiveCaption.right - 2 - 2 - 3 * 16;
|
||||
pPreviewData->rcInactiveCaptionButtons.top = pPreviewData->rcInactiveCaption.top + 2;
|
||||
pPreviewData->rcInactiveCaptionButtons.right = pPreviewData->rcInactiveCaption.right - 2;
|
||||
pPreviewData->rcInactiveCaptionButtons.bottom = pPreviewData->rcInactiveCaption.bottom - 2;
|
||||
|
||||
/* Calculate the active window rectangle */
|
||||
pPreviewData->rcActiveFrame.left = pPreviewData->rcInactiveFrame.left + 3 + 1;
|
||||
pPreviewData->rcActiveFrame.top = pPreviewData->rcInactiveCaption.bottom + 1;
|
||||
|
@ -227,6 +236,12 @@ OnSize(INT cx, INT cy, PPREVIEW_DATA pPreviewData)
|
|||
pPreviewData->rcActiveCaption.right = pPreviewData->rcActiveFrame.right - 3 - 1;
|
||||
pPreviewData->rcActiveCaption.bottom = pPreviewData->rcActiveFrame.top + pPreviewData->cyCaption/*20*/ + 2;
|
||||
|
||||
/* Calculate the active caption buttons rectangle */
|
||||
pPreviewData->rcActiveCaptionButtons.left = pPreviewData->rcActiveCaption.right - 2 - 2 - 3 * 16;
|
||||
pPreviewData->rcActiveCaptionButtons.top = pPreviewData->rcActiveCaption.top + 2;
|
||||
pPreviewData->rcActiveCaptionButtons.right = pPreviewData->rcActiveCaption.right - 2;
|
||||
pPreviewData->rcActiveCaptionButtons.bottom = pPreviewData->rcActiveCaption.bottom - 2;
|
||||
|
||||
/* Calculate the active menu bar rectangle */
|
||||
pPreviewData->rcActiveMenuBar.left = pPreviewData->rcActiveFrame.left + 3 + 1;
|
||||
pPreviewData->rcActiveMenuBar.top = pPreviewData->rcActiveCaption.bottom + 1;
|
||||
|
@ -258,6 +273,12 @@ OnSize(INT cx, INT cy, PPREVIEW_DATA pPreviewData)
|
|||
pPreviewData->rcDialogCaption.right = pPreviewData->rcDialogFrame.right - 3;
|
||||
pPreviewData->rcDialogCaption.bottom = pPreviewData->rcDialogFrame.top + 20 + 1;
|
||||
|
||||
/* Calculate the inactive caption buttons rectangle */
|
||||
pPreviewData->rcDialogCaptionButtons.left = pPreviewData->rcDialogCaption.right - 2 - 16;
|
||||
pPreviewData->rcDialogCaptionButtons.top = pPreviewData->rcDialogCaption.top + 2;
|
||||
pPreviewData->rcDialogCaptionButtons.right = pPreviewData->rcDialogCaption.right - 2;
|
||||
pPreviewData->rcDialogCaptionButtons.bottom = pPreviewData->rcDialogCaption.bottom - 2;
|
||||
|
||||
/* Calculate the dialog client rectangle */
|
||||
pPreviewData->rcDialogClient.left = pPreviewData->rcDialogFrame.left + 3;
|
||||
pPreviewData->rcDialogClient.top = pPreviewData->rcDialogCaption.bottom + 1;
|
||||
|
@ -368,6 +389,8 @@ OnLButtonDown(HWND hwnd, int xPos, int yPos, PPREVIEW_DATA pPreviewData)
|
|||
if (PtInRect(&pPreviewData->rcInactiveCaption, pt))
|
||||
type = IDX_INACTIVE_CAPTION;
|
||||
|
||||
if (PtInRect(&pPreviewData->rcInactiveCaptionButtons, pt))
|
||||
type = IDX_CAPTION_BUTTON;
|
||||
|
||||
if (PtInRect(&pPreviewData->rcActiveFrame, pt))
|
||||
type = IDX_ACTIVE_BORDER;
|
||||
|
@ -375,6 +398,9 @@ OnLButtonDown(HWND hwnd, int xPos, int yPos, PPREVIEW_DATA pPreviewData)
|
|||
if (PtInRect(&pPreviewData->rcActiveCaption, pt))
|
||||
type = IDX_ACTIVE_CAPTION;
|
||||
|
||||
if (PtInRect(&pPreviewData->rcActiveCaptionButtons, pt))
|
||||
type = IDX_CAPTION_BUTTON;
|
||||
|
||||
if (PtInRect(&pPreviewData->rcActiveMenuBar, pt))
|
||||
type = IDX_MENU;
|
||||
|
||||
|
@ -387,13 +413,15 @@ OnLButtonDown(HWND hwnd, int xPos, int yPos, PPREVIEW_DATA pPreviewData)
|
|||
if (PtInRect(&pPreviewData->rcActiveScroll, pt))
|
||||
type = IDX_SCROLLBAR;
|
||||
|
||||
|
||||
if (PtInRect(&pPreviewData->rcDialogFrame, pt))
|
||||
type = IDX_DIALOG;
|
||||
|
||||
if (PtInRect(&pPreviewData->rcDialogCaption, pt))
|
||||
type = IDX_ACTIVE_CAPTION;
|
||||
|
||||
if (PtInRect(&pPreviewData->rcDialogCaptionButtons, pt))
|
||||
type = IDX_CAPTION_BUTTON;
|
||||
|
||||
if (PtInRect(&pPreviewData->rcDialogButton, pt))
|
||||
type = IDX_3D_OBJECTS;
|
||||
|
||||
|
|
Loading…
Reference in a new issue