From 718f6ae321b507dbb5bca737a1d1d486b2b41dc5 Mon Sep 17 00:00:00 2001 From: Francois Andriot Date: Sun, 19 May 2013 16:09:35 +0200 Subject: [PATCH] Add tooltip support in KMenu --- kcontrol/kicker/menutab.ui | 14 ++++++++++++++ kcontrol/kicker/menutab_impl.cpp | 12 ++++++++++++ kicker/kicker/ui/service_mnu.cpp | 18 ++++++++++++++++++ kicker/kicker/ui/service_mnu.h | 1 + kicker/libkicker/kickerSettings.kcfg | 5 +++++ 5 files changed, 50 insertions(+) diff --git a/kcontrol/kicker/menutab.ui b/kcontrol/kicker/menutab.ui index 3c06ddfd4..e6b17c492 100644 --- a/kcontrol/kicker/menutab.ui +++ b/kcontrol/kicker/menutab.ui @@ -242,6 +242,20 @@ Open menu on mouse hover + + + kcfg_UseTooltip + + + Show T&ooltip + + + false + + + <qt>When this option is selected a tooltip will appear on the KMenu items. + + kcfg_UseSidePixmap diff --git a/kcontrol/kicker/menutab_impl.cpp b/kcontrol/kicker/menutab_impl.cpp index 2c259829f..5ba9dd54f 100644 --- a/kcontrol/kicker/menutab_impl.cpp +++ b/kcontrol/kicker/menutab_impl.cpp @@ -171,10 +171,12 @@ void MenuTab::load( bool useDefaults ) void MenuTab::menuStyleChanged() { + // Classic K Menu if (m_comboMenuStyle->currentItem()==1) { m_openOnHover->setEnabled(false); m_subMenus->setEnabled(true); kcfg_UseSidePixmap->setEnabled(true); + kcfg_UseTooltip->setEnabled(true); kcfg_MenuEntryFormat->setEnabled(true); kcfg_RecentVsOften->setEnabled(true); m_showFrequent->setEnabled(true); @@ -183,10 +185,13 @@ void MenuTab::menuStyleChanged() maxrecentdocs->setEnabled(true); kcfg_NumVisibleEntries->setEnabled(true); } + + // Kickoff Menu else { m_openOnHover->setEnabled(true); m_subMenus->setEnabled(false); kcfg_UseSidePixmap->setEnabled(false); + kcfg_UseTooltip->setEnabled(false); kcfg_MenuEntryFormat->setEnabled(false); kcfg_RecentVsOften->setEnabled(false); m_showFrequent->setEnabled(false); @@ -261,6 +266,13 @@ void MenuTab::save() forceRestart = true; } + bool tooltipsetting = kcfg_UseTooltip->isChecked(); + bool oldtooltipsetting = c->readBoolEntry("UseTooltip", false); + + if (tooltipsetting != oldtooltipsetting) { + forceRestart = true; + } + // Save KMenu settings c->setGroup("KMenu"); c->writeEntry("CustomIcon", m_kmenu_icon); diff --git a/kicker/kicker/ui/service_mnu.cpp b/kicker/kicker/ui/service_mnu.cpp index 6e3d7beda..ed8b4edda 100644 --- a/kicker/kicker/ui/service_mnu.cpp +++ b/kicker/kicker/ui/service_mnu.cpp @@ -27,6 +27,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include #include +#include #include #include @@ -70,6 +71,7 @@ PanelServiceMenu::PanelServiceMenu(const TQString & label, const TQString & relP connect(KSycoca::self(), TQT_SIGNAL(databaseChanged()), TQT_SLOT(slotClearOnClose())); connect(this, TQT_SIGNAL(aboutToHide()), this, TQT_SLOT(slotClose())); + connect(this, TQT_SIGNAL(highlighted(int)), this, TQT_SLOT(slotSetTooltip(int))); } PanelServiceMenu::~PanelServiceMenu() @@ -1006,3 +1008,19 @@ void PanelServiceMenu::updateRecentlyUsedApps(KService::Ptr &service) RecentlyLaunchedApps::the().m_bNeedToUpdate = true; } +void PanelServiceMenu::slotSetTooltip(int id) +{ + TQToolTip::remove(this); + if (KickerSettings::useTooltip() && entryMap_.contains(id) && entryMap_[id]->isType(KST_KService)) { + KService::Ptr s(static_cast(entryMap_[id].data())); + TQString text; + if (!s->genericName().isEmpty()) { + text = s->genericName(); + } + if (text.isEmpty() && !s->comment().isEmpty()) { + text = s->comment(); + } + TQToolTip::add(this, i18n(text.utf8())); + } +} + diff --git a/kicker/kicker/ui/service_mnu.h b/kicker/kicker/ui/service_mnu.h index 89e66937d..9cbfaa068 100644 --- a/kicker/kicker/ui/service_mnu.h +++ b/kicker/kicker/ui/service_mnu.h @@ -81,6 +81,7 @@ protected slots: virtual void slotClear(); virtual void configChanged(); virtual void slotClose(); + void slotSetTooltip(int id); void slotDragObjectDestroyed(); // for use in Add Applicaton To Panel diff --git a/kicker/libkicker/kickerSettings.kcfg b/kicker/libkicker/kickerSettings.kcfg index c1c4f19a5..4a84885d7 100644 --- a/kicker/libkicker/kickerSettings.kcfg +++ b/kicker/libkicker/kickerSettings.kcfg @@ -359,6 +359,11 @@ true + + + false + + true