mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 09:46:52 -05:00
Merge #17567: gui: remove macOS start on login code
27d82b63fb
gui: remove macOS start on login code (fanquake) Pull request description: The macOS startup item code was disabled for builds targeting macOS > `10.11` in #15208. Now that we require macOS `10.12` as a minimum (#17550), we can remove the startup item code entirely. The API we were using, `LSSharedFileListItemCopyResolvedURL`, `LSSharedFileListCopySnapshot` etc, was removed in macOS `10.12` SDK. ACKs for top commit: jonasschnelli: utACK27d82b63fb
jonasschnelli: Tested ACK27d82b63fb
- successfully compiled on 10.15.1 Tree-SHA512: 7420757b91c7820e6a63280887155394547134a9cebcf3721af0284da23292627f94cd431241e033075b3fd86d79ace3ebf1b25d17763acbf71e07a742395409
This commit is contained in:
commit
4fb82e916b
3 changed files with 3 additions and 87 deletions
|
@ -90,6 +90,8 @@ Low-level Changes section below.
|
|||
GUI changes
|
||||
-----------
|
||||
|
||||
- The "Start Bitcoin Core on system login" option has been removed on macOS.
|
||||
|
||||
Wallet
|
||||
------
|
||||
|
||||
|
|
|
@ -54,10 +54,7 @@
|
|||
#include <QUrlQuery>
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
#include <CoreServices/CoreServices.h>
|
||||
#include <QProcess>
|
||||
|
||||
void ForceActivation();
|
||||
|
@ -691,87 +688,6 @@ bool SetStartOnSystemStartup(bool fAutoStart)
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
#elif defined(Q_OS_MAC) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED <= 101100
|
||||
// based on: https://github.com/Mozketo/LaunchAtLoginController/blob/master/LaunchAtLoginController.m
|
||||
|
||||
LSSharedFileListItemRef findStartupItemInList(CFArrayRef listSnapshot, LSSharedFileListRef list, CFURLRef findUrl)
|
||||
{
|
||||
if (listSnapshot == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// loop through the list of startup items and try to find the bitcoin app
|
||||
for(int i = 0; i < CFArrayGetCount(listSnapshot); i++) {
|
||||
LSSharedFileListItemRef item = (LSSharedFileListItemRef)CFArrayGetValueAtIndex(listSnapshot, i);
|
||||
UInt32 resolutionFlags = kLSSharedFileListNoUserInteraction | kLSSharedFileListDoNotMountVolumes;
|
||||
CFURLRef currentItemURL = nullptr;
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= 10100
|
||||
if(&LSSharedFileListItemCopyResolvedURL)
|
||||
currentItemURL = LSSharedFileListItemCopyResolvedURL(item, resolutionFlags, nullptr);
|
||||
#if defined(MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED < 10100
|
||||
else
|
||||
LSSharedFileListItemResolve(item, resolutionFlags, ¤tItemURL, nullptr);
|
||||
#endif
|
||||
#else
|
||||
LSSharedFileListItemResolve(item, resolutionFlags, ¤tItemURL, nullptr);
|
||||
#endif
|
||||
|
||||
if(currentItemURL) {
|
||||
if (CFEqual(currentItemURL, findUrl)) {
|
||||
// found
|
||||
CFRelease(currentItemURL);
|
||||
return item;
|
||||
}
|
||||
CFRelease(currentItemURL);
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool GetStartOnSystemStartup()
|
||||
{
|
||||
CFURLRef bitcoinAppUrl = CFBundleCopyBundleURL(CFBundleGetMainBundle());
|
||||
if (bitcoinAppUrl == nullptr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
LSSharedFileListRef loginItems = LSSharedFileListCreate(nullptr, kLSSharedFileListSessionLoginItems, nullptr);
|
||||
CFArrayRef listSnapshot = LSSharedFileListCopySnapshot(loginItems, nullptr);
|
||||
bool res = (findStartupItemInList(listSnapshot, loginItems, bitcoinAppUrl) != nullptr);
|
||||
CFRelease(bitcoinAppUrl);
|
||||
CFRelease(loginItems);
|
||||
CFRelease(listSnapshot);
|
||||
return res;
|
||||
}
|
||||
|
||||
bool SetStartOnSystemStartup(bool fAutoStart)
|
||||
{
|
||||
CFURLRef bitcoinAppUrl = CFBundleCopyBundleURL(CFBundleGetMainBundle());
|
||||
if (bitcoinAppUrl == nullptr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
LSSharedFileListRef loginItems = LSSharedFileListCreate(nullptr, kLSSharedFileListSessionLoginItems, nullptr);
|
||||
CFArrayRef listSnapshot = LSSharedFileListCopySnapshot(loginItems, nullptr);
|
||||
LSSharedFileListItemRef foundItem = findStartupItemInList(listSnapshot, loginItems, bitcoinAppUrl);
|
||||
|
||||
if(fAutoStart && !foundItem) {
|
||||
// add bitcoin app to startup item list
|
||||
LSSharedFileListInsertItemURL(loginItems, kLSSharedFileListItemBeforeFirst, nullptr, nullptr, bitcoinAppUrl, nullptr, nullptr);
|
||||
}
|
||||
else if(!fAutoStart && foundItem) {
|
||||
// remove item
|
||||
LSSharedFileListItemRemove(loginItems, foundItem);
|
||||
}
|
||||
|
||||
CFRelease(bitcoinAppUrl);
|
||||
CFRelease(loginItems);
|
||||
CFRelease(listSnapshot);
|
||||
return true;
|
||||
}
|
||||
#pragma GCC diagnostic pop
|
||||
#else
|
||||
|
||||
bool GetStartOnSystemStartup() { return false; }
|
||||
|
|
|
@ -71,12 +71,10 @@ OptionsDialog::OptionsDialog(QWidget *parent, bool enableWallet) :
|
|||
#ifdef Q_OS_MAC
|
||||
/* remove Window tab on Mac */
|
||||
ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabWindow));
|
||||
#if defined(MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED > 101100
|
||||
/* hide launch at startup option if compiled against macOS > 10.11 (removed API) */
|
||||
/* hide launch at startup option on macOS */
|
||||
ui->bitcoinAtStartup->setVisible(false);
|
||||
ui->verticalLayout_Main->removeWidget(ui->bitcoinAtStartup);
|
||||
ui->verticalLayout_Main->removeItem(ui->horizontalSpacer_0_Main);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* remove Wallet tab in case of -disablewallet */
|
||||
|
|
Loading…
Add table
Reference in a new issue