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':
|
||||
{
|
||||
int32 mode;
|
||||
if (message->FindInt32 ("mode", &mode) == B_OK)
|
||||
set_scheduler_mode(mode);
|
||||
BMenuItem* source;
|
||||
if (message->FindPointer("source", (void**)&source) != B_OK)
|
||||
break;
|
||||
if (!source->IsMarked())
|
||||
set_scheduler_mode(SCHEDULER_MODE_POWER_SAVING);
|
||||
else
|
||||
set_scheduler_mode(SCHEDULER_MODE_LOW_LATENCY);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -842,19 +846,13 @@ thread_popup(void *arg)
|
||||
}
|
||||
|
||||
// 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();
|
||||
for (unsigned int i = 0; i < modesCount; i++) {
|
||||
BMessage* m = new BMessage('Schd');
|
||||
m->AddInt32("mode", i);
|
||||
item = new BMenuItem(B_TRANSLATE(schedulerModes[i]), m);
|
||||
if ((uint32)currentMode == i)
|
||||
item->SetMarked(true);
|
||||
item->SetTarget(gPCView);
|
||||
addtopbottom(item);
|
||||
}
|
||||
BMessage* msg = new BMessage('Schd');
|
||||
item = new BMenuItem(B_TRANSLATE("Power saving"), msg);
|
||||
if ((uint32)currentMode == SCHEDULER_MODE_POWER_SAVING)
|
||||
item->SetMarked(true);
|
||||
item->SetTarget(gPCView);
|
||||
addtopbottom(item);
|
||||
addtopbottom(new BSeparatorItem());
|
||||
|
||||
if (!be_roster->IsRunning(kTrackerSig)) {
|
||||
|
||||
Reference in New Issue
Block a user