mirror of
https://invent.kde.org/system/dolphin
synced 2024-08-22 01:40:02 +00:00
Avoid crash on start when help actions are restricted through the Kiosk system
KHelpMenu may not create some actions, so check for nullptr before setting "What's this?" text.
This commit is contained in:
parent
cb9142a9bb
commit
0ac57fbe90
|
@ -1687,8 +1687,13 @@ void DolphinMainWindow::setupActions()
|
|||
m_helpMenu = new KHelpMenu(nullptr);
|
||||
m_helpMenu->menu()->installEventFilter(this);
|
||||
// remove duplicate shortcuts
|
||||
m_helpMenu->action(KHelpMenu::menuHelpContents)->setShortcut(QKeySequence());
|
||||
m_helpMenu->action(KHelpMenu::menuWhatsThis)->setShortcut(QKeySequence());
|
||||
auto removeHelpActionShortcut = [this](KHelpMenu::MenuId menuId) {
|
||||
if (auto *action = m_helpMenu->action(menuId)) {
|
||||
action->setShortcut(QKeySequence());
|
||||
}
|
||||
};
|
||||
removeHelpActionShortcut(KHelpMenu::menuHelpContents);
|
||||
removeHelpActionShortcut(KHelpMenu::menuWhatsThis);
|
||||
|
||||
// not in menu actions
|
||||
QList<QKeySequence> nextTabKeys = KStandardShortcut::tabNext();
|
||||
|
@ -2284,6 +2289,18 @@ void DolphinMainWindow::setupWhatsThis()
|
|||
// StandardAction separately because both are used in different locations.
|
||||
// m_helpMenu is only used for createControlButton() button.
|
||||
|
||||
auto setStandardActionWhatsThis = [this](KStandardAction::StandardAction actionId,
|
||||
const QString &whatsThis) {
|
||||
if (auto *action = actionCollection()->action(KStandardAction::name(actionId))) {
|
||||
action->setWhatsThis(whatsThis);
|
||||
}
|
||||
};
|
||||
auto setHelpActionWhatsThis = [this](KHelpMenu::MenuId menuId, const QString &whatsThis) {
|
||||
if (auto *action = m_helpMenu->action(menuId)) {
|
||||
action->setWhatsThis(whatsThis);
|
||||
}
|
||||
};
|
||||
|
||||
// Links do not work within the Menubar so texts without links are provided there.
|
||||
|
||||
// i18n: If the external link isn't available in your language you should
|
||||
|
@ -2294,13 +2311,12 @@ void DolphinMainWindow::setupWhatsThis()
|
|||
const QString whatsThisHelpContents = xi18nc("@info:whatsthis handbook",
|
||||
"<para>This opens the Handbook for this application. It provides "
|
||||
"explanations for every part of <emphasis>Dolphin</emphasis>.</para>");
|
||||
actionCollection()->action(KStandardAction::name(KStandardAction::HelpContents))
|
||||
->setWhatsThis(whatsThisHelpContents
|
||||
setStandardActionWhatsThis(KStandardAction::HelpContents, whatsThisHelpContents
|
||||
+ xi18nc("@info:whatsthis second half of handbook hb text without link",
|
||||
"<para>If you want more elaborate introductions to the "
|
||||
"different features of <emphasis>Dolphin</emphasis> "
|
||||
"go to the KDE UserBase Wiki.</para>"));
|
||||
m_helpMenu->action(KHelpMenu::menuHelpContents)->setWhatsThis(whatsThisHelpContents
|
||||
setHelpActionWhatsThis(KHelpMenu::menuHelpContents, whatsThisHelpContents
|
||||
+ xi18nc("@info:whatsthis second half of handbook text with link",
|
||||
"<para>If you want more elaborate introductions to the "
|
||||
"different features of <emphasis>Dolphin</emphasis> "
|
||||
|
@ -2312,8 +2328,7 @@ void DolphinMainWindow::setupWhatsThis()
|
|||
"using right now! Click it, then click any component of this "
|
||||
"application to ask \"What's this?\" about it. The mouse cursor "
|
||||
"will change appearance if no help is available for a spot.</para>");
|
||||
actionCollection()->action(KStandardAction::name(KStandardAction::WhatsThis))
|
||||
->setWhatsThis(whatsThisWhatsThis
|
||||
setStandardActionWhatsThis(KStandardAction::WhatsThis, whatsThisWhatsThis
|
||||
+ xi18nc("@info:whatsthis second half of whatsthis button text without link",
|
||||
"<para>There are two other ways to get help for this application: The "
|
||||
"<interface>Dolphin Handbook</interface> in the <interface>Help"
|
||||
|
@ -2321,7 +2336,7 @@ void DolphinMainWindow::setupWhatsThis()
|
|||
"article about <emphasis>File Management</emphasis> online."
|
||||
"</para><para>The \"What's this?\" help is "
|
||||
"missing in most other windows so don't get too used to this.</para>"));
|
||||
m_helpMenu->action(KHelpMenu::menuWhatsThis)->setWhatsThis(whatsThisWhatsThis
|
||||
setHelpActionWhatsThis(KHelpMenu::menuWhatsThis, whatsThisWhatsThis
|
||||
+ xi18nc("@info:whatsthis second half of whatsthis button text with link",
|
||||
"<para>There are two other ways to get help: "
|
||||
"The <link url='help:/dolphin/index.html'>Dolphin Handbook</link> and "
|
||||
|
@ -2332,9 +2347,8 @@ void DolphinMainWindow::setupWhatsThis()
|
|||
const QString whatsThisReportBug = xi18nc("@info:whatsthis","<para>This opens a "
|
||||
"window that will guide you through reporting errors or flaws "
|
||||
"in this application or in other KDE software.</para>");
|
||||
actionCollection()->action(KStandardAction::name(KStandardAction::ReportBug))
|
||||
->setWhatsThis(whatsThisReportBug);
|
||||
m_helpMenu->action(KHelpMenu::menuReportBug)->setWhatsThis(whatsThisReportBug
|
||||
setStandardActionWhatsThis(KStandardAction::ReportBug, whatsThisReportBug);
|
||||
setHelpActionWhatsThis(KHelpMenu::menuReportBug, whatsThisReportBug
|
||||
+ xi18nc("@info:whatsthis second half of reportbug text with link",
|
||||
"<para>High-quality bug reports are much appreciated. To learn "
|
||||
"how to make your bug report as effective as possible "
|
||||
|
@ -2351,33 +2365,30 @@ void DolphinMainWindow::setupWhatsThis()
|
|||
"require money like servers, contributor meetings, etc.</para>"
|
||||
"<para><emphasis>KDE e.V.</emphasis> is the non-profit "
|
||||
"organization behind the KDE community.</para>");
|
||||
actionCollection()->action(KStandardAction::name(KStandardAction::Donate))
|
||||
->setWhatsThis(whatsThisDonate);
|
||||
m_helpMenu->action(KHelpMenu::menuDonate)->setWhatsThis(whatsThisDonate);
|
||||
setStandardActionWhatsThis(KStandardAction::Donate, whatsThisDonate);
|
||||
setHelpActionWhatsThis(KHelpMenu::menuDonate, whatsThisDonate);
|
||||
|
||||
const QString whatsThisSwitchLanguage = xi18nc("@info:whatsthis",
|
||||
"With this you can change the language this application uses."
|
||||
"<nl/>You can even set secondary languages which will be used "
|
||||
"if texts are not available in your preferred language.");
|
||||
actionCollection()->action(KStandardAction::name(KStandardAction::SwitchApplicationLanguage))
|
||||
->setWhatsThis(whatsThisSwitchLanguage);
|
||||
m_helpMenu->action(KHelpMenu::menuSwitchLanguage)->setWhatsThis(whatsThisSwitchLanguage);
|
||||
setStandardActionWhatsThis(KStandardAction::SwitchApplicationLanguage,
|
||||
whatsThisSwitchLanguage);
|
||||
setHelpActionWhatsThis(KHelpMenu::menuSwitchLanguage, whatsThisSwitchLanguage);
|
||||
|
||||
const QString whatsThisAboutApp = xi18nc("@info:whatsthis","This opens a "
|
||||
"window that informs you about the version, license, "
|
||||
"used libraries and maintainers of this application.");
|
||||
actionCollection()->action(KStandardAction::name(KStandardAction::AboutApp))
|
||||
->setWhatsThis(whatsThisAboutApp);
|
||||
m_helpMenu->action(KHelpMenu::menuAboutApp)->setWhatsThis(whatsThisAboutApp);
|
||||
setStandardActionWhatsThis(KStandardAction::AboutApp, whatsThisAboutApp);
|
||||
setHelpActionWhatsThis(KHelpMenu::menuAboutApp, whatsThisAboutApp);
|
||||
|
||||
const QString whatsThisAboutKDE = xi18nc("@info:whatsthis","This opens a "
|
||||
"window with information about <emphasis>KDE</emphasis>. "
|
||||
"The KDE community are the people behind this free software."
|
||||
"<nl/>If you like using this application but don't know "
|
||||
"about KDE or want to see a cute dragon have a look!");
|
||||
actionCollection()->action(KStandardAction::name(KStandardAction::AboutKDE))
|
||||
->setWhatsThis(whatsThisAboutKDE);
|
||||
m_helpMenu->action(KHelpMenu::menuAboutKDE)->setWhatsThis(whatsThisAboutKDE);
|
||||
setStandardActionWhatsThis(KStandardAction::AboutKDE, whatsThisAboutKDE);
|
||||
setHelpActionWhatsThis(KHelpMenu::menuAboutKDE, whatsThisAboutKDE);
|
||||
}
|
||||
|
||||
bool DolphinMainWindow::addHamburgerMenuToToolbar()
|
||||
|
|
Loading…
Reference in a new issue