Also check if there are active process when closing a tab.
This completes the work needed to close ticket #3745 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39329 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
ceee0a32a4
commit
190806e61f
@ -43,7 +43,6 @@
|
|||||||
#include "TermScrollView.h"
|
#include "TermScrollView.h"
|
||||||
#include "TermView.h"
|
#include "TermView.h"
|
||||||
|
|
||||||
|
|
||||||
const static int32 kMaxTabs = 6;
|
const static int32 kMaxTabs = 6;
|
||||||
const static int32 kTermViewOffset = 3;
|
const static int32 kTermViewOffset = 3;
|
||||||
|
|
||||||
@ -232,18 +231,22 @@ TermWindow::_InitWindow()
|
|||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
TermWindow::QuitRequested()
|
TermWindow::_CanClose(int32 index)
|
||||||
{
|
{
|
||||||
bool warnOnExit = PrefHandler::Default()->getBool(PREF_WARN_ON_EXIT);
|
bool warnOnExit = PrefHandler::Default()->getBool(PREF_WARN_ON_EXIT);
|
||||||
|
|
||||||
if (!warnOnExit)
|
if (!warnOnExit)
|
||||||
return BWindow::QuitRequested();
|
return true;
|
||||||
|
|
||||||
bool isBusy = false;
|
bool isBusy = false;
|
||||||
for (int32 i = 0; i < fSessions.CountItems(); i++) {
|
if (index != -1)
|
||||||
if (_TermViewAt(i)->IsShellBusy()) {
|
isBusy = _TermViewAt(index)->IsShellBusy();
|
||||||
isBusy = true;
|
else {
|
||||||
break;
|
for (int32 i = 0; i < fSessions.CountItems(); i++) {
|
||||||
|
if (_TermViewAt(i)->IsShellBusy()) {
|
||||||
|
isBusy = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,6 +261,16 @@ TermWindow::QuitRequested()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
TermWindow::QuitRequested()
|
||||||
|
{
|
||||||
|
if (!_CanClose(-1))
|
||||||
|
return false;
|
||||||
|
|
||||||
BMessage position = BMessage(MSG_SAVE_WINDOW_POSITION);
|
BMessage position = BMessage(MSG_SAVE_WINDOW_POSITION);
|
||||||
position.AddRect("rect", Frame());
|
position.AddRect("rect", Frame());
|
||||||
position.AddInt32("workspaces", Workspaces());
|
position.AddInt32("workspaces", Workspaces());
|
||||||
@ -900,6 +913,8 @@ void
|
|||||||
TermWindow::_RemoveTab(int32 index)
|
TermWindow::_RemoveTab(int32 index)
|
||||||
{
|
{
|
||||||
if (fSessions.CountItems() > 1) {
|
if (fSessions.CountItems() > 1) {
|
||||||
|
if (!_CanClose(index))
|
||||||
|
return;
|
||||||
if (Session* session = (Session*)fSessions.RemoveItem(index)) {
|
if (Session* session = (Session*)fSessions.RemoveItem(index)) {
|
||||||
if (fSessions.CountItems() == 1) {
|
if (fSessions.CountItems() == 1) {
|
||||||
fTabView->SetScrollView(dynamic_cast<BScrollView*>(
|
fTabView->SetScrollView(dynamic_cast<BScrollView*>(
|
||||||
|
@ -80,6 +80,7 @@ private:
|
|||||||
void _DoPrint();
|
void _DoPrint();
|
||||||
void _AddTab(Arguments *args);
|
void _AddTab(Arguments *args);
|
||||||
void _RemoveTab(int32 index);
|
void _RemoveTab(int32 index);
|
||||||
|
bool _CanClose(int32 index);
|
||||||
TermViewContainerView* _ActiveTermViewContainerView() const;
|
TermViewContainerView* _ActiveTermViewContainerView() const;
|
||||||
TermViewContainerView* _TermViewContainerViewAt(int32 index) const;
|
TermViewContainerView* _TermViewContainerViewAt(int32 index) const;
|
||||||
TermView* _ActiveTermView() const;
|
TermView* _ActiveTermView() const;
|
||||||
|
Loading…
Reference in New Issue
Block a user