Fixed issue with incosistent UI state when closing a workspace
Simplified workspace refresh logic FossilOrigin-Name: 2e0cbf44fd99ae2c1155857c79d0c09be9897483
This commit is contained in:
parent
dc072a8219
commit
73731923d3
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
||||
C CloneDialog:\sFixed\sincorrect\sparsing\sfor\slocal\srepositories\nCloneDialog:\sFixed\sincorrect\smissing\ssuffix\sdetection\nWe\snow\spass\slocal\srepository\surls\sas\slocal\spaths\sto\sfossil,\sin\sorder\sto\sovercome\sbuggy\sbehavior\sof\sQUrl\sfor\sWindows\spaths
|
||||
D 2015-08-26T19:56:14.906
|
||||
C Fixed\sissue\swith\sincosistent\sUI\sstate\swhen\sclosing\sa\sworkspace\nSimplified\sworkspace\srefresh\slogic
|
||||
D 2015-08-26T20:28:00.267
|
||||
F .fossil-settings/manifest a09a968bf05a50058f3ad50132730b719bc39e76
|
||||
F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35
|
||||
F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b
|
||||
@ -232,8 +232,8 @@ F src/FslSettingsDialog.cpp e00907d493fba469e48a008aecda88426350b5ac
|
||||
F src/FslSettingsDialog.h dfe2a61884a55a74cbb9206b6f6b482b979725e7
|
||||
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
|
||||
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
|
||||
F src/MainWindow.cpp 47aa96182c3a005d27295ef52e351f57a79721da
|
||||
F src/MainWindow.h f4cffbe4d360d30aa2eeaa25fc6d50d0a39c617f
|
||||
F src/MainWindow.cpp 28f0155821d42c645c99fdd5214344c177cea3bc
|
||||
F src/MainWindow.h 15f703522d1d6cd6239c8c8f037d158870b6b0b9
|
||||
F src/RemoteDialog.cpp 8540cc5e2e41c4127ed8a028d84691604fa6ecac
|
||||
F src/RemoteDialog.h 5e0438c2bd7c79b1bb44bfbd58c2181b544a9e5d
|
||||
F src/RevisionDialog.cpp e58c4f8a704f00addebb15d521b76620fdafda79
|
||||
@ -261,7 +261,7 @@ F ui/MainWindow.ui e2a18caa7482b3ee0dff477592cdc9574b35fe4f
|
||||
F ui/RemoteDialog.ui 95a4750d972ed8c49bb10b95db91ff16cfe2dd0b
|
||||
F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd
|
||||
F ui/SettingsDialog.ui 2e1b6ce7a49100088c5649292c1319e62e0302e1
|
||||
P e574454625a7701da9d1959fa72e54036d5ab7c3
|
||||
R edb709028da6b5b7318a59278b5a9c29
|
||||
P afa9b2538a0bfa258104a979eadce28c099e9848
|
||||
R 8e7f8d9d9b9c83f269cd7044b0450be8
|
||||
U Kostas
|
||||
Z 791f9cfa7aba39378f947f3aabef881e
|
||||
Z 3db267354ced0e1a65fb38289663a642
|
||||
|
@ -1 +1 @@
|
||||
afa9b2538a0bfa258104a979eadce28c099e9848
|
||||
2e0cbf44fd99ae2c1155857c79d0c09be9897483
|
@ -648,105 +648,112 @@ void MainWindow::enableActions(bool on)
|
||||
ui->actionCreateBranch,
|
||||
ui->actionMergeBranch,
|
||||
ui->actionFossilSettings,
|
||||
ui->actionViewAll,
|
||||
ui->actionViewAsFolders,
|
||||
ui->actionViewAsList,
|
||||
ui->actionViewIgnored,
|
||||
ui->actionViewModifedOnly,
|
||||
ui->actionViewModified,
|
||||
ui->actionViewUnchanged,
|
||||
ui->actionViewUnknown
|
||||
};
|
||||
|
||||
for(size_t i=0; i<COUNTOF(actions); ++i)
|
||||
actions[i]->setEnabled(on);
|
||||
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
bool MainWindow::refresh()
|
||||
{
|
||||
QString title = "Fuel";
|
||||
|
||||
loadFossilSettings();
|
||||
|
||||
bool valid = scanWorkspace();
|
||||
if(valid)
|
||||
{
|
||||
const QString &project_name = getWorkspace().getProjectName();
|
||||
if(!project_name.isEmpty())
|
||||
title += " - " + project_name;
|
||||
}
|
||||
|
||||
enableActions(valid);
|
||||
setWindowTitle(title);
|
||||
return valid;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
bool MainWindow::scanWorkspace()
|
||||
{
|
||||
setBusy(true);
|
||||
bool valid = true;
|
||||
|
||||
// Load repository info
|
||||
RepoStatus st = fossil().getRepoStatus();
|
||||
QString status;
|
||||
|
||||
if(st==REPO_NOT_FOUND)
|
||||
{
|
||||
setStatus(tr("No workspace detected."));
|
||||
enableActions(false);
|
||||
getWorkspace().getFileModel().removeRows(0, getWorkspace().getFileModel().rowCount());
|
||||
getWorkspace().getTreeModel().removeRows(0, getWorkspace().getFileModel().rowCount());
|
||||
setWindowTitle(title);
|
||||
return false;
|
||||
status = tr("No workspace detected.");
|
||||
valid = false;
|
||||
}
|
||||
else if(st==REPO_OLD_SCHEMA)
|
||||
{
|
||||
setStatus(tr("Old repository schema detected. Consider running 'fossil rebuild'"));
|
||||
enableActions(false);
|
||||
getWorkspace().getFileModel().removeRows(0, getWorkspace().getFileModel().rowCount());
|
||||
getWorkspace().getTreeModel().removeRows(0, getWorkspace().getFileModel().rowCount());
|
||||
setWindowTitle(title);
|
||||
return true;
|
||||
status = tr("Old repository schema detected. Consider running 'fossil rebuild'");
|
||||
valid = false;
|
||||
}
|
||||
|
||||
loadFossilSettings();
|
||||
scanWorkspace();
|
||||
setStatus("");
|
||||
enableActions(true);
|
||||
|
||||
const QString &project_name = getWorkspace().getProjectName();
|
||||
if(!project_name.isEmpty())
|
||||
title += " - " + project_name;
|
||||
|
||||
setWindowTitle(title);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void MainWindow::scanWorkspace()
|
||||
{
|
||||
setBusy(true);
|
||||
|
||||
static const QRegExp REGEX_GLOB_LIST(",|\\n", Qt::CaseSensitive);
|
||||
|
||||
QStringList ignore_patterns;
|
||||
|
||||
// Determine ignored file patterns
|
||||
{
|
||||
QString ignore_list = settings.GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString().trimmed();
|
||||
|
||||
// Read patterns from versionable file if it exists
|
||||
QFile ignored_file(getWorkspace().getPath() + PATH_SEPARATOR ".fossil-settings" PATH_SEPARATOR "ignore-glob");
|
||||
|
||||
if(ignored_file.open(QFile::ReadOnly))
|
||||
{
|
||||
ignore_list = ignored_file.readAll();
|
||||
ignored_file.close();
|
||||
}
|
||||
|
||||
if(!ignore_list.isEmpty())
|
||||
ignore_patterns = ignore_list.split(REGEX_GLOB_LIST, QString::SkipEmptyParts);
|
||||
|
||||
TrimStringList(ignore_patterns);
|
||||
}
|
||||
|
||||
getWorkspace().scanWorkspace(ui->actionViewUnknown->isChecked(),
|
||||
ui->actionViewIgnored->isChecked(),
|
||||
ui->actionViewModified->isChecked(),
|
||||
ui->actionViewUnchanged->isChecked(),
|
||||
ignore_patterns,
|
||||
uiCallback,
|
||||
operationAborted
|
||||
);
|
||||
updateWorkspaceView();
|
||||
updateFileView();
|
||||
|
||||
// Build default versions list
|
||||
versionList.clear();
|
||||
versionList += getWorkspace().getBranches();
|
||||
versionList += getWorkspace().getTags().keys();
|
||||
|
||||
selectedTags.clear();
|
||||
selectedBranches.clear();
|
||||
|
||||
if(valid)
|
||||
{
|
||||
// Determine ignored file patterns
|
||||
QStringList ignore_patterns;
|
||||
{
|
||||
static const QRegExp REGEX_GLOB_LIST(",|\\n", Qt::CaseSensitive);
|
||||
|
||||
QString ignore_list = settings.GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString().trimmed();
|
||||
|
||||
// Read patterns from versionable file if it exists
|
||||
QFile ignored_file(getWorkspace().getPath() + PATH_SEPARATOR ".fossil-settings" PATH_SEPARATOR "ignore-glob");
|
||||
|
||||
if(ignored_file.open(QFile::ReadOnly))
|
||||
{
|
||||
ignore_list = ignored_file.readAll();
|
||||
ignored_file.close();
|
||||
}
|
||||
|
||||
if(!ignore_list.isEmpty())
|
||||
ignore_patterns = ignore_list.split(REGEX_GLOB_LIST, QString::SkipEmptyParts);
|
||||
|
||||
TrimStringList(ignore_patterns);
|
||||
}
|
||||
|
||||
getWorkspace().scanWorkspace(ui->actionViewUnknown->isChecked(),
|
||||
ui->actionViewIgnored->isChecked(),
|
||||
ui->actionViewModified->isChecked(),
|
||||
ui->actionViewUnchanged->isChecked(),
|
||||
ignore_patterns,
|
||||
uiCallback,
|
||||
operationAborted
|
||||
);
|
||||
|
||||
// Build default versions list
|
||||
versionList += getWorkspace().getBranches();
|
||||
versionList += getWorkspace().getTags().keys();
|
||||
lblTags->setText(" " + getWorkspace().getActiveTags().join(" ") + " ");
|
||||
}
|
||||
|
||||
updateWorkspaceView();
|
||||
updateFileView();
|
||||
|
||||
setStatus(status);
|
||||
lblTags->setVisible(valid);
|
||||
|
||||
setBusy(false);
|
||||
setStatus("");
|
||||
lblTags->setText(" " + getWorkspace().getActiveTags().join(" ") + " ");
|
||||
lblTags->setVisible(true);
|
||||
return valid;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
|
||||
private:
|
||||
bool refresh();
|
||||
void scanWorkspace();
|
||||
bool scanWorkspace();
|
||||
void applySettings();
|
||||
void updateSettings();
|
||||
void updateRevision(const QString& revision);
|
||||
|
Loading…
x
Reference in New Issue
Block a user