mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
- improved control resizing handling
- don't fail when querying the account name length svn path=/trunk/; revision=18173
This commit is contained in:
parent
39d1d2d86c
commit
2357be7820
2 changed files with 187 additions and 184 deletions
|
@ -115,7 +115,8 @@ AddPrincipalToList(IN PSECURITY_PAGE sp,
|
|||
&SidNameUse))
|
||||
{
|
||||
LookupResult = GetLastError();
|
||||
if (LookupResult != ERROR_NONE_MAPPED)
|
||||
if (LookupResult != ERROR_NONE_MAPPED &&
|
||||
LookupResult != ERROR_INSUFFICIENT_BUFFER)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -375,7 +376,9 @@ AddPrincipalListEntry(IN PSECURITY_PAGE sp,
|
|||
li.iSubItem = 0;
|
||||
li.state = (Selected ? LVIS_SELECTED : 0);
|
||||
li.stateMask = LVIS_SELECTED;
|
||||
li.pszText = (PrincipalListItem->DisplayString != NULL ? PrincipalListItem->DisplayString : PrincipalListItem->AccountName);
|
||||
li.pszText = (PrincipalListItem->DisplayString != NULL ?
|
||||
PrincipalListItem->DisplayString :
|
||||
PrincipalListItem->AccountName);
|
||||
|
||||
switch (PrincipalListItem->SidNameUse)
|
||||
{
|
||||
|
@ -632,192 +635,192 @@ ResizeControls(IN PSECURITY_PAGE sp,
|
|||
nControls += 2;
|
||||
}
|
||||
|
||||
if (!(dwp = BeginDeferWindowPos(nControls)))
|
||||
if ((dwp = BeginDeferWindowPos(nControls)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* resize the Principal list view */
|
||||
GetWindowRect(sp->hWndPrincipalsList,
|
||||
&rcControl);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hWndPrincipalsList,
|
||||
NULL,
|
||||
0,
|
||||
0,
|
||||
cxWidth,
|
||||
rcControl.bottom - rcControl.top,
|
||||
SWP_NOMOVE | SWP_NOZORDER)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* move the Add Principal button */
|
||||
GetWindowRect(sp->hBtnAdd,
|
||||
&rcControl);
|
||||
GetWindowRect(sp->hBtnRemove,
|
||||
&rcControl2);
|
||||
btnSpacing = rcControl2.left - rcControl.right;
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(sp->hBtnAdd,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hBtnAdd,
|
||||
NULL,
|
||||
pt.x + cxWidth - (rcControl2.right - rcControl2.left) -
|
||||
(rcControl.right - rcControl.left) -
|
||||
btnSpacing - cxEdge,
|
||||
pt2.y,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE | SWP_NOZORDER)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* move the Delete Principal button */
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(sp->hBtnRemove,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hBtnRemove,
|
||||
NULL,
|
||||
pt.x + cxWidth - (rcControl2.right - rcControl2.left) - cxEdge,
|
||||
pt2.y,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE | SWP_NOZORDER)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* move the Permissions For label */
|
||||
GetWindowRect(hWndAllow,
|
||||
&rcControl);
|
||||
GetWindowRect(hWndDeny,
|
||||
&rcControl2);
|
||||
GetWindowRect(sp->hPermissionsForLabel,
|
||||
&rcControl3);
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(sp->hPermissionsForLabel,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hPermissionsForLabel,
|
||||
NULL,
|
||||
0,
|
||||
0,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) -
|
||||
(rcControl.right - rcControl.left) -
|
||||
(2 * btnSpacing) - cxEdge,
|
||||
rcControl3.bottom - rcControl3.top,
|
||||
SWP_NOMOVE | SWP_NOZORDER)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* move the Allow label */
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(hWndAllow,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
hWndAllow,
|
||||
NULL,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) -
|
||||
(rcControl.right - rcControl.left) -
|
||||
btnSpacing - cxEdge,
|
||||
pt2.y,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE | SWP_NOZORDER)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* move the Deny label */
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(hWndDeny,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
hWndDeny,
|
||||
NULL,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) - cxEdge,
|
||||
pt2.y,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE | SWP_NOZORDER)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* resize the Permissions check list box */
|
||||
GetWindowRect(sp->hAceCheckList,
|
||||
&rcControl);
|
||||
GetWindowRect(sp->hBtnAdvanced,
|
||||
&rcControl2);
|
||||
GetWindowRect(GetDlgItem(sp->hWnd,
|
||||
IDC_LABEL_ADVANCED),
|
||||
&rcControl3);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hAceCheckList,
|
||||
NULL,
|
||||
0,
|
||||
0,
|
||||
cxWidth,
|
||||
((sp->ObjectInfo.dwFlags & SI_ADVANCED) ?
|
||||
Height - (rcControl.top - rcWnd.top) - (rcControl3.bottom - rcControl3.top) - pt.x - btnSpacing :
|
||||
Height - (rcControl.top - rcWnd.top) - pt.x),
|
||||
SWP_NOMOVE | SWP_NOZORDER)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (sp->ObjectInfo.dwFlags & SI_ADVANCED)
|
||||
{
|
||||
/* move and resize the Advanced label */
|
||||
/* resize the Principal list view */
|
||||
GetWindowRect(sp->hWndPrincipalsList,
|
||||
&rcControl);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
GetDlgItem(sp->hWnd,
|
||||
IDC_LABEL_ADVANCED),
|
||||
sp->hWndPrincipalsList,
|
||||
NULL,
|
||||
pt.x,
|
||||
Height - (rcControl3.bottom - rcControl3.top) - pt.x,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) - cxEdge,
|
||||
rcControl3.bottom - rcControl3.top,
|
||||
SWP_NOZORDER)))
|
||||
0,
|
||||
0,
|
||||
cxWidth,
|
||||
rcControl.bottom - rcControl.top,
|
||||
SWP_NOMOVE | SWP_NOZORDER)))
|
||||
{
|
||||
return;
|
||||
goto EndDeferWnds;
|
||||
}
|
||||
|
||||
/* move and resize the Advanced button */
|
||||
|
||||
/* move the Add Principal button */
|
||||
GetWindowRect(sp->hBtnAdd,
|
||||
&rcControl);
|
||||
GetWindowRect(sp->hBtnRemove,
|
||||
&rcControl2);
|
||||
btnSpacing = rcControl2.left - rcControl.right;
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(sp->hBtnAdd,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hBtnAdvanced,
|
||||
sp->hBtnAdd,
|
||||
NULL,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) + pt.x,
|
||||
Height - (rcControl2.bottom - rcControl2.top) - pt.x,
|
||||
pt.x + cxWidth - (rcControl2.right - rcControl2.left) -
|
||||
(rcControl.right - rcControl.left) -
|
||||
btnSpacing - cxEdge,
|
||||
pt2.y,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE | SWP_NOZORDER)))
|
||||
{
|
||||
return;
|
||||
goto EndDeferWnds;
|
||||
}
|
||||
|
||||
/* move the Delete Principal button */
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(sp->hBtnRemove,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hBtnRemove,
|
||||
NULL,
|
||||
pt.x + cxWidth - (rcControl2.right - rcControl2.left) - cxEdge,
|
||||
pt2.y,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE | SWP_NOZORDER)))
|
||||
{
|
||||
goto EndDeferWnds;
|
||||
}
|
||||
|
||||
/* move the Permissions For label */
|
||||
GetWindowRect(hWndAllow,
|
||||
&rcControl);
|
||||
GetWindowRect(hWndDeny,
|
||||
&rcControl2);
|
||||
GetWindowRect(sp->hPermissionsForLabel,
|
||||
&rcControl3);
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(sp->hPermissionsForLabel,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hPermissionsForLabel,
|
||||
NULL,
|
||||
0,
|
||||
0,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) -
|
||||
(rcControl.right - rcControl.left) -
|
||||
(2 * btnSpacing) - cxEdge,
|
||||
rcControl3.bottom - rcControl3.top,
|
||||
SWP_NOMOVE | SWP_NOZORDER)))
|
||||
{
|
||||
goto EndDeferWnds;
|
||||
}
|
||||
|
||||
/* move the Allow label */
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(hWndAllow,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
hWndAllow,
|
||||
NULL,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) -
|
||||
(rcControl.right - rcControl.left) -
|
||||
btnSpacing - cxEdge,
|
||||
pt2.y,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE | SWP_NOZORDER)))
|
||||
{
|
||||
goto EndDeferWnds;
|
||||
}
|
||||
|
||||
/* move the Deny label */
|
||||
pt2.x = 0;
|
||||
pt2.y = 0;
|
||||
MapWindowPoints(hWndDeny,
|
||||
sp->hWnd,
|
||||
&pt2,
|
||||
1);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
hWndDeny,
|
||||
NULL,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) - cxEdge,
|
||||
pt2.y,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE | SWP_NOZORDER)))
|
||||
{
|
||||
goto EndDeferWnds;
|
||||
}
|
||||
|
||||
/* resize the Permissions check list box */
|
||||
GetWindowRect(sp->hAceCheckList,
|
||||
&rcControl);
|
||||
GetWindowRect(sp->hBtnAdvanced,
|
||||
&rcControl2);
|
||||
GetWindowRect(GetDlgItem(sp->hWnd,
|
||||
IDC_LABEL_ADVANCED),
|
||||
&rcControl3);
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hAceCheckList,
|
||||
NULL,
|
||||
0,
|
||||
0,
|
||||
cxWidth,
|
||||
((sp->ObjectInfo.dwFlags & SI_ADVANCED) ?
|
||||
Height - (rcControl.top - rcWnd.top) -
|
||||
(rcControl3.bottom - rcControl3.top) - pt.x - btnSpacing :
|
||||
Height - (rcControl.top - rcWnd.top) - pt.x),
|
||||
SWP_NOMOVE | SWP_NOZORDER)))
|
||||
{
|
||||
goto EndDeferWnds;
|
||||
}
|
||||
|
||||
if (sp->ObjectInfo.dwFlags & SI_ADVANCED)
|
||||
{
|
||||
/* move and resize the Advanced label */
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
GetDlgItem(sp->hWnd,
|
||||
IDC_LABEL_ADVANCED),
|
||||
NULL,
|
||||
pt.x,
|
||||
Height - (rcControl3.bottom - rcControl3.top) - pt.x,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) - cxEdge,
|
||||
rcControl3.bottom - rcControl3.top,
|
||||
SWP_NOZORDER)))
|
||||
{
|
||||
goto EndDeferWnds;
|
||||
}
|
||||
|
||||
/* move and resize the Advanced button */
|
||||
if (!(dwp = DeferWindowPos(dwp,
|
||||
sp->hBtnAdvanced,
|
||||
NULL,
|
||||
cxWidth - (rcControl2.right - rcControl2.left) + pt.x,
|
||||
Height - (rcControl2.bottom - rcControl2.top) - pt.x,
|
||||
0,
|
||||
0,
|
||||
SWP_NOSIZE | SWP_NOZORDER)))
|
||||
{
|
||||
goto EndDeferWnds;
|
||||
}
|
||||
}
|
||||
|
||||
EndDeferWindowPos(dwp);
|
||||
}
|
||||
|
||||
EndDeferWindowPos(dwp);
|
||||
|
||||
|
||||
EndDeferWnds:
|
||||
/* update the width of the principal list view column */
|
||||
GetClientRect(sp->hWndPrincipalsList,
|
||||
&rcControl);
|
||||
|
|
|
@ -233,7 +233,7 @@ InitializeObjectPicker(IN PCWSTR ServerName,
|
|||
sizeof(DSOP_SCOPE_INIT_INFO),
|
||||
DSOP_SCOPE_TYPE_TARGET_COMPUTER,
|
||||
DSOP_SCOPE_FLAG_DEFAULT_FILTER_USERS | DSOP_SCOPE_FLAG_DEFAULT_FILTER_GROUPS |
|
||||
DSOP_SCOPE_FLAG_STARTING_SCOPE,
|
||||
DSOP_SCOPE_FLAG_STARTING_SCOPE,
|
||||
{
|
||||
{
|
||||
0,
|
||||
|
@ -241,7 +241,7 @@ InitializeObjectPicker(IN PCWSTR ServerName,
|
|||
0
|
||||
},
|
||||
DSOP_DOWNLEVEL_FILTER_USERS | DSOP_DOWNLEVEL_FILTER_LOCAL_GROUPS |
|
||||
DSOP_DOWNLEVEL_FILTER_GLOBAL_GROUPS | DSOP_DOWNLEVEL_FILTER_ALL_WELLKNOWN_SIDS
|
||||
DSOP_DOWNLEVEL_FILTER_GLOBAL_GROUPS | DSOP_DOWNLEVEL_FILTER_ALL_WELLKNOWN_SIDS
|
||||
},
|
||||
NULL,
|
||||
NULL,
|
||||
|
@ -304,7 +304,7 @@ InvokeObjectPickerDialog(IN IDsObjectPicker *pDsObjectPicker,
|
|||
fe.dwAspect = DVASPECT_CONTENT;
|
||||
fe.lindex = -1;
|
||||
fe.tymed = TYMED_HGLOBAL;
|
||||
|
||||
|
||||
hRet = pdo->lpVtbl->GetData(pdo,
|
||||
&fe,
|
||||
&stm);
|
||||
|
@ -317,11 +317,11 @@ InvokeObjectPickerDialog(IN IDsObjectPicker *pDsObjectPicker,
|
|||
PSID pSid;
|
||||
UINT i;
|
||||
BOOL contLoop = TRUE;
|
||||
|
||||
|
||||
for (i = 0; i < SelectionList->cItems && contLoop; i++)
|
||||
{
|
||||
vSid = SelectionList->aDsSelection[i].pvarFetchedAttributes;
|
||||
|
||||
|
||||
if (vSid != NULL && V_VT(vSid) == (VT_ARRAY | VT_UI1))
|
||||
{
|
||||
hRet = SafeArrayAccessData(V_ARRAY(vSid),
|
||||
|
@ -330,7 +330,7 @@ InvokeObjectPickerDialog(IN IDsObjectPicker *pDsObjectPicker,
|
|||
{
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (pSid != NULL)
|
||||
{
|
||||
contLoop = SelectedSidCallback(pDsObjectPicker,
|
||||
|
@ -338,14 +338,14 @@ InvokeObjectPickerDialog(IN IDsObjectPicker *pDsObjectPicker,
|
|||
pSid,
|
||||
Context);
|
||||
}
|
||||
|
||||
|
||||
SafeArrayUnaccessData(V_ARRAY(vSid));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
GlobalUnlock(stm.hGlobal);
|
||||
}
|
||||
|
||||
|
||||
ReleaseStgMedium(&stm);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue