You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
269 lines
7.6 KiB
269 lines
7.6 KiB
|
|
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
unixui.cxx
|
|
|
|
Abstract:
|
|
|
|
Contains Unix fixes
|
|
|
|
Contents:
|
|
//UnixAdjustButtonSpacing
|
|
UnixRemoveMoreInfoButton
|
|
|
|
Author:
|
|
|
|
Sriram Nambakam (v-sriran) 07-Dec-1998
|
|
|
|
Revision History:
|
|
|
|
07-Dec-1998 v-sriran
|
|
Created
|
|
|
|
--*/
|
|
|
|
#include <wininetp.h>
|
|
#include "ierrui.hxx"
|
|
#include "iehelpid.h"
|
|
#include "unixui.h"
|
|
#include <mainwin.h>
|
|
|
|
#if 0
|
|
|
|
#define MOVE_LEFT 0
|
|
#define MOVE_CENTER 1
|
|
#define MOVE_RIGHT 2
|
|
|
|
static void hAdjustButtonSpacing(HWND hwnd,
|
|
short buttonSpacingStyle,
|
|
short cButtons,
|
|
short dwSpacing,
|
|
...);
|
|
|
|
|
|
/* HACKHACK
|
|
* On Unix, we draw a focus rectangle around the button that is currently
|
|
* selected. And, the focus rectangle will overlap with the next button.
|
|
* We programatically move the button to the *left*, to make it look good.
|
|
*/
|
|
|
|
void UnixAdjustButtonSpacing(HWND hwnd, DWORD dwDlgId)
|
|
{
|
|
switch(dwDlgId)
|
|
{
|
|
case IDD_HTTP_TO_HTTPS_ZONE_CROSSING:
|
|
/* In these the More Info button is ID_TELL_ME_ABOUT_SECURITY */
|
|
hAdjustButtonSpacing(hwnd,
|
|
MOVE_LEFT,
|
|
1,
|
|
5,
|
|
IDOK);
|
|
|
|
break;
|
|
#ifdef NOT_YET_IMPLEMENTED
|
|
case IDD_HTTPS_TO_HTTP_ZONE_CROSSING:
|
|
break;
|
|
case IDD_MIXED_SECURITY:
|
|
break;
|
|
case IDD_INVALID_CA:
|
|
break;
|
|
case IDD_BAD_CN:
|
|
break;
|
|
case IDD_CONFIRM_COOKIE:
|
|
/* In this the More Info button is IDC_COOKIE_DETAILS */
|
|
break;
|
|
#endif /* NOT_YET_IMPLEMENTED */
|
|
}
|
|
}
|
|
|
|
/*
|
|
* This function assumes all buttons are of equal width for MOVE_CENTER
|
|
*/
|
|
void hAdjustButtonSpacing(HWND hwnd,
|
|
short buttonSpacingStyle,
|
|
short cButtons,
|
|
short dwSpacing,
|
|
...)
|
|
{
|
|
va_list Arguments;
|
|
DWORD dwButtonId;
|
|
|
|
va_start(Arguments, dwSpacing);
|
|
|
|
if (buttonSpacingStyle != MOVE_CENTER && dwSpacing)
|
|
{
|
|
HWND hCurButton;
|
|
RECT rect;
|
|
|
|
for (short i = 0; i < cButtons; i++)
|
|
{
|
|
dwButtonId = (DWORD)va_arg(Arguments,ULONG);
|
|
if ((hCurButton = GetDlgItem(hwnd, dwButtonId)))
|
|
{
|
|
GetWindowRect(hCurButton, &rect);
|
|
ScreenToClient(hwnd, (LPPOINT)&rect);
|
|
SetWindowPos(hCurButton,
|
|
NULL,
|
|
(buttonSpacingStyle == MOVE_LEFT ? rect.left-dwSpacing : rect.left+dwSpacing),
|
|
rect.top,
|
|
0,
|
|
0,
|
|
SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);
|
|
}
|
|
}
|
|
}
|
|
else /* MOVE_CENTER; dwSpacing does not matter */
|
|
{
|
|
}
|
|
|
|
va_end(Arguments);
|
|
|
|
return;
|
|
}
|
|
#endif /* 0 */
|
|
|
|
#define MOVE_CENTER 0x0001
|
|
|
|
static void hRemoveAndAdjust(HWND hwnd,
|
|
DWORD dwFlags,
|
|
short cButtons,
|
|
...);
|
|
|
|
/* If we have Button1 Button2 "More Info"
|
|
* The following function makes it
|
|
* <nothing> Button1 Button2
|
|
* And, you have to pass the ids of "More Info" Button2 Button1 in the
|
|
* variable argument list in that order
|
|
*/
|
|
|
|
void UnixRemoveMoreInfoButton(HWND hwnd, DWORD dwDlgId)
|
|
{
|
|
switch(dwDlgId)
|
|
{
|
|
case IDD_HTTP_TO_HTTPS_ZONE_CROSSING:
|
|
/* In these the More Info button is ID_TELL_ME_ABOUT_SECURITY */
|
|
hRemoveAndAdjust(hwnd,
|
|
MOVE_CENTER,
|
|
2,
|
|
ID_TELL_ME_ABOUT_SECURITY,
|
|
IDOK);
|
|
|
|
break;
|
|
case IDD_HTTPS_TO_HTTP_ZONE_CROSSING:
|
|
hRemoveAndAdjust(hwnd,
|
|
0,
|
|
3,
|
|
ID_TELL_ME_ABOUT_SECURITY,
|
|
IDCANCEL,
|
|
IDOK);
|
|
break;
|
|
#ifdef NOT_YET_IMPLEMENTED
|
|
case IDD_MIXED_SECURITY:
|
|
break;
|
|
case IDD_INVALID_CA:
|
|
break;
|
|
case IDD_BAD_CN:
|
|
break;
|
|
case IDD_CONFIRM_COOKIE:
|
|
/* In this the More Info button is IDC_COOKIE_DETAILS */
|
|
break;
|
|
#endif /* NOT_YET_IMPLEMENTED */
|
|
}
|
|
}
|
|
|
|
void hRemoveAndAdjust(HWND hwnd,
|
|
DWORD dwFlags,
|
|
short cButtons,
|
|
...)
|
|
{
|
|
va_list Arguments;
|
|
DWORD dwMoreInfoButtonId, dwButtonId;
|
|
HWND hMoreInfoButton, hDefButton;
|
|
RECT rectCur, rectPrev;
|
|
|
|
hDefButton = MwRemoveDefPushButtonStyle(hwnd);
|
|
|
|
/* Expect the first button to be the More Info Button
|
|
* Hide the More Info Button, and move the other buttons to
|
|
* the appropriate positions
|
|
*/
|
|
|
|
if (cButtons < 2)
|
|
goto Cleanup;
|
|
|
|
/* We should use MOVE_CENTER only if there are two buttons in the move
|
|
* list, and we hide the more info button, and move the other one to
|
|
* the center
|
|
*/
|
|
if ((dwFlags & MOVE_CENTER) && cButtons != 2)
|
|
goto Cleanup;
|
|
|
|
va_start(Arguments, cButtons);
|
|
|
|
dwMoreInfoButtonId = (DWORD)va_arg(Arguments, ULONG);
|
|
hMoreInfoButton = GetDlgItem(hwnd, dwMoreInfoButtonId);
|
|
if (!hMoreInfoButton)
|
|
goto Cleanup;
|
|
|
|
GetWindowRect(hMoreInfoButton, &rectPrev);
|
|
ScreenToClient(hwnd, (LPPOINT)&rectPrev);
|
|
|
|
if (dwFlags & MOVE_CENTER)
|
|
{
|
|
HWND hCurButton;
|
|
dwButtonId = (DWORD)va_arg(Arguments,ULONG);
|
|
if ((hCurButton = GetDlgItem(hwnd, dwButtonId)))
|
|
{
|
|
RECT rectDlg;
|
|
|
|
GetWindowRect(hCurButton, &rectCur);
|
|
ScreenToClient(hwnd, (LPPOINT)&rectCur);
|
|
|
|
GetWindowRect(hwnd, &rectDlg);
|
|
ScreenToClient(hwnd, (LPPOINT)&rectDlg);
|
|
SetWindowPos(hCurButton,
|
|
NULL,
|
|
((rectDlg.right - rectDlg.left)/2)-((rectCur.right-rectCur.left)/2),
|
|
rectCur.top,
|
|
0,
|
|
0,
|
|
SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
HWND hCurButton;
|
|
|
|
for (short i = 1; i < cButtons; i++)
|
|
{
|
|
dwButtonId = (DWORD)va_arg(Arguments,ULONG);
|
|
if ((hCurButton = GetDlgItem(hwnd, dwButtonId)))
|
|
{
|
|
GetWindowRect(hCurButton, &rectCur);
|
|
ScreenToClient(hwnd, (LPPOINT)&rectCur);
|
|
SetWindowPos(hCurButton,
|
|
NULL,
|
|
rectPrev.left,
|
|
rectPrev.top,
|
|
0,
|
|
0,
|
|
SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);
|
|
memcpy(&rectPrev, &rectCur, sizeof(RECT));
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Hide the More Info Button */
|
|
ShowWindow(hMoreInfoButton, SW_HIDE);
|
|
|
|
Cleanup:
|
|
|
|
if (hDefButton)
|
|
MwRestoreDefPushButtonStyle(hDefButton);
|
|
|
|
return;
|
|
}
|