mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 20:23:34 +00:00
[DESK.CPL]
Resolution selection improvement patch by Mark Jansen: - Fix a bug that allowed only a subset of resolutions to be visible. - Update the preview on the fly when dragging the resolution slider. - Fix a bug that prevented the monitor preview from properly invalidating the preview, leaving the old preview partially visible. Needs to be included in 0.4 branch. CORE-10786 svn path=/trunk/; revision=70577
This commit is contained in:
parent
30862b5020
commit
658e9e13b3
2 changed files with 25 additions and 4 deletions
|
@ -39,6 +39,7 @@ typedef struct _MONITORSELWND
|
||||||
PMONSL_MON Monitors;
|
PMONSL_MON Monitors;
|
||||||
RECT rcExtent;
|
RECT rcExtent;
|
||||||
RECT rcMonitors;
|
RECT rcMonitors;
|
||||||
|
RECT rcOldMonitors;
|
||||||
POINT ScrollPos;
|
POINT ScrollPos;
|
||||||
SIZE Margin;
|
SIZE Margin;
|
||||||
SIZE SelectionFrame;
|
SIZE SelectionFrame;
|
||||||
|
@ -261,6 +262,14 @@ MonSelRepaint(IN PMONITORSELWND infoPtr)
|
||||||
InvalidateRect(infoPtr->hSelf,
|
InvalidateRect(infoPtr->hSelf,
|
||||||
&rc,
|
&rc,
|
||||||
TRUE);
|
TRUE);
|
||||||
|
|
||||||
|
if (!EqualRect(&infoPtr->rcMonitors, &infoPtr->rcOldMonitors) &&
|
||||||
|
infoPtr->rcOldMonitors.right != infoPtr->rcOldMonitors.left)
|
||||||
|
{
|
||||||
|
MonSelRectToScreen(infoPtr, &infoPtr->rcOldMonitors, &rc);
|
||||||
|
InvalidateRect(infoPtr->hSelf, &rc, TRUE);
|
||||||
|
infoPtr->rcOldMonitors = infoPtr->rcMonitors;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
|
@ -355,6 +364,7 @@ MonSelUpdateMonitorsInfo(IN OUT PMONITORSELWND infoPtr,
|
||||||
ScaleRectSizeFit(&rcExtSurface,
|
ScaleRectSizeFit(&rcExtSurface,
|
||||||
&rcExtDisplay);
|
&rcExtDisplay);
|
||||||
|
|
||||||
|
infoPtr->rcOldMonitors = infoPtr->rcMonitors;
|
||||||
infoPtr->rcMonitors = rcExtDisplay;
|
infoPtr->rcMonitors = rcExtDisplay;
|
||||||
|
|
||||||
/* Now that we know in which area all monitors are located,
|
/* Now that we know in which area all monitors are located,
|
||||||
|
|
|
@ -26,6 +26,8 @@ UpdateDisplay(IN HWND hwndDlg, PDATA pData, IN BOOL bUpdateThumb)
|
||||||
TCHAR Buffer[64];
|
TCHAR Buffer[64];
|
||||||
TCHAR Pixel[64];
|
TCHAR Pixel[64];
|
||||||
DWORD index;
|
DWORD index;
|
||||||
|
HWND hwndMonSel;
|
||||||
|
MONSL_MONINFO info;
|
||||||
|
|
||||||
LoadString(hApplet, IDS_PIXEL, Pixel, sizeof(Pixel) / sizeof(TCHAR));
|
LoadString(hApplet, IDS_PIXEL, Pixel, sizeof(Pixel) / sizeof(TCHAR));
|
||||||
_stprintf(Buffer, Pixel, pData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth, pData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight, Pixel);
|
_stprintf(Buffer, Pixel, pData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth, pData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight, Pixel);
|
||||||
|
@ -43,6 +45,15 @@ UpdateDisplay(IN HWND hwndDlg, PDATA pData, IN BOOL bUpdateThumb)
|
||||||
}
|
}
|
||||||
if (LoadString(hApplet, (2900 + pData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel), Buffer, sizeof(Buffer) / sizeof(TCHAR)))
|
if (LoadString(hApplet, (2900 + pData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel), Buffer, sizeof(Buffer) / sizeof(TCHAR)))
|
||||||
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_BPP, CB_SELECTSTRING, (WPARAM)-1, (LPARAM)Buffer);
|
SendDlgItemMessage(hwndDlg, IDC_SETTINGS_BPP, CB_SELECTSTRING, (WPARAM)-1, (LPARAM)Buffer);
|
||||||
|
|
||||||
|
hwndMonSel = GetDlgItem(hwndDlg, IDC_SETTINGS_MONSEL);
|
||||||
|
index = (INT)SendMessage(hwndMonSel, MSLM_GETCURSEL, 0, 0);
|
||||||
|
if (index != (DWORD)-1 && SendMessage(hwndMonSel, MSLM_GETMONITORINFO, index, (LPARAM)&info))
|
||||||
|
{
|
||||||
|
info.Size.cx = pData->CurrentDisplayDevice->CurrentSettings->dmPelsWidth;
|
||||||
|
info.Size.cy = pData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight;
|
||||||
|
SendMessage(hwndMonSel, MSLM_SETMONITORINFO, index, (LPARAM)&info);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static PSETTINGS_ENTRY
|
static PSETTINGS_ENTRY
|
||||||
|
@ -165,8 +176,8 @@ AddDisplayDevice(IN PDATA pData, IN const DISPLAY_DEVICE *DisplayDevice)
|
||||||
for (Current = newEntry->Settings; Current != NULL; Current = Current->Flink)
|
for (Current = newEntry->Settings; Current != NULL; Current = Current->Flink)
|
||||||
{
|
{
|
||||||
if (Current->Flink != NULL &&
|
if (Current->Flink != NULL &&
|
||||||
((Current->dmPelsWidth != Current->Flink->dmPelsWidth) &&
|
((Current->dmPelsWidth != Current->Flink->dmPelsWidth) ||
|
||||||
(Current->dmPelsHeight != Current->Flink->dmPelsHeight)))
|
(Current->dmPelsHeight != Current->Flink->dmPelsHeight)))
|
||||||
{
|
{
|
||||||
ResolutionsCount++;
|
ResolutionsCount++;
|
||||||
}
|
}
|
||||||
|
@ -182,8 +193,8 @@ AddDisplayDevice(IN PDATA pData, IN const DISPLAY_DEVICE *DisplayDevice)
|
||||||
{
|
{
|
||||||
if (Current->Flink == NULL ||
|
if (Current->Flink == NULL ||
|
||||||
(Current->Flink != NULL &&
|
(Current->Flink != NULL &&
|
||||||
((Current->dmPelsWidth != Current->Flink->dmPelsWidth) &&
|
((Current->dmPelsWidth != Current->Flink->dmPelsWidth) ||
|
||||||
(Current->dmPelsHeight != Current->Flink->dmPelsHeight))))
|
(Current->dmPelsHeight != Current->Flink->dmPelsHeight))))
|
||||||
{
|
{
|
||||||
newEntry->Resolutions[i].dmPelsWidth = Current->dmPelsWidth;
|
newEntry->Resolutions[i].dmPelsWidth = Current->dmPelsWidth;
|
||||||
newEntry->Resolutions[i].dmPelsHeight = Current->dmPelsHeight;
|
newEntry->Resolutions[i].dmPelsHeight = Current->dmPelsHeight;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue