ProcessController: use a single menu item for scheduler modes
Following the HIG, a single toggle item is enough as there are only two states. Fixes #10709
This commit is contained in:
@@ -471,9 +471,13 @@ ProcessController::MessageReceived(BMessage *message)
|
|||||||
|
|
||||||
case 'Schd':
|
case 'Schd':
|
||||||
{
|
{
|
||||||
int32 mode;
|
BMenuItem* source;
|
||||||
if (message->FindInt32 ("mode", &mode) == B_OK)
|
if (message->FindPointer("source", (void**)&source) != B_OK)
|
||||||
set_scheduler_mode(mode);
|
break;
|
||||||
|
if (!source->IsMarked())
|
||||||
|
set_scheduler_mode(SCHEDULER_MODE_POWER_SAVING);
|
||||||
|
else
|
||||||
|
set_scheduler_mode(SCHEDULER_MODE_LOW_LATENCY);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -842,19 +846,13 @@ thread_popup(void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Scheduler modes
|
// Scheduler modes
|
||||||
static const char* schedulerModes[] = { B_TRANSLATE_MARK("Low latency"),
|
|
||||||
B_TRANSLATE_MARK("Power saving") };
|
|
||||||
unsigned int modesCount = sizeof(schedulerModes) / sizeof(const char*);
|
|
||||||
int32 currentMode = get_scheduler_mode();
|
int32 currentMode = get_scheduler_mode();
|
||||||
for (unsigned int i = 0; i < modesCount; i++) {
|
BMessage* msg = new BMessage('Schd');
|
||||||
BMessage* m = new BMessage('Schd');
|
item = new BMenuItem(B_TRANSLATE("Power saving"), msg);
|
||||||
m->AddInt32("mode", i);
|
if ((uint32)currentMode == SCHEDULER_MODE_POWER_SAVING)
|
||||||
item = new BMenuItem(B_TRANSLATE(schedulerModes[i]), m);
|
item->SetMarked(true);
|
||||||
if ((uint32)currentMode == i)
|
item->SetTarget(gPCView);
|
||||||
item->SetMarked(true);
|
addtopbottom(item);
|
||||||
item->SetTarget(gPCView);
|
|
||||||
addtopbottom(item);
|
|
||||||
}
|
|
||||||
addtopbottom(new BSeparatorItem());
|
addtopbottom(new BSeparatorItem());
|
||||||
|
|
||||||
if (!be_roster->IsRunning(kTrackerSig)) {
|
if (!be_roster->IsRunning(kTrackerSig)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user