Completing work on Win98 integration feature

git-svn-id: svn://10.0.0.236/trunk@9794 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
law%netscape.com
1998-09-11 01:14:08 +00:00
parent bca0cbbde5
commit cd57b240f5
11 changed files with 1405 additions and 48 deletions

View File

@@ -23,6 +23,9 @@
#include "helper.h"
#include "nethelp.h"
#include "nsIDefaultBrowser.h"
#include "prefapi.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
@@ -775,15 +778,35 @@ END_MESSAGE_MAP()
*
****************************************************************************/
CDefaultBrowserDlg::CDefaultBrowserDlg(CWnd* pParent /*=NULL*/)
CDefaultBrowserDlg::CDefaultBrowserDlg(CWnd* pParent /*=NULL*/, nsIDefaultBrowser* pDefaultBrowser /*=NULL*/)
: CDefaultBrowserDlgBase(CDefaultBrowserDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDefaultBrowserDlg)
m_bIgnore = FALSE;
m_bPerformCheck = TRUE; // If false, we wouldn't be here, now would we?
m_pDefaultBrowser = pDefaultBrowser;
if ( m_pDefaultBrowser ) {
m_pDefaultBrowser->AddRef();
}
//}}AFX_DATA_INIT
} // END OF FUNCTION CDefaultBrowserDlg::CDefaultBrowserDlg()
CDefaultBrowserDlg::CDefaultBrowserDlg(nsIDefaultBrowser* pDefaultBrowser)
: CDefaultBrowserDlgBase(CDefaultBrowserDlg::IDD, NULL)
{
m_bPerformCheck = TRUE; // If false, we wouldn't be here, now would we?
m_pDefaultBrowser = pDefaultBrowser;
if ( m_pDefaultBrowser ) {
m_pDefaultBrowser->AddRef();
}
}
CDefaultBrowserDlg::~CDefaultBrowserDlg() {
if ( m_pDefaultBrowser ) {
m_pDefaultBrowser->Release();
}
}
/****************************************************************************
*
* CDefaultBrowserDlg::DoDataExchange
@@ -804,7 +827,7 @@ void CDefaultBrowserDlg::DoDataExchange(CDataExchange* pDX)
CDefaultBrowserDlgBase::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDefaultBrowserDlg)
DDX_Check(pDX, IDC_IGNORE, m_bIgnore);
DDX_Check(pDX, IDC_IGNORE, m_bPerformCheck);
DDX_Control(pDX, IDC_LIST1, m_Listbox);
//}}AFX_DATA_MAP
@@ -831,6 +854,12 @@ void CDefaultBrowserDlg::OnNo()
if (UpdateData(TRUE))
{
EndDialog(ID_NO);
// Update "perform check" preference per check-box setting.
if ( !m_bPerformCheck ) {
PREF_SetBoolPref("browser.wfe.ignore_def_check",TRUE);
}
} /* end if */
} // END OF FUNCTION CDefaultBrowserDlg::OnNo()
@@ -856,6 +885,7 @@ void CDefaultBrowserDlg::OnDetails()
if (UpdateData(TRUE))
{
EndDialog(IDC_SHOW_DESKTOP_PREFS);
} /* end if */
} // END OF FUNCTION CDefaultBrowserDlg::OnDetails()
@@ -937,6 +967,21 @@ static BOOL IsListItemSelected(int* selArray, int count, int i)
void CDefaultBrowserDlg::OnOK()
{
// Dismiss the dialog.
CDefaultBrowserDlgBase::OnOK();
// Update "perform check" preference per check-box setting.
if ( !m_bPerformCheck ) {
PREF_SetBoolPref("browser.wfe.ignore_def_check",TRUE);
}
if ( m_pDefaultBrowser ) {
// synchronize registry with these preferences.
nsresult result = m_pDefaultBrowser->HandlePerPreferences();
ASSERT( result == NS_OK );
}
#if 0 // Old code.
// Let's do it. Selected items become owned.
// Unselected items become ignored (if the checkbox is checked)
CDefaultBrowserDlgBase::OnOK();
@@ -968,6 +1013,7 @@ void CDefaultBrowserDlg::OnOK()
theItem->SetIgnored(TRUE);
}
}
#endif
}
/* CCheckConfirmDialog: a generic "confirm" dialog including a checkbox.

View File

@@ -305,15 +305,19 @@ protected:
#define CDefaultBrowserDlgBase CDialog
class nsIDefaultBrowser;
class CDefaultBrowserDlg : public CDefaultBrowserDlgBase
{
public:
CDefaultBrowserDlg(CWnd* pParent = NULL);
CDefaultBrowserDlg(CWnd* pParent = NULL, nsIDefaultBrowser* pDefaultBrowser = NULL);
CDefaultBrowserDlg(nsIDefaultBrowser* pDefaultBrowser);
~CDefaultBrowserDlg();
// Dialog Data
//{{AFX_DATA(CDefaultBrowserDlg)
enum { IDD = IDD_DEFAULT_BROWSER };
BOOL m_bIgnore;
BOOL m_bPerformCheck;
CListBox m_Listbox;
//}}AFX_DATA
@@ -339,6 +343,9 @@ class CDefaultBrowserDlg : public CDefaultBrowserDlgBase
DECLARE_MESSAGE_MAP()
private:
nsIDefaultBrowser* m_pDefaultBrowser; // nsIDefaultBrowser interface pointer.
}; // END OF CLASS CDefaultBrowserDlg()

File diff suppressed because it is too large Load Diff

View File

@@ -41,6 +41,60 @@ class nsIDefaultBrowser : public nsISupports {
// DisplayDialog - displays the "default browser" dialog (intended for browser startup).
NS_IMETHOD_(int) DisplayDialog() = 0;
// Prefs - nested structure defining default-browser related prefs.
struct Prefs {
PRBool bHandleFiles;
PRBool bHandleShortcuts;
PRBool bIntegrateWithActiveDesktop;
// Internet shortcut protocols.
struct {
PRBool bHandleHTTP;
PRBool bHandleHTTPS;
PRBool bHandleFTP;
};
// File types.
struct {
PRBool bHandleHTML;
PRBool bHandleJPEG;
PRBool bHandleGIF;
PRBool bHandleJS;
PRBool bHandleXBM;
PRBool bHandleTXT;
};
// "Active desktop" stuff.
struct {
PRBool bUseInternetKeywords;
PRBool bUseNetcenterSearch;
PRBool bDisableActiveDesktop;
};
};
// GetPreferences - Returns Prefs structure filled in with user's preferences.
NS_IMETHOD GetPreferences( Prefs &prefs ) = 0;
// SetPreferences - Sets user preferences from Prefs structure contents.
NS_IMETHOD SetPreferences( const Prefs &prefs ) = 0;
// Things - enumeration of protocols/files that Mozilla can handle.
enum Thing {
kHTTP, kHTTPS, kFTP, kMaxProtocol = kFTP,
kHTML, kJPEG, kGIF, kJS, kXBM, kTXT, kMaxFileType = kTXT,
kInternetKeywords, kNetcenterSearch, kActiveDesktop
};
// IsHandling - returns whether Mozilla is handling a given thing.
NS_IMETHOD_(PRBool) IsHandling( Thing thing ) = 0;
// StartHandling - does necessary stuff to have Mozilla take over handling of a
// given thing.
NS_IMETHOD StartHandling( Thing extOrProtocol ) = 0;
// StopHandling - vice versa
NS_IMETHOD StopHandling( Thing extOrProtocol ) = 0;
// HandlePerPreferences - Apply preferences to registry.
NS_IMETHOD HandlePerPreferences() = 0;
};
#endif // _NSIDEFAULTBROWSER_H_

View File

@@ -642,15 +642,14 @@ void CNetscapeApp::CheckDefaultBrowser()
{
// We're only worrying about this for Win32
#ifdef XP_WIN32
// Construct the App's owned and lost list. Used to determine exactly which
// file types were lost. This construction should perform the comparison and
// update the lost list. The result will be written out to the registry.
m_OwnedAndLostList.ConstructLists();
XP_Bool prefBool = FALSE;
PREF_GetBoolPref("browser.wfe.ignore_def_check",&prefBool);
MakeDefaultBrowser();
m_OwnedAndLostList.WriteLists();
if ( !prefBool ) {
MakeDefaultBrowser();
}
#endif // XP_WIN32
} // END OF FUNCTION CNetscapeApp::CheckDefaultBrowser()

View File

@@ -26,6 +26,7 @@
#include "winprefs/isppageo.h"
#include "winprefs/brprefid.h"
#include "winprefs/wprefid.h"
#include "nsIDefaultBrowser.h"
#ifdef MOZ_LOC_INDEP
#include "winprefs/liprefid.h"
#include "winprefs/iliprefs.h"
@@ -2370,7 +2371,12 @@ wfe_DisplayPreferences(CGenericFrame *pFrame)
CLSCTX_INPROC_SERVER,
IID_ISpecifyPropertyPageObjects,
(LPVOID *)&categories[nCategories]))) {
nDesktopCategory = nCategories++;
IWindowsPrefs *pWinPrefs;
if( SUCCEEDED( categories[nCategories]->QueryInterface( IID_IWindowsPrefs, (LPVOID*)&pWinPrefs ) ) ) {
pWinPrefs->SetDefaultBrowser( nsIDefaultBrowser::GetInterface() );
pWinPrefs->Release();
nDesktopCategory = nCategories++;
}
} else {
// Register DLL and try again.
RegisterCLSIDForDll( "winpref.dll" );
@@ -2379,7 +2385,12 @@ wfe_DisplayPreferences(CGenericFrame *pFrame)
CLSCTX_INPROC_SERVER,
IID_ISpecifyPropertyPageObjects,
(LPVOID *)&categories[nCategories]))) {
nDesktopCategory = nCategories++;
IWindowsPrefs *pWinPrefs;
if( SUCCEEDED( categories[nCategories]->QueryInterface( IID_IWindowsPrefs, (LPVOID*)&pWinPrefs ) ) ) {
pWinPrefs->SetDefaultBrowser( nsIDefaultBrowser::GetInterface() );
pWinPrefs->Release();
nDesktopCategory = nCategories++;
}
}
}

View File

@@ -19,8 +19,6 @@
#ifndef __WPREFID_H_
#define __WPREFID_H_
#ifndef MOZ_COMMUNICATOR_IIDS
// {464DC700-2727-11d2-8043-00600811A9C3}
DEFINE_GUID(IID_IWindowsPrefs,
0x464dc700, 0x2727, 0x11d2, 0x80, 0x43, 0x0, 0x60, 0x8, 0x11, 0xa9, 0xc3);
@@ -29,16 +27,18 @@ DEFINE_GUID(IID_IWindowsPrefs,
DEFINE_GUID(CLSID_WindowsPrefs,
0x464dc701, 0x2727, 0x11d2, 0x80, 0x43, 0x0, 0x60, 0x8, 0x11, 0xa9, 0xc3);
#else /* MOZ_COMMUNICATOR_IIDS */
class nsIDefaultBrowser;
// {464DC700-2727-11d2-8043-00600811A9C3}
DEFINE_GUID(IID_IWindowsPrefs,
0x464dc700, 0x2727, 0x11d2, 0x80, 0x43, 0x0, 0x60, 0x8, 0x11, 0xa9, 0xc3);
// IWindowsPrefs
DECLARE_INTERFACE_(IWindowsPrefs, IUnknown)
{
// IUnknown methods
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
// {464DC701-2727-11d2-8043-00600811A9C3}
DEFINE_GUID(CLSID_WindowsPrefs,
0x464dc701, 0x2727, 0x11d2, 0x80, 0x43, 0x0, 0x60, 0x8, 0x11, 0xa9, 0xc3);
#endif /* MOZ_COMMUNICATOR_IIDS */
// IWindowsPrefs methods
STDMETHOD(SetDefaultBrowser)(THIS_ nsIDefaultBrowser* pDefaultBrowser) PURE;
};
#endif /* __WPREFID_H_ */

View File

@@ -50,7 +50,7 @@ CPP_OBJS=.\$(OBJDIR)\winpref.obj .\$(OBJDIR)\winpages.obj
LINCS=-I$(XPDIST)\public\dllcom -I$(XPDIST)\public\winprefs \
-I$(XPDIST)\public\pref -I$(XPDIST)\public\dbm \
-I$(XPDIST)\public\nspr -I$(XPDIST)\public\js \
-I$(XPDIST)\public\libreg
-I$(XPDIST)\public\libreg -I$(DEPTH)\cmd\winfe -I$(XPDIST)\public\xpcom
!include "$(DEPTH)\config\rules.mak"

View File

@@ -22,6 +22,8 @@
#include "cppageex.h"
#include "xp_list.h"
#include "nsIDefaultBrowser.h"
//also in brpref\src\advpages.cpp, winfe\mnprefs.cpp
#define WINPREF_PrefIsLocked(pPrefName) PREF_PrefIsLocked(pPrefName)
@@ -37,7 +39,8 @@ PREF_GetStringPref(LPCSTR lpszPref, CString &str);
class CBasicWindowsPrefs : public CPropertyPageEx {
public:
CBasicWindowsPrefs();
CBasicWindowsPrefs(nsIDefaultBrowser *pDefaultBrowser);
~CBasicWindowsPrefs();
protected:
BOOL InitDialog();
@@ -50,7 +53,10 @@ class CBasicWindowsPrefs : public CPropertyPageEx {
BOOL OnCommand(int id, HWND hwndCtl, UINT notifyCode);
private:
nsIDefaultBrowser* m_pDefaultBrowser;
BOOL m_bCheckOnStart;
nsIDefaultBrowser::Prefs m_originalPrefs;
nsIDefaultBrowser::Prefs m_currentPrefs;
};
#endif /* __PAGES_H_ */

View File

@@ -26,23 +26,38 @@
#include "structs.h"
#include "xp_help.h"
#include "nsIDefaultBrowser.h"
/////////////////////////////////////////////////////////////////////////////
// CBasicWindowsPrefs implementation
CBasicWindowsPrefs::CBasicWindowsPrefs()
: CPropertyPageEx(CComDll::m_hInstance, IDD_BASICWINPREFS, "" ) {
CBasicWindowsPrefs::CBasicWindowsPrefs(nsIDefaultBrowser*pDefaultBrowser)
: CPropertyPageEx(CComDll::m_hInstance, IDD_BASICWINPREFS, "" ),
m_pDefaultBrowser( pDefaultBrowser ) {
// Set member data using XP preferences
assert( m_pDefaultBrowser );
}
CBasicWindowsPrefs::~CBasicWindowsPrefs() {
m_pDefaultBrowser->Release();
}
BOOL CBasicWindowsPrefs::InitDialog()
{
// Check for locked preferences
return CPropertyPageEx::InitDialog();
}
STDMETHODIMP CBasicWindowsPrefs::Activate(HWND hwndParent, LPCRECT lprc, BOOL bModal)
{
if (!m_bHasBeenActivated) {
// Get user preferences and remember them.
nsresult result = m_pDefaultBrowser->GetPreferences( m_originalPrefs );
assert( result == NS_OK );
BOOL bIgnore = FALSE;
PREF_GetBoolPref( "browser.wfe.ignore_def_check", &bIgnore );
m_bCheckOnStart = !bIgnore;
m_currentPrefs = m_originalPrefs;
}
return CPropertyPageEx::Activate(hwndParent, lprc, bModal);
@@ -50,11 +65,32 @@ STDMETHODIMP CBasicWindowsPrefs::Activate(HWND hwndParent, LPCRECT lprc, BOOL bM
BOOL CBasicWindowsPrefs::DoTransfer(BOOL bSaveAndValidate)
{
// Synchronize dialog checkboxes from current preferences.
CheckBoxTransfer( IDC_HANDLEFILES, m_currentPrefs.bHandleFiles, bSaveAndValidate );
CheckBoxTransfer( IDC_HANDLESHORTCUTS, m_currentPrefs.bHandleShortcuts, bSaveAndValidate );
CheckBoxTransfer( IDC_INTEGRATEWITHACTIVEDESKTOP, m_currentPrefs.bIntegrateWithActiveDesktop, bSaveAndValidate );
CheckBoxTransfer( IDC_CHECKONSTART, m_bCheckOnStart, bSaveAndValidate );
return TRUE;
}
BOOL CBasicWindowsPrefs::ApplyChanges()
{
// Set "ignore on start" pref based on "check on start" status.
BOOL bIgnore = !m_bCheckOnStart;
PREF_SetBoolPref( "browser.wfe.ignore_def_check", bIgnore );
// If other prefs changed, store them.
if ( XP_MEMCMP( &m_currentPrefs, &m_originalPrefs, sizeof( nsIDefaultBrowser::Prefs ) ) != 0 ) {
// Store them in registry.
nsresult result = m_pDefaultBrowser->SetPreferences( m_currentPrefs );
assert( result == NS_OK );
// Apply those preferences.
result = m_pDefaultBrowser->HandlePerPreferences();
assert( result == NS_OK );
}
return TRUE;
}
@@ -65,20 +101,46 @@ LRESULT CBasicWindowsPrefs::WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
class CWinPrefDialog : public CDialog {
public:
CWinPrefDialog( int id );
CWinPrefDialog( int id, nsIDefaultBrowser::Prefs &prefs );
protected:
BOOL InitDialog() { return TRUE; }
BOOL DoTransfer(BOOL bSaveAndValidate) { return TRUE; }
BOOL DoTransfer(BOOL bSaveAndValidate);
// Event processing
void OnOK() { return; }
private:
nsIDefaultBrowser::Prefs &m_prefs;
};
CWinPrefDialog::CWinPrefDialog( int id )
: CDialog( CComDll::m_hInstance, id ) {
CWinPrefDialog::CWinPrefDialog( int id, nsIDefaultBrowser::Prefs &prefs )
: CDialog( CComDll::m_hInstance, id ), m_prefs( prefs ) {
}
CWinPrefDialog::DoTransfer( BOOL bSaveAndValidate ) {
switch( m_nTemplateID ) {
case IDD_WINFILETYPES:
CheckBoxTransfer( IDC_HANDLEHTML, m_prefs.bHandleHTML, bSaveAndValidate );
CheckBoxTransfer( IDC_HANDLEJPEG, m_prefs.bHandleJPEG, bSaveAndValidate );
CheckBoxTransfer( IDC_HANDLEGIF, m_prefs.bHandleGIF, bSaveAndValidate );
CheckBoxTransfer( IDC_HANDLEJS, m_prefs.bHandleJS, bSaveAndValidate );
CheckBoxTransfer( IDC_HANDLEXBM, m_prefs.bHandleXBM, bSaveAndValidate );
CheckBoxTransfer( IDC_HANDLETXT, m_prefs.bHandleTXT, bSaveAndValidate );
break;
case IDD_WINSHORTCUTTYPES:
CheckBoxTransfer( IDC_HANDLEHTTP, m_prefs.bHandleHTTP, bSaveAndValidate );
CheckBoxTransfer( IDC_HANDLESHTTP, m_prefs.bHandleHTTPS, bSaveAndValidate );
CheckBoxTransfer( IDC_HANDLEFTP, m_prefs.bHandleFTP, bSaveAndValidate );
break;
case IDD_WINACTIVEDESKTOPSETTINGS:
CheckBoxTransfer( IDC_USEINTERNETKEYWORDS, m_prefs.bUseInternetKeywords, bSaveAndValidate );
CheckBoxTransfer( IDC_USENETCENTERSEARCH, m_prefs.bUseNetcenterSearch, bSaveAndValidate );
CheckBoxTransfer( IDC_DISABLEACTIVEDESKTOP, m_prefs.bDisableActiveDesktop, bSaveAndValidate );
break;
default:
break;
}
return TRUE;
}
BOOL CBasicWindowsPrefs::OnCommand(int id, HWND hwndCtl, UINT notifyCode)
@@ -90,7 +152,7 @@ BOOL CBasicWindowsPrefs::OnCommand(int id, HWND hwndCtl, UINT notifyCode)
case IDD_WINSHORTCUTTYPES:
case IDD_WINACTIVEDESKTOPSETTINGS:
{
CWinPrefDialog dialog( id );
CWinPrefDialog dialog( id, m_currentPrefs );
dialog.DoModal(GetParent(m_hwndDlg));
}
break;

View File

@@ -22,6 +22,7 @@
#include "wprefid.h"
#include "prefuiid.h"
#include "isppageo.h"
#include "nsIDefaultBrowser.h"
#include <assert.h>
// Create a new instance of our derived class and return it.
@@ -35,7 +36,7 @@ DLL_ConsumerCreateInstance()
// CSpecifyPropertyPageObjects
// Abstract class that supports aggregation as an inner object
class CCategory : public IUnknown {
class CCategory : public IWindowsPrefs {
public:
CCategory();
@@ -44,6 +45,9 @@ class CCategory : public IUnknown {
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IWindowsPrefs methods.
STDMETHODIMP SetDefaultBrowser(nsIDefaultBrowser* pDefaultBrowser) PURE;
public:
// Abstract nested class that implements ISpecifyPropertyPageObjects
class CSpecifyPageObjects : public ISpecifyPropertyPageObjects {
@@ -136,27 +140,42 @@ CCategory::CSpecifyPageObjects::Release()
class CWindowsCategory : public CCategory {
public:
CWindowsCategory(LPUNKNOWN pUnkOuter);
~CWindowsCategory();
// IUnknown methods. Doesn't delegate (explicit IUnknown)
STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj);
// IwindowsPrefs methods.
STDMETHODIMP SetDefaultBrowser(nsIDefaultBrowser* pDefaultBrowser);
private:
class CSpecifyWindowsPageObjects : public CCategory::CSpecifyPageObjects {
public:
CSpecifyWindowsPageObjects(CCategory *pBackObj, LPUNKNOWN pUnkOuter);
~CSpecifyWindowsPageObjects();
// ISpecifyPropertyPageObjects methods
STDMETHODIMP GetPageObjects(CAPPAGE *pPages);
// nsIDefaultBrowser interface pointer.
nsIDefaultBrowser* m_pDefaultBrowser;
};
CSpecifyWindowsPageObjects m_innerObj;
nsIDefaultBrowser* m_pDefaultBrowser;
};
CWindowsCategory::CWindowsCategory(LPUNKNOWN pUnkOuter)
: m_innerObj(this, pUnkOuter)
: m_innerObj(this, pUnkOuter), m_pDefaultBrowser(NULL)
{
}
CWindowsCategory::~CWindowsCategory() {
if ( m_pDefaultBrowser ) {
m_pDefaultBrowser->Release();
}
}
STDMETHODIMP
CWindowsCategory::QueryInterface(REFIID riid, LPVOID FAR* ppvObj)
{
@@ -164,6 +183,11 @@ CWindowsCategory::QueryInterface(REFIID riid, LPVOID FAR* ppvObj)
*ppvObj = (LPVOID)this;
AddRef();
return NOERROR;
} else if (riid == IID_IWindowsPrefs) {
*ppvObj = (LPVOID)(IWindowsPrefs*)this;
AddRef();
return NOERROR;
} else if (riid == IID_ISpecifyPropertyPageObjects) {
*ppvObj = (LPVOID)&m_innerObj;
@@ -176,11 +200,30 @@ CWindowsCategory::QueryInterface(REFIID riid, LPVOID FAR* ppvObj)
}
}
STDMETHODIMP
CWindowsCategory::SetDefaultBrowser(nsIDefaultBrowser* pDefaultBrowser) {
m_pDefaultBrowser = pDefaultBrowser;
if ( m_pDefaultBrowser ) {
// Once for me.
m_pDefaultBrowser->AddRef();
// Once for my inner 'self'.
m_innerObj.m_pDefaultBrowser = m_pDefaultBrowser;
m_innerObj.m_pDefaultBrowser->AddRef();
}
return NOERROR;
}
CWindowsCategory::CSpecifyWindowsPageObjects::CSpecifyWindowsPageObjects(CCategory *pBackObj, LPUNKNOWN pUnkOuter)
: CSpecifyPageObjects(pBackObj, pUnkOuter)
: CSpecifyPageObjects(pBackObj, pUnkOuter), m_pDefaultBrowser(NULL)
{
}
CWindowsCategory::CSpecifyWindowsPageObjects::~CSpecifyWindowsPageObjects() {
if ( m_pDefaultBrowser ) {
m_pDefaultBrowser->Release();
}
}
STDMETHODIMP
CWindowsCategory::CSpecifyWindowsPageObjects::GetPageObjects(CAPPAGE *pPages)
{
@@ -192,7 +235,9 @@ CWindowsCategory::CSpecifyWindowsPageObjects::GetPageObjects(CAPPAGE *pPages)
if (!pPages->pElems)
return ResultFromScode(E_OUTOFMEMORY);
pPages->pElems[0] = new CBasicWindowsPrefs;
assert( m_pDefaultBrowser );
pPages->pElems[0] = new CBasicWindowsPrefs(m_pDefaultBrowser);
for (ULONG i = 0; i < pPages->cElems; i++)
pPages->pElems[i]->AddRef();