added a "Restart the Desktop" button, untested
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17086 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -2,8 +2,7 @@ SubDir HAIKU_TOP src add-ons input_server devices keyboard ;
|
||||
|
||||
SetSubDirSupportedPlatformsBeOSCompatible ;
|
||||
|
||||
UsePrivateHeaders input ;
|
||||
UsePrivateHeaders kernel ;
|
||||
UsePrivateHeaders input kernel tracker ;
|
||||
UseArchHeaders $(TARGET_ARCH) ;
|
||||
|
||||
Addon <input>keyboard : input_server/devices :
|
||||
|
||||
@@ -18,7 +18,10 @@
|
||||
#include "TMListItem.h"
|
||||
#include "KeyboardInputDevice.h"
|
||||
|
||||
#include "tracker_private.h"
|
||||
|
||||
#include <Message.h>
|
||||
#include <Roster.h>
|
||||
#include <ScrollView.h>
|
||||
#include <Screen.h>
|
||||
#include <String.h>
|
||||
@@ -27,6 +30,7 @@
|
||||
const uint32 TM_CANCEL = 'TMca';
|
||||
const uint32 TM_FORCE_REBOOT = 'TMfr';
|
||||
const uint32 TM_KILL_APPLICATION = 'TMka';
|
||||
const uint32 TM_RESTART_DESKTOP = 'TMrd';
|
||||
const uint32 TM_SELECTED_TEAM = 'TMst';
|
||||
|
||||
#ifndef __HAIKU__
|
||||
@@ -165,6 +169,14 @@ TMView::TMView(BRect bounds, const char* name, uint32 resizeFlags,
|
||||
new BMessage(TM_FORCE_REBOOT), B_FOLLOW_LEFT | B_FOLLOW_BOTTOM);
|
||||
AddChild(forceReboot);
|
||||
|
||||
BRect restartRect = rect;
|
||||
restartRect.left = rect.right + 20;
|
||||
restartRect.right = restartRect.left + font.StringWidth("Restart the Desktop") + 20;
|
||||
BButton *fRestartButton = new BButton(restartRect, "restart", "Restart the Desktop",
|
||||
new BMessage(TM_RESTART_DESKTOP), B_FOLLOW_LEFT | B_FOLLOW_BOTTOM);
|
||||
AddChild(fRestartButton);
|
||||
fRestartButton->Hide();
|
||||
|
||||
rect.left += 4;
|
||||
rect.bottom = rect.top - 8;
|
||||
rect.top = fKillButton->Frame().bottom + 8;
|
||||
@@ -204,6 +216,14 @@ TMView::MessageReceived(BMessage *msg)
|
||||
UpdateList();
|
||||
break;
|
||||
}
|
||||
case TM_RESTART_DESKTOP: {
|
||||
fRestartButton->SetEnabled(false);
|
||||
if (!be_roster->IsRunning(kTrackerSignature))
|
||||
be_roster->Launch(kTrackerSignature);
|
||||
if (!be_roster->IsRunning(kDeskbarSignature))
|
||||
be_roster->Launch(kDeskbarSignature);
|
||||
break;
|
||||
}
|
||||
case TM_SELECTED_TEAM: {
|
||||
fKillButton->SetEnabled(fListView->CurrentSelection() >= 0);
|
||||
TMListItem *item = (TMListItem*)ListView()->ItemAt(
|
||||
@@ -279,6 +299,13 @@ TMView::UpdateList()
|
||||
|
||||
if (changed)
|
||||
fListView->Invalidate();
|
||||
|
||||
bool desktopRunning = be_roster->IsRunning(kTrackerSignature)
|
||||
&& be_roster->IsRunning(kDeskbarSignature);
|
||||
if (desktopRunning ^ fRestartButton->IsHidden())
|
||||
fRestartButton->Show();
|
||||
if (!desktopRunning)
|
||||
fRestartButton->SetEnabled(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ class TMView : public BBox {
|
||||
private:
|
||||
BListView *fListView;
|
||||
BButton *fKillButton;
|
||||
BButton *fRestartButton;
|
||||
TMDescView *fDescView;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user