Deskbar: Save String object instead of pointer
And add a SetLabel() that sets the truncated label when the label gets set. This will be useful so we can compare the truncated label to the normal label to tell if the label is truncated or not.
This commit is contained in:
parent
e9982f6828
commit
ae181f353b
@ -39,8 +39,6 @@ All rights reserved.
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <String.h>
|
||||
|
||||
#include "BarApp.h"
|
||||
#include "BarView.h"
|
||||
#include "ExpandoMenuBar.h"
|
||||
@ -56,31 +54,28 @@ const float kSwitchWidth = 12.0f;
|
||||
TTruncatableMenuItem::TTruncatableMenuItem(const char* label, BMessage* message,
|
||||
char shortcut, uint32 modifiers)
|
||||
:
|
||||
BMenuItem(label, message, shortcut, modifiers),
|
||||
fTruncatedString(new BString())
|
||||
BMenuItem(label, message, shortcut, modifiers)
|
||||
{
|
||||
fTruncatedString = label;
|
||||
}
|
||||
|
||||
|
||||
TTruncatableMenuItem::TTruncatableMenuItem(BMenu* menu, BMessage* message)
|
||||
:
|
||||
BMenuItem(menu, message),
|
||||
fTruncatedString(new BString())
|
||||
BMenuItem(menu, message)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
TTruncatableMenuItem::TTruncatableMenuItem(BMessage* data)
|
||||
:
|
||||
BMenuItem(data),
|
||||
fTruncatedString(new BString())
|
||||
BMenuItem(data)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
TTruncatableMenuItem::~TTruncatableMenuItem()
|
||||
{
|
||||
delete fTruncatedString;
|
||||
}
|
||||
|
||||
|
||||
@ -111,11 +106,22 @@ TTruncatableMenuItem::Label(float width)
|
||||
float labelWidth = menu->StringWidth(label);
|
||||
float offset = width - labelWidth;
|
||||
TruncateLabel(maxWidth - offset, truncatedLabel);
|
||||
fTruncatedString->SetTo(truncatedLabel);
|
||||
fTruncatedString.SetTo(truncatedLabel);
|
||||
free(truncatedLabel);
|
||||
return fTruncatedString->String();
|
||||
return fTruncatedString.String();
|
||||
}
|
||||
}
|
||||
|
||||
fTruncatedString.SetTo(label);
|
||||
|
||||
return label;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
TTruncatableMenuItem::SetLabel(const char* label)
|
||||
{
|
||||
fTruncatedString.SetTo(label);
|
||||
|
||||
BMenuItem::SetLabel(label);
|
||||
}
|
||||
|
@ -38,8 +38,8 @@ All rights reserved.
|
||||
|
||||
#include <MenuItem.h>
|
||||
|
||||
#include <String.h>
|
||||
|
||||
class BString;
|
||||
|
||||
class TTruncatableMenuItem : public BMenuItem {
|
||||
public:
|
||||
@ -52,8 +52,13 @@ public:
|
||||
virtual const char* Label();
|
||||
virtual const char* Label(float width);
|
||||
|
||||
virtual void SetLabel(const char* label);
|
||||
|
||||
const char* TruncatedLabel() const
|
||||
{ return fTruncatedString.String(); };
|
||||
|
||||
private:
|
||||
BString* fTruncatedString;
|
||||
BString fTruncatedString;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user