|
@@ -321,8 +321,8 @@ void MainWindow::run_backup_job(JobConfig config, std::string home_dir) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
fs::remove_all(temp_dir, ec);
|
|
fs::remove_all(temp_dir, ec);
|
|
|
- queue_log("__UNLOCK_UI__");
|
|
|
|
|
m_WorkerRunning = false;
|
|
m_WorkerRunning = false;
|
|
|
|
|
+ queue_log("__UNLOCK_UI__");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void MainWindow::run_restore_job(JobConfig config, std::string home_dir) {
|
|
void MainWindow::run_restore_job(JobConfig config, std::string home_dir) {
|
|
@@ -412,6 +412,7 @@ void MainWindow::run_restore_job(JobConfig config, std::string home_dir) {
|
|
|
settings->set_boolean("disable-user-extensions", false);
|
|
settings->set_boolean("disable-user-extensions", false);
|
|
|
}
|
|
}
|
|
|
fs::remove_all(temp_unpack, ec);
|
|
fs::remove_all(temp_unpack, ec);
|
|
|
|
|
+ m_WorkerRunning = false; // FINALLY FIXED THIS BLOODY FLAG
|
|
|
queue_log("__UNLOCK_UI__");
|
|
queue_log("__UNLOCK_UI__");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -520,11 +521,12 @@ bool MainWindow::extract_tar_archive(const std::string& ap, const std::string& d
|
|
|
|
|
|
|
|
if (!abs) {
|
|
if (!abs) {
|
|
|
std::string to_strip = "";
|
|
std::string to_strip = "";
|
|
|
- // Look at the archive name to figure out what base path we are stripping,
|
|
|
|
|
- // preventing sub-directories from triggering a false match.
|
|
|
|
|
|
|
+ // Look precisely at the archive name to match the exact stripping rule
|
|
|
if (ap.find("extensions") != std::string::npos) to_strip = "/extensions/";
|
|
if (ap.find("extensions") != std::string::npos) to_strip = "/extensions/";
|
|
|
- else if (ap.find("themes") != std::string::npos) to_strip = "/themes/";
|
|
|
|
|
- else if (ap.find("icons") != std::string::npos) to_strip = "/icons/";
|
|
|
|
|
|
|
+ else if (ap.find("themes_legacy") != std::string::npos) to_strip = "/.themes/";
|
|
|
|
|
+ else if (ap.find("themes_xdg") != std::string::npos) to_strip = "/themes/";
|
|
|
|
|
+ else if (ap.find("icons_legacy") != std::string::npos) to_strip = "/.icons/";
|
|
|
|
|
+ else if (ap.find("icons_xdg") != std::string::npos) to_strip = "/icons/";
|
|
|
|
|
|
|
|
if (!to_strip.empty()) {
|
|
if (!to_strip.empty()) {
|
|
|
size_t p = sp.find(to_strip);
|
|
size_t p = sp.find(to_strip);
|