mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 14:55:47 +00:00
cache the LookAndFeel object as long as we have any widgets
This commit is contained in:
parent
0a211ce130
commit
ab7f7596a9
@ -33,6 +33,8 @@
|
||||
|
||||
static NS_DEFINE_IID(kILookAndFeelIID, NS_ILOOKANDFEEL_IID);
|
||||
static NS_DEFINE_IID(kLookAndFeelCID, NS_LOOKANDFEEL_CID);
|
||||
static nsILookAndFeel *nsWidget::sLookAndFeel = nsnull;
|
||||
static PRUint32 nsWidget::sWidgetCount = 0;
|
||||
|
||||
//#define DBG 1
|
||||
|
||||
@ -41,12 +43,17 @@ nsWidget::nsWidget()
|
||||
// XXX Shouldn't this be done in nsBaseWidget?
|
||||
NS_INIT_REFCNT();
|
||||
|
||||
// get the proper color from the look and feel code
|
||||
nsILookAndFeel * lookAndFeel;
|
||||
if (NS_OK == nsComponentManager::CreateInstance(kLookAndFeelCID, nsnull, kILookAndFeelIID, (void**)&lookAndFeel)) {
|
||||
lookAndFeel->GetColor(nsILookAndFeel::eColor_WindowBackground, mBackground);
|
||||
if (!sLookAndFeel) {
|
||||
if (NS_OK != nsComponentManager::CreateInstance(kLookAndFeelCID,
|
||||
nsnull, kILookAndFeelIID,
|
||||
(void**)&sLookAndFeel))
|
||||
sLookAndFeel = nsnull;
|
||||
}
|
||||
NS_RELEASE(lookAndFeel);
|
||||
|
||||
if (sLookAndFeel)
|
||||
sLookAndFeel->GetColor(nsILookAndFeel::eColor_WindowBackground,
|
||||
mBackground);
|
||||
|
||||
mWidget = nsnull;
|
||||
mParent = nsnull;
|
||||
mPreferredWidth = 0;
|
||||
@ -60,6 +67,7 @@ nsWidget::nsWidget()
|
||||
mOnDestroyCalled = PR_FALSE;
|
||||
mIsToplevel = PR_FALSE;
|
||||
mUpdateArea.SetRect(0, 0, 0, 0);
|
||||
sWidgetCount++;
|
||||
}
|
||||
|
||||
nsWidget::~nsWidget()
|
||||
@ -68,6 +76,9 @@ nsWidget::~nsWidget()
|
||||
if (nsnull != mWidget) {
|
||||
Destroy();
|
||||
}
|
||||
if (!sWidgetCount--) {
|
||||
NS_RELEASE_IF(sLookAndFeel);
|
||||
}
|
||||
}
|
||||
|
||||
NS_METHOD nsWidget::WidgetToScreen(const nsRect& aOldRect, nsRect& aNewRect)
|
||||
|
@ -221,6 +221,9 @@ protected:
|
||||
PRBool mShown;
|
||||
|
||||
PRUint32 mPreferredWidth, mPreferredHeight;
|
||||
private:
|
||||
static nsILookAndFeel *sLookAndFeel;
|
||||
static PRUint32 sWidgetCount;
|
||||
};
|
||||
|
||||
#endif /* nsWidget_h__ */
|
||||
|
Loading…
Reference in New Issue
Block a user