Tracker FindPanel: Make a copy of fDeviceIcon
... so that it gets deleted by destructor and not the original
This commit is contained in:
parent
4a319b9c40
commit
9d37e7411c
@ -69,7 +69,7 @@ class IconMenuItem : public PositionPassingMenuItem {
|
|||||||
virtual void DrawContent();
|
virtual void DrawContent();
|
||||||
virtual void SetMarked(bool mark);
|
virtual void SetMarked(bool mark);
|
||||||
|
|
||||||
virtual void SetIcon(BBitmap* icon) { fDeviceIcon = icon; };
|
virtual void SetIcon(BBitmap* icon);
|
||||||
BBitmap* Icon() const { return fDeviceIcon; };
|
BBitmap* Icon() const { return fDeviceIcon; };
|
||||||
|
|
||||||
virtual void SetIconSize(icon_size which) { fWhich = which; };
|
virtual void SetIconSize(icon_size which) { fWhich = which; };
|
||||||
|
@ -257,10 +257,12 @@ IconMenuItem::IconMenuItem(const char* label, BMessage* message, BBitmap* icon,
|
|||||||
icon_size which)
|
icon_size which)
|
||||||
:
|
:
|
||||||
PositionPassingMenuItem(label, message),
|
PositionPassingMenuItem(label, message),
|
||||||
fDeviceIcon(icon),
|
fDeviceIcon(NULL),
|
||||||
fHeightDelta(0),
|
fHeightDelta(0),
|
||||||
fWhich(which)
|
fWhich(which)
|
||||||
{
|
{
|
||||||
|
SetIcon(icon);
|
||||||
|
|
||||||
// IconMenuItem is used in synchronously invoked menus, make sure
|
// IconMenuItem is used in synchronously invoked menus, make sure
|
||||||
// we invoke with a timeout
|
// we invoke with a timeout
|
||||||
SetTimeout(kSynchMenuInvokeTimeout);
|
SetTimeout(kSynchMenuInvokeTimeout);
|
||||||
@ -505,3 +507,21 @@ IconMenuItem::SetMarked(bool mark)
|
|||||||
topLevelIconMenuItem->SetIcon(fDeviceIcon);
|
topLevelIconMenuItem->SetIcon(fDeviceIcon);
|
||||||
menu->Invalidate();
|
menu->Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
IconMenuItem::SetIcon(BBitmap* icon)
|
||||||
|
{
|
||||||
|
if (icon != NULL) {
|
||||||
|
if (fDeviceIcon != NULL)
|
||||||
|
delete fDeviceIcon;
|
||||||
|
|
||||||
|
fDeviceIcon = new BBitmap(BRect(0, 0, fWhich - 1, fWhich - 1),
|
||||||
|
icon->ColorSpace());
|
||||||
|
fDeviceIcon->SetBits(icon->Bits(), icon->BitsLength(), 0,
|
||||||
|
icon->ColorSpace());
|
||||||
|
} else {
|
||||||
|
delete fDeviceIcon;
|
||||||
|
fDeviceIcon = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user