* [gentoo-commits] repo/gentoo:master commit in: lxqt-base/lxqt-panel/files/, lxqt-base/lxqt-panel/
@ 2016-01-02 23:26 Jauhien Piatlicki
0 siblings, 0 replies; 3+ messages in thread
From: Jauhien Piatlicki @ 2016-01-02 23:26 UTC (permalink / raw
To: gentoo-commits
commit: 8db4e48bfd99254feaa47095a96d3c994b5b454a
Author: Jauhien Piatlicki <jauhien <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 2 23:24:32 2016 +0000
Commit: Jauhien Piatlicki <jauhien <AT> gentoo <DOT> org>
CommitDate: Sat Jan 2 23:27:40 2016 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8db4e48b
lxqt-base/lxqt-panel: backport fix for LXQT issue 871
See https://github.com/lxde/lxqt/issues/871
and https://github.com/lxde/lxqt-panel/pull/275
Package-Manager: portage-2.2.26
.../files/lxqt-panel-0.10.0-autohide.patch | 625 +++++++++++++++++++++
lxqt-base/lxqt-panel/lxqt-panel-0.10.0-r1.ebuild | 82 +++
2 files changed, 707 insertions(+)
diff --git a/lxqt-base/lxqt-panel/files/lxqt-panel-0.10.0-autohide.patch b/lxqt-base/lxqt-panel/files/lxqt-panel-0.10.0-autohide.patch
new file mode 100644
index 0000000..5f2bbda
--- /dev/null
+++ b/lxqt-base/lxqt-panel/files/lxqt-panel-0.10.0-autohide.patch
@@ -0,0 +1,625 @@
+Patch for autohide issue https://github.com/lxde/lxqt/issues/871
+taken from https://github.com/lxde/lxqt-panel/pull/275
+
+diff --git panel/CMakeLists.txt panel/CMakeLists.txt
+index 4e23b53..a7f8176 100644
+--- panel/CMakeLists.txt
++++ panel/CMakeLists.txt
+@@ -2,6 +2,7 @@ set(PROJECT lxqt-panel)
+
+ set(PRIV_HEADERS
+ panelpluginsmodel.h
++ windownotifier.h
+ lxqtpanel.h
+ lxqtpanelapplication.h
+ lxqtpanellayout.h
+@@ -26,6 +27,7 @@ set(PUB_HEADERS
+ set(SOURCES
+ main.cpp
+ panelpluginsmodel.cpp
++ windownotifier.cpp
+ lxqtpanel.cpp
+ lxqtpanelapplication.cpp
+ lxqtpanellayout.cpp
+diff --git panel/ilxqtpanel.h panel/ilxqtpanel.h
+index e7b2844..71e4990 100644
+--- panel/ilxqtpanel.h
++++ panel/ilxqtpanel.h
+@@ -32,6 +32,7 @@
+ #include "lxqtpanelglobals.h"
+
+ class ILXQtPanelPlugin;
++class QWidget;
+
+ /**
+ **/
+@@ -74,6 +75,17 @@ public:
+ **/
+ virtual QRect calculatePopupWindowPos(const QPoint &absolutePos, const QSize &windowSize) const = 0;
+ virtual QRect calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const QSize &windowSize) const = 0;
++
++ /*!
++ * \brief By calling this function plugin (or any other object) notifies the panel
++ * about showing a (standalone) window/menu -> panel needs this to avoid "hiding" in case any
++ * standalone window is shown. The widget must be shown later than this notification call because
++ * panel need to observe it's show/hide/close events.
++ *
++ * \param w the shown window
++ *
++ */
++ virtual void willShowWindow(QWidget * w) = 0;
+ };
+
+ #endif // ILXQTPANEL_H
+diff --git panel/ilxqtpanelplugin.h panel/ilxqtpanelplugin.h
+index 1503923..3a09def 100644
+--- panel/ilxqtpanelplugin.h
++++ panel/ilxqtpanelplugin.h
+@@ -186,6 +186,16 @@ public:
+ return mPanel->calculatePopupWindowPos(this, windowSize);
+ }
+
++ /*!
++ * \brief By calling this function plugin notifies the panel about showing a (standalone) window/menu.
++ *
++ * \param w the shown window
++ *
++ */
++ inline void willShowWindow(QWidget * w)
++ {
++ mPanel->willShowWindow(w);
++ }
+
+ virtual bool isSeparate() const { return false; }
+ virtual bool isExpandable() const { return false; }
+diff --git panel/lxqtpanel.cpp panel/lxqtpanel.cpp
+index 5159c15..d6b70ca 100644
+--- panel/lxqtpanel.cpp
++++ panel/lxqtpanel.cpp
+@@ -35,6 +35,7 @@
+ #include "popupmenu.h"
+ #include "plugin.h"
+ #include "panelpluginsmodel.h"
++#include "windownotifier.h"
+ #include <LXQt/PluginInfo>
+
+ #include <QScreen>
+@@ -116,6 +117,7 @@ LXQtPanel::LXQtPanel(const QString &configGroup, LXQt::Settings *settings, QWidg
+ mSettings(settings),
+ mConfigGroup(configGroup),
+ mPlugins{nullptr},
++ mStandaloneWindows{new WindowNotifier},
+ mPanelSize(0),
+ mIconSize(0),
+ mLineCount(0),
+@@ -175,6 +177,9 @@ LXQtPanel::LXQtPanel(const QString &configGroup, LXQt::Settings *settings, QWidg
+ connect(LXQt::Settings::globalSettings(), SIGNAL(settingsChanged()), this, SLOT(update()));
+ connect(lxqtApp, SIGNAL(themeChanged()), this, SLOT(realign()));
+
++ connect(mStandaloneWindows.data(), &WindowNotifier::firstShown, this, &LXQtPanel::showPanel);
++ connect(mStandaloneWindows.data(), &WindowNotifier::lastHidden, this, &LXQtPanel::hidePanel);
++
+ readSettings();
+ // the old position might be on a visible screen
+ ensureVisible();
+@@ -589,6 +594,7 @@ void LXQtPanel::showConfigDialog()
+ mConfigDialog = new ConfigPanelDialog(this, nullptr /*make it top level window*/);
+
+ mConfigDialog->showConfigPanelPage();
++ mStandaloneWindows->observeWindow(mConfigDialog.data());
+ mConfigDialog->show();
+ mConfigDialog->raise();
+ mConfigDialog->activateWindow();
+@@ -608,6 +614,7 @@ void LXQtPanel::showAddPluginDialog()
+ mConfigDialog = new ConfigPanelDialog(this, nullptr /*make it top level window*/);
+
+ mConfigDialog->showConfigPluginsPage();
++ mStandaloneWindows->observeWindow(mConfigDialog.data());
+ mConfigDialog->show();
+ mConfigDialog->raise();
+ mConfigDialog->activateWindow();
+@@ -967,6 +974,7 @@ void LXQtPanel::showPopupMenu(Plugin *plugin)
+ * of QDesktopWidget::availableGeometry)
+ */
+ menu->setGeometry(calculatePopupWindowPos(QCursor::pos(), menu->sizeHint()));
++ willShowWindow(menu);
+ menu->show();
+ }
+
+@@ -1043,6 +1051,14 @@ QRect LXQtPanel::calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const Q
+ /************************************************
+
+ ************************************************/
++void LXQtPanel::willShowWindow(QWidget * w)
++{
++ mStandaloneWindows->observeWindow(w);
++}
++
++/************************************************
++
++ ************************************************/
+ QString LXQtPanel::qssPosition() const
+ {
+ return positionToStr(position());
+@@ -1107,20 +1123,17 @@ void LXQtPanel::showPanel()
+
+ void LXQtPanel::hidePanel()
+ {
+- if (mHidable && !mHidden)
++ if (mHidable && !mHidden
++ && !geometry().contains(QCursor::pos())
++ && !mStandaloneWindows->isAnyWindowShown()
++ )
+ mHideTimer.start();
+ }
+
+ void LXQtPanel::hidePanelWork()
+ {
+- if (mHidable && !mHidden && !geometry().contains(QCursor::pos()))
+- {
+- mHidden = true;
+- setPanelGeometry();
+- } else
+- {
+- mHideTimer.start();
+- }
++ mHidden = true;
++ setPanelGeometry();
+ }
+
+ void LXQtPanel::setHidable(bool hidable, bool save)
+@@ -1128,7 +1141,7 @@ void LXQtPanel::setHidable(bool hidable, bool save)
+ if (mHidable == hidable)
+ return;
+
+- mHidable = mHidden = hidable;
++ mHidable = hidable;
+
+ if (save)
+ saveSettings(true);
+diff --git panel/lxqtpanel.h panel/lxqtpanel.h
+index 8ff4b8c..990063f 100644
+--- panel/lxqtpanel.h
++++ panel/lxqtpanel.h
+@@ -48,6 +48,7 @@ class PluginInfo;
+ class LXQtPanelLayout;
+ class ConfigPanelDialog;
+ class PanelPluginsModel;
++class WindowNotifier;
+
+ /*! \brief The LXQtPanel class provides a single lxqt-panel.
+ */
+@@ -80,11 +81,12 @@ public:
+ void showPopupMenu(Plugin *plugin = 0);
+
+ // ILXQtPanel .........................
+- ILXQtPanel::Position position() const { return mPosition; }
+- QRect globalGometry() const;
++ ILXQtPanel::Position position() const override { return mPosition; }
++ QRect globalGometry() const override;
+ Plugin *findPlugin(const ILXQtPanelPlugin *iPlugin) const;
+- QRect calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const;
+- QRect calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const QSize &windowSize) const;
++ QRect calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const override;
++ QRect calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const QSize &windowSize) const override;
++ void willShowWindow(QWidget * w) override;
+
+ // For QSS properties ..................
+ QString qssPosition() const;
+@@ -95,8 +97,8 @@ public:
+
+ // Settings
+ int panelSize() const { return mPanelSize; }
+- int iconSize() const { return mIconSize; }
+- int lineCount() const { return mLineCount; }
++ int iconSize() const override { return mIconSize; }
++ int lineCount() const override { return mLineCount; }
+ int length() const { return mLength; }
+ bool lengthInPercents() const { return mLengthInPercents; }
+ LXQtPanel::Alignment alignment() const { return mAlignment; }
+@@ -138,8 +140,8 @@ signals:
+ void pluginRemoved();
+
+ protected:
+- bool event(QEvent *event);
+- void showEvent(QShowEvent *event);
++ bool event(QEvent *event) override;
++ void showEvent(QShowEvent *event) override;
+
+ public slots:
+ void showConfigDialog();
+@@ -156,6 +158,7 @@ private:
+ QFrame *LXQtPanelWidget;
+ QString mConfigGroup;
+ QScopedPointer<PanelPluginsModel> mPlugins;
++ QScopedPointer<WindowNotifier> mStandaloneWindows; //!< object for storing info if some standalone window is shown (for preventing hide)
+
+ int findAvailableScreen(LXQtPanel::Position position);
+ void updateWmStrut();
+diff --git panel/plugin.cpp panel/plugin.cpp
+index a4acc78..be23a8e 100644
+--- panel/plugin.cpp
++++ panel/plugin.cpp
+@@ -477,6 +477,7 @@ void Plugin::showConfigureDialog()
+ if (!dialog)
+ return;
+
++ mPanel->willShowWindow(dialog);
+ dialog->show();
+ dialog->raise();
+ dialog->activateWindow();
+diff --git panel/windownotifier.cpp panel/windownotifier.cpp
+new file mode 100644
+index 0000000..0b41057
+--- /dev/null
++++ panel/windownotifier.cpp
+@@ -0,0 +1,65 @@
++/* BEGIN_COMMON_COPYRIGHT_HEADER
++ * (c)LGPL2+
++ *
++ * LXQt - a lightweight, Qt based, desktop toolset
++ * http://lxqt.org
++ *
++ * Copyright: 2015 LXQt team
++ * Authors:
++ * Palo Kisa <palo.kisa@gmail.com>
++ *
++ * This program or library is free software; you can redistribute it
++ * and/or modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++
++ * You should have received a copy of the GNU Lesser General
++ * Public License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++ * Boston, MA 02110-1301 USA
++ *
++ * END_COMMON_COPYRIGHT_HEADER */
++
++#include "windownotifier.h"
++#include <QWidget>
++#include <QEvent>
++
++void WindowNotifier::observeWindow(QWidget * w)
++{
++ //installing the same filter object multiple times doesn't harm
++ w->installEventFilter(this);
++}
++
++
++bool WindowNotifier::eventFilter(QObject * watched, QEvent * event)
++{
++ QWidget * widget = qobject_cast<QWidget *>(watched); //we're observing only QWidgetw
++ auto it = std::lower_bound(mShownWindows.begin(), mShownWindows.end(), widget);
++ switch (event->type())
++ {
++ case QEvent::Close:
++ watched->removeEventFilter(this);
++ //no break
++ case QEvent::Hide:
++ Q_ASSERT(mShownWindows.end() != it);
++ mShownWindows.erase(it);
++ if (mShownWindows.isEmpty())
++ emit lastHidden();
++ break;
++ case QEvent::Show:
++ {
++ const bool first_shown = mShownWindows.isEmpty();
++ mShownWindows.insert(it, widget); //we keep the mShownWindows sorted
++ if (first_shown)
++ emit firstShown();
++ }
++ default:
++ break;
++ }
++ return false;
++}
+diff --git panel/windownotifier.h panel/windownotifier.h
+new file mode 100644
+index 0000000..53f2f3f
+--- /dev/null
++++ panel/windownotifier.h
+@@ -0,0 +1,53 @@
++/* BEGIN_COMMON_COPYRIGHT_HEADER
++ * (c)LGPL2+
++ *
++ * LXQt - a lightweight, Qt based, desktop toolset
++ * http://lxqt.org
++ *
++ * Copyright: 2015 LXQt team
++ * Authors:
++ * Palo Kisa <palo.kisa@gmail.com>
++ *
++ * This program or library is free software; you can redistribute it
++ * and/or modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++
++ * You should have received a copy of the GNU Lesser General
++ * Public License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++ * Boston, MA 02110-1301 USA
++ *
++ * END_COMMON_COPYRIGHT_HEADER */
++
++#if !defined(WINDOWNOTIFIER_H)
++#define WINDOWNOTIFIER_H
++
++#include <QObject>
++
++class QWidget;
++
++class WindowNotifier : public QObject
++{
++ Q_OBJECT
++public:
++ using QObject::QObject;
++
++ void observeWindow(QWidget * w);
++ inline bool isAnyWindowShown() const { return !mShownWindows.isEmpty(); }
++
++ virtual bool eventFilter(QObject * watched, QEvent * event) override;
++signals:
++ void lastHidden();
++ void firstShown();
++
++private:
++ QList<QWidget *> mShownWindows; //!< known shown windows (sorted)
++};
++
++#endif
+diff --git plugin-clock/lxqtclock.cpp plugin-clock/lxqtclock.cpp
+index 79c2c17..d4603de 100644
+--- plugin-clock/lxqtclock.cpp
++++ plugin-clock/lxqtclock.cpp
+@@ -286,6 +286,7 @@ void LXQtClock::activated(ActivationReason reason)
+ {
+ QRect pos = calculatePopupWindowPos(mCalendarPopup->size());
+ mCalendarPopup->move(pos.topLeft());
++ willShowWindow(mCalendarPopup);
+ mCalendarPopup->show();
+ }
+ else
+diff --git plugin-directorymenu/directorymenu.cpp plugin-directorymenu/directorymenu.cpp
+index 8c5ec28..e332e05 100644
+--- plugin-directorymenu/directorymenu.cpp
++++ plugin-directorymenu/directorymenu.cpp
+@@ -58,11 +58,11 @@ DirectoryMenu::DirectoryMenu(const ILXQtPanelPluginStartupInfo &startupInfo) :
+
+ DirectoryMenu::~DirectoryMenu()
+ {
+- if(mMenu)
+- {
+- delete mMenu;
+- mMenu = 0;
+- }
++ if(mMenu)
++ {
++ delete mMenu;
++ mMenu = 0;
++ }
+ }
+
+ void DirectoryMenu::showMenu()
+@@ -102,67 +102,67 @@ void DirectoryMenu::showMenu()
+ break;
+ }
+
++ willShowWindow(mMenu);
+ // Just using Qt`s activateWindow() won't work on some WMs like Kwin.
+ // Solution is to execute menu 1ms later using timer
+- mButton.activateWindow();
+- mMenu->exec(QPoint(x, y));
++ mMenu->popup(calculatePopupWindowPos(mMenu->sizeHint()).topLeft());
+ }
+
+ void DirectoryMenu::buildMenu(const QString& path)
+ {
+- if(mMenu)
+- {
+- delete mMenu;
+- mMenu = 0;
+- }
++ if(mMenu)
++ {
++ delete mMenu;
++ mMenu = 0;
++ }
+
+- mPathStrings.clear();
++ mPathStrings.clear();
+
+- mMenu = new QMenu();
++ mMenu = new QMenu();
+
+- addActions(mMenu, path);
++ addActions(mMenu, path);
+ }
+
+ void DirectoryMenu::openDirectory(const QString& path)
+ {
+- QDesktopServices::openUrl(QUrl("file://" + QDir::toNativeSeparators(path)));
++ QDesktopServices::openUrl(QUrl("file://" + QDir::toNativeSeparators(path)));
+ }
+
+ void DirectoryMenu::addMenu(QString path)
+ {
+- QSignalMapper* sender = (QSignalMapper* )QObject::sender();
+- QMenu* parentMenu = (QMenu*) sender->mapping(path);
++ QSignalMapper* sender = (QSignalMapper* )QObject::sender();
++ QMenu* parentMenu = (QMenu*) sender->mapping(path);
+
+- if(parentMenu->isEmpty())
+- {
+- addActions(parentMenu, path);
+- }
++ if(parentMenu->isEmpty())
++ {
++ addActions(parentMenu, path);
++ }
+ }
+
+ void DirectoryMenu::addActions(QMenu* menu, const QString& path)
+ {
+- mPathStrings.push_back(path);
++ mPathStrings.push_back(path);
+
+- QAction* openDirectoryAction = menu->addAction(XdgIcon::fromTheme("folder"), tr("Open"));
+- connect(openDirectoryAction, SIGNAL(triggered()), mOpenDirectorySignalMapper, SLOT(map()));
+- mOpenDirectorySignalMapper->setMapping(openDirectoryAction, mPathStrings.back());
++ QAction* openDirectoryAction = menu->addAction(XdgIcon::fromTheme("folder"), tr("Open"));
++ connect(openDirectoryAction, SIGNAL(triggered()), mOpenDirectorySignalMapper, SLOT(map()));
++ mOpenDirectorySignalMapper->setMapping(openDirectoryAction, mPathStrings.back());
+
+- menu->addSeparator();
++ menu->addSeparator();
+
+- QDir dir(path);
+- QFileInfoList list = dir.entryInfoList();
++ QDir dir(path);
++ QFileInfoList list = dir.entryInfoList();
+
+- foreach (const QFileInfo& entry, list)
++ foreach (const QFileInfo& entry, list)
+ {
+- if(entry.isDir() && !entry.isHidden())
+- {
+- mPathStrings.push_back(entry.fileName());
++ if(entry.isDir() && !entry.isHidden())
++ {
++ mPathStrings.push_back(entry.fileName());
+
+- QMenu* subMenu = menu->addMenu(XdgIcon::fromTheme("folder"), mPathStrings.back());
++ QMenu* subMenu = menu->addMenu(XdgIcon::fromTheme("folder"), mPathStrings.back());
+
+- connect(subMenu, SIGNAL(aboutToShow()), mMenuSignalMapper, SLOT(map()));
+- mMenuSignalMapper->setMapping(subMenu, entry.absoluteFilePath());
+- }
++ connect(subMenu, SIGNAL(aboutToShow()), mMenuSignalMapper, SLOT(map()));
++ mMenuSignalMapper->setMapping(subMenu, entry.absoluteFilePath());
++ }
+ }
+ }
+
+diff --git plugin-dom/domplugin.cpp plugin-dom/domplugin.cpp
+index ffd05c6..0988a2b 100644
+--- plugin-dom/domplugin.cpp
++++ plugin-dom/domplugin.cpp
+@@ -51,6 +51,7 @@ void DomPlugin::showDialog()
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ }
+
++ willShowWindow(dialog);
+ dialog->show();
+ dialog->activateWindow();
+ }
+diff --git plugin-mainmenu/lxqtmainmenu.cpp plugin-mainmenu/lxqtmainmenu.cpp
+index 9673a4f..b9ff6e4 100644
+--- plugin-mainmenu/lxqtmainmenu.cpp
++++ plugin-mainmenu/lxqtmainmenu.cpp
+@@ -130,6 +130,7 @@ void LXQtMainMenu::showMenu()
+ if (!mMenu)
+ return;
+
++ willShowWindow(mMenu);
+ // Just using Qt`s activateWindow() won't work on some WMs like Kwin.
+ // Solution is to execute menu 1ms later using timer
+ mMenu->popup(calculatePopupWindowPos(mMenu->sizeHint()).topLeft());
+@@ -227,8 +228,6 @@ void LXQtMainMenu::buildMenu()
+ menu->installEventFilter(this);
+ connect(menu, &QMenu::aboutToHide, &mHideTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
+ connect(menu, &QMenu::aboutToShow, &mHideTimer, &QTimer::stop);
+- // panel notification (needed in case of auto-hide)
+- connect(menu, &QMenu::aboutToHide, dynamic_cast<LXQtPanel *>(panel()), &LXQtPanel::hidePanel);
+
+ QMenu *oldMenu = mMenu;
+ mMenu = menu;
+diff --git plugin-mount/popup.cpp plugin-mount/popup.cpp
+index 1c3e7c1..7993681 100644
+--- plugin-mount/popup.cpp
++++ plugin-mount/popup.cpp
+@@ -90,7 +90,12 @@ Popup::Popup(ILXQtPanelPlugin * plugin, QWidget* parent):
+
+ void Popup::showHide()
+ {
+- setVisible(isHidden());
++ if (isHidden())
++ {
++ mPlugin->willShowWindow(this);
++ show();
++ } else
++ close();
+ }
+
+ void Popup::onDeviceAdded(QString const & udi)
+diff --git plugin-statusnotifier/statusnotifierbutton.cpp plugin-statusnotifier/statusnotifierbutton.cpp
+index fb124c6..71cf78f 100644
+--- plugin-statusnotifier/statusnotifierbutton.cpp
++++ plugin-statusnotifier/statusnotifierbutton.cpp
+@@ -249,8 +249,10 @@ void StatusNotifierButton::mouseReleaseEvent(QMouseEvent *event)
+ else if (Qt::RightButton == event->button())
+ {
+ if (mMenu)
+- mMenu->popup(QCursor::pos());
+- else
++ {
++ mPlugin->willShowWindow(mMenu);
++ mMenu->popup(mPlugin->calculatePopupWindowPos(mMenu->sizeHint()).topLeft());
++ } else
+ interface->ContextMenu(QCursor::pos().x(), QCursor::pos().y());
+ }
+
+diff --git plugin-taskbar/lxqttaskgroup.cpp plugin-taskbar/lxqttaskgroup.cpp
+index 6828216..79e27f5 100644
+--- plugin-taskbar/lxqttaskgroup.cpp
++++ plugin-taskbar/lxqttaskgroup.cpp
+@@ -84,6 +84,7 @@ void LXQtTaskGroup::contextMenuEvent(QContextMenuEvent *event)
+ mPreventPopup = false;
+ });
+ menu->setGeometry(mPlugin->panel()->calculatePopupWindowPos(mapToGlobal(event->pos()), menu->sizeHint()));
++ mPlugin->willShowWindow(menu);
+ menu->show();
+ }
+
+@@ -418,6 +419,7 @@ void LXQtTaskGroup::setPopupVisible(bool visible, bool fast)
+ recalculateFramePosition();
+ }
+
++ mPlugin->willShowWindow(mPopup);
+ mPopup->show();
+ emit popupShown(this);
+ }
+diff --git plugin-volume/volumebutton.cpp plugin-volume/volumebutton.cpp
+index a738a1a..98b3f10 100644
+--- plugin-volume/volumebutton.cpp
++++ plugin-volume/volumebutton.cpp
+@@ -133,6 +133,7 @@ void VolumeButton::showVolumeSlider()
+ m_volumePopup->updateGeometry();
+ m_volumePopup->adjustSize();
+ QRect pos = mPlugin->calculatePopupWindowPos(m_volumePopup->size());
++ mPlugin->willShowWindow(m_volumePopup);
+ m_volumePopup->openAt(pos.topLeft(), Qt::TopLeftCorner);
+ m_volumePopup->activateWindow();
+ }
+diff --git plugin-worldclock/lxqtworldclock.cpp plugin-worldclock/lxqtworldclock.cpp
+index 7386049..8fa795d 100644
+--- plugin-worldclock/lxqtworldclock.cpp
++++ plugin-worldclock/lxqtworldclock.cpp
+@@ -356,6 +356,7 @@ void LXQtWorldClock::activated(ActivationReason reason)
+ mPopup->adjustSize();
+ mPopup->setGeometry(calculatePopupWindowPos(mPopup->size()));
+
++ willShowWindow(mPopup);
+ mPopup->show();
+ }
+ else
diff --git a/lxqt-base/lxqt-panel/lxqt-panel-0.10.0-r1.ebuild b/lxqt-base/lxqt-panel/lxqt-panel-0.10.0-r1.ebuild
new file mode 100644
index 0000000..3c8e096
--- /dev/null
+++ b/lxqt-base/lxqt-panel/lxqt-panel-0.10.0-r1.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit cmake-utils
+
+DESCRIPTION="LXQt desktop panel and plugins"
+HOMEPAGE="http://lxqt.org/"
+
+if [[ ${PV} = *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="git://git.lxde.org/git/lxde/${PN}.git"
+else
+ SRC_URI="https://downloads.lxqt.org/lxqt/${PV}/${P}.tar.xz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="GPL-2 LGPL-2.1+"
+SLOT="0"
+IUSE="+alsa +clock colorpicker cpuload +desktopswitch dom +kbindicator +mainmenu
+ +mount networkmonitor pulseaudio +quicklaunch screensaver sensors
+ +showdesktop statusnotifier sysstat +taskbar +tray +volume worldclock"
+REQUIRED_USE="volume? ( || ( alsa pulseaudio ) )"
+
+DEPEND="
+ dev-libs/glib:2
+ >=dev-libs/libqtxdg-1.0.0
+ dev-qt/linguist-tools:5
+ dev-qt/qtcore:5
+ dev-qt/qtdbus:5
+ dev-qt/qtgui:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtx11extras:5
+ dev-qt/qtxml:5
+ kde-frameworks/kguiaddons:5
+ kde-frameworks/kwindowsystem:5[X]
+ >=lxde-base/menu-cache-0.3.3
+ ~lxqt-base/liblxqt-${PV}
+ ~lxqt-base/lxqt-globalkeys-${PV}
+ x11-libs/libX11
+ cpuload? ( sys-libs/libstatgrab )
+ kbindicator? ( x11-libs/libxkbcommon )
+ mount? ( kde-frameworks/solid:5 )
+ networkmonitor? ( sys-libs/libstatgrab )
+ sensors? ( sys-apps/lm_sensors )
+ statusnotifier? ( dev-libs/libdbusmenu-qt[qt5] )
+ sysstat? ( =lxqt-base/libsysstat-0.3* )
+ tray? ( x11-libs/libXcomposite
+ x11-libs/libXdamage
+ x11-libs/libXrender )
+ volume? ( alsa? ( media-libs/alsa-lib )
+ pulseaudio? ( media-sound/pulseaudio ) )"
+RDEPEND="${DEPEND}
+ dev-qt/qtsvg:5
+ >=lxde-base/lxmenu-data-0.1.2"
+
+PATCHES=( "${FILESDIR}/${P}-autohide.patch" )
+
+src_configure() {
+ local mycmakeargs i y
+ for i in clock colorpicker cpuload desktopswitch dom kbindicator mainmenu mount \
+ networkmonitor quicklaunch screensaver sensors showdesktop statusnotifier \
+ sysstat taskbar tray volume worldclock; do
+ #Switch to ^^ when we switch to EAPI=6.
+ #y=${i^^}
+ y=$(tr '[:lower:]' '[:upper:]' <<< "${i}")
+ mycmakeargs+=( $(cmake-utils_use ${i} ${y}_PLUGIN) )
+ done
+
+ if use volume; then
+ mycmakeargs+=( $(cmake-utils_use alsa VOLUME_USE_ALSA)
+ $(cmake-utils_use pulseaudio VOLUME_USE_PULSEAUDIO) )
+ fi
+
+ cmake-utils_src_configure
+}
+
+src_install(){
+ cmake-utils_src_install
+ doman panel/man/*.1
+}
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: lxqt-base/lxqt-panel/files/, lxqt-base/lxqt-panel/
@ 2017-11-07 2:39 NP Hardass
0 siblings, 0 replies; 3+ messages in thread
From: NP Hardass @ 2017-11-07 2:39 UTC (permalink / raw
To: gentoo-commits
commit: 9831f08ca067fab97a619811280d00670fa6f8e8
Author: Jimi Huotari <chiitoo <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 6 18:47:37 2017 +0000
Commit: NP Hardass <np-hardass <AT> gentoo <DOT> org>
CommitDate: Tue Nov 7 02:39:34 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9831f08c
lxqt-base/lxqt-panel: Move oversize patch to dev-space.
Package-Manager: Portage-2.3.13, Repoman-2.3.4
Signed-off-by: NP-Hardass <NP-Hardass <AT> gentoo.org>
lxqt-base/lxqt-panel/Manifest | 1 +
.../files/lxqt-panel-0.10.0-autohide.patch | 625 ---------------------
lxqt-base/lxqt-panel/lxqt-panel-0.10.0-r1.ebuild | 7 +-
3 files changed, 5 insertions(+), 628 deletions(-)
diff --git a/lxqt-base/lxqt-panel/Manifest b/lxqt-base/lxqt-panel/Manifest
index af123ca3534..d17b3e22644 100644
--- a/lxqt-base/lxqt-panel/Manifest
+++ b/lxqt-base/lxqt-panel/Manifest
@@ -1,2 +1,3 @@
+DIST lxqt-panel-0.10.0-autohide-patch.tar.bz2 5812 SHA256 e590c2ed4554c27e3fc640197cd48ccce1dfba75139669eb2e1cae71d6f5c82b SHA512 04b2dcfa107e6cedd8347b399e254c193f2f245ce796c6f2b26f3b47a7969da5d673d30f2dd08ad66a9815394e4a8baf72191c14ec58652a2f71005240b3844d WHIRLPOOL c256b404c9daaf5b8d59f7fc88760180fe1643801e92c30fd25c3514083fc531d27ee29ffe3dd8476dae7df524566b5e9430ece9f71c2607a47d976d89658351
DIST lxqt-panel-0.10.0.tar.xz 329984 SHA256 df83db7789daecd358f074db2100d7b251c00e48aa3aa62957d5a657a4309d5e SHA512 59a25593beeabbd02a451e00db479617612d63ba5579560ab4b1c60d6ad1878728cc079a848b9437968c7246f257b53c775de2cb9e87f3e153049e6dbeee2ab4 WHIRLPOOL 6d49c0d78f66ff4d6a0fe026915e72bf6ca9c5b73f198866402c6e82ffd10b53a22f9ef1a583d05ae47918d90ccc08b1230582ccd86948d77079e2b2fdf3af6b
DIST lxqt-panel-0.11.0.tar.xz 262964 SHA256 18415624d862b9b269fd1f74b2b6a51776852babd057e701e5d5b48ce46e777c SHA512 875ec28868bb68dff8c4e3be0adb5e5c88213f9ebdeb83eb0df9d5c31a7b4cb70a4d9b347f1ed9526a1eef7adb07f92c36263e12a6455291ec7022901abd100c WHIRLPOOL 9a9f6ff92afbf598d6a1f29d083e3fc85f3282f644508d1bc03683eb9bbe06048d65688e016bb17e7553aba23b10de251949000e2da65c3b5e547e9f273e7cd1
diff --git a/lxqt-base/lxqt-panel/files/lxqt-panel-0.10.0-autohide.patch b/lxqt-base/lxqt-panel/files/lxqt-panel-0.10.0-autohide.patch
deleted file mode 100644
index 5f2bbdae6f2..00000000000
--- a/lxqt-base/lxqt-panel/files/lxqt-panel-0.10.0-autohide.patch
+++ /dev/null
@@ -1,625 +0,0 @@
-Patch for autohide issue https://github.com/lxde/lxqt/issues/871
-taken from https://github.com/lxde/lxqt-panel/pull/275
-
-diff --git panel/CMakeLists.txt panel/CMakeLists.txt
-index 4e23b53..a7f8176 100644
---- panel/CMakeLists.txt
-+++ panel/CMakeLists.txt
-@@ -2,6 +2,7 @@ set(PROJECT lxqt-panel)
-
- set(PRIV_HEADERS
- panelpluginsmodel.h
-+ windownotifier.h
- lxqtpanel.h
- lxqtpanelapplication.h
- lxqtpanellayout.h
-@@ -26,6 +27,7 @@ set(PUB_HEADERS
- set(SOURCES
- main.cpp
- panelpluginsmodel.cpp
-+ windownotifier.cpp
- lxqtpanel.cpp
- lxqtpanelapplication.cpp
- lxqtpanellayout.cpp
-diff --git panel/ilxqtpanel.h panel/ilxqtpanel.h
-index e7b2844..71e4990 100644
---- panel/ilxqtpanel.h
-+++ panel/ilxqtpanel.h
-@@ -32,6 +32,7 @@
- #include "lxqtpanelglobals.h"
-
- class ILXQtPanelPlugin;
-+class QWidget;
-
- /**
- **/
-@@ -74,6 +75,17 @@ public:
- **/
- virtual QRect calculatePopupWindowPos(const QPoint &absolutePos, const QSize &windowSize) const = 0;
- virtual QRect calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const QSize &windowSize) const = 0;
-+
-+ /*!
-+ * \brief By calling this function plugin (or any other object) notifies the panel
-+ * about showing a (standalone) window/menu -> panel needs this to avoid "hiding" in case any
-+ * standalone window is shown. The widget must be shown later than this notification call because
-+ * panel need to observe it's show/hide/close events.
-+ *
-+ * \param w the shown window
-+ *
-+ */
-+ virtual void willShowWindow(QWidget * w) = 0;
- };
-
- #endif // ILXQTPANEL_H
-diff --git panel/ilxqtpanelplugin.h panel/ilxqtpanelplugin.h
-index 1503923..3a09def 100644
---- panel/ilxqtpanelplugin.h
-+++ panel/ilxqtpanelplugin.h
-@@ -186,6 +186,16 @@ public:
- return mPanel->calculatePopupWindowPos(this, windowSize);
- }
-
-+ /*!
-+ * \brief By calling this function plugin notifies the panel about showing a (standalone) window/menu.
-+ *
-+ * \param w the shown window
-+ *
-+ */
-+ inline void willShowWindow(QWidget * w)
-+ {
-+ mPanel->willShowWindow(w);
-+ }
-
- virtual bool isSeparate() const { return false; }
- virtual bool isExpandable() const { return false; }
-diff --git panel/lxqtpanel.cpp panel/lxqtpanel.cpp
-index 5159c15..d6b70ca 100644
---- panel/lxqtpanel.cpp
-+++ panel/lxqtpanel.cpp
-@@ -35,6 +35,7 @@
- #include "popupmenu.h"
- #include "plugin.h"
- #include "panelpluginsmodel.h"
-+#include "windownotifier.h"
- #include <LXQt/PluginInfo>
-
- #include <QScreen>
-@@ -116,6 +117,7 @@ LXQtPanel::LXQtPanel(const QString &configGroup, LXQt::Settings *settings, QWidg
- mSettings(settings),
- mConfigGroup(configGroup),
- mPlugins{nullptr},
-+ mStandaloneWindows{new WindowNotifier},
- mPanelSize(0),
- mIconSize(0),
- mLineCount(0),
-@@ -175,6 +177,9 @@ LXQtPanel::LXQtPanel(const QString &configGroup, LXQt::Settings *settings, QWidg
- connect(LXQt::Settings::globalSettings(), SIGNAL(settingsChanged()), this, SLOT(update()));
- connect(lxqtApp, SIGNAL(themeChanged()), this, SLOT(realign()));
-
-+ connect(mStandaloneWindows.data(), &WindowNotifier::firstShown, this, &LXQtPanel::showPanel);
-+ connect(mStandaloneWindows.data(), &WindowNotifier::lastHidden, this, &LXQtPanel::hidePanel);
-+
- readSettings();
- // the old position might be on a visible screen
- ensureVisible();
-@@ -589,6 +594,7 @@ void LXQtPanel::showConfigDialog()
- mConfigDialog = new ConfigPanelDialog(this, nullptr /*make it top level window*/);
-
- mConfigDialog->showConfigPanelPage();
-+ mStandaloneWindows->observeWindow(mConfigDialog.data());
- mConfigDialog->show();
- mConfigDialog->raise();
- mConfigDialog->activateWindow();
-@@ -608,6 +614,7 @@ void LXQtPanel::showAddPluginDialog()
- mConfigDialog = new ConfigPanelDialog(this, nullptr /*make it top level window*/);
-
- mConfigDialog->showConfigPluginsPage();
-+ mStandaloneWindows->observeWindow(mConfigDialog.data());
- mConfigDialog->show();
- mConfigDialog->raise();
- mConfigDialog->activateWindow();
-@@ -967,6 +974,7 @@ void LXQtPanel::showPopupMenu(Plugin *plugin)
- * of QDesktopWidget::availableGeometry)
- */
- menu->setGeometry(calculatePopupWindowPos(QCursor::pos(), menu->sizeHint()));
-+ willShowWindow(menu);
- menu->show();
- }
-
-@@ -1043,6 +1051,14 @@ QRect LXQtPanel::calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const Q
- /************************************************
-
- ************************************************/
-+void LXQtPanel::willShowWindow(QWidget * w)
-+{
-+ mStandaloneWindows->observeWindow(w);
-+}
-+
-+/************************************************
-+
-+ ************************************************/
- QString LXQtPanel::qssPosition() const
- {
- return positionToStr(position());
-@@ -1107,20 +1123,17 @@ void LXQtPanel::showPanel()
-
- void LXQtPanel::hidePanel()
- {
-- if (mHidable && !mHidden)
-+ if (mHidable && !mHidden
-+ && !geometry().contains(QCursor::pos())
-+ && !mStandaloneWindows->isAnyWindowShown()
-+ )
- mHideTimer.start();
- }
-
- void LXQtPanel::hidePanelWork()
- {
-- if (mHidable && !mHidden && !geometry().contains(QCursor::pos()))
-- {
-- mHidden = true;
-- setPanelGeometry();
-- } else
-- {
-- mHideTimer.start();
-- }
-+ mHidden = true;
-+ setPanelGeometry();
- }
-
- void LXQtPanel::setHidable(bool hidable, bool save)
-@@ -1128,7 +1141,7 @@ void LXQtPanel::setHidable(bool hidable, bool save)
- if (mHidable == hidable)
- return;
-
-- mHidable = mHidden = hidable;
-+ mHidable = hidable;
-
- if (save)
- saveSettings(true);
-diff --git panel/lxqtpanel.h panel/lxqtpanel.h
-index 8ff4b8c..990063f 100644
---- panel/lxqtpanel.h
-+++ panel/lxqtpanel.h
-@@ -48,6 +48,7 @@ class PluginInfo;
- class LXQtPanelLayout;
- class ConfigPanelDialog;
- class PanelPluginsModel;
-+class WindowNotifier;
-
- /*! \brief The LXQtPanel class provides a single lxqt-panel.
- */
-@@ -80,11 +81,12 @@ public:
- void showPopupMenu(Plugin *plugin = 0);
-
- // ILXQtPanel .........................
-- ILXQtPanel::Position position() const { return mPosition; }
-- QRect globalGometry() const;
-+ ILXQtPanel::Position position() const override { return mPosition; }
-+ QRect globalGometry() const override;
- Plugin *findPlugin(const ILXQtPanelPlugin *iPlugin) const;
-- QRect calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const;
-- QRect calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const QSize &windowSize) const;
-+ QRect calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const override;
-+ QRect calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const QSize &windowSize) const override;
-+ void willShowWindow(QWidget * w) override;
-
- // For QSS properties ..................
- QString qssPosition() const;
-@@ -95,8 +97,8 @@ public:
-
- // Settings
- int panelSize() const { return mPanelSize; }
-- int iconSize() const { return mIconSize; }
-- int lineCount() const { return mLineCount; }
-+ int iconSize() const override { return mIconSize; }
-+ int lineCount() const override { return mLineCount; }
- int length() const { return mLength; }
- bool lengthInPercents() const { return mLengthInPercents; }
- LXQtPanel::Alignment alignment() const { return mAlignment; }
-@@ -138,8 +140,8 @@ signals:
- void pluginRemoved();
-
- protected:
-- bool event(QEvent *event);
-- void showEvent(QShowEvent *event);
-+ bool event(QEvent *event) override;
-+ void showEvent(QShowEvent *event) override;
-
- public slots:
- void showConfigDialog();
-@@ -156,6 +158,7 @@ private:
- QFrame *LXQtPanelWidget;
- QString mConfigGroup;
- QScopedPointer<PanelPluginsModel> mPlugins;
-+ QScopedPointer<WindowNotifier> mStandaloneWindows; //!< object for storing info if some standalone window is shown (for preventing hide)
-
- int findAvailableScreen(LXQtPanel::Position position);
- void updateWmStrut();
-diff --git panel/plugin.cpp panel/plugin.cpp
-index a4acc78..be23a8e 100644
---- panel/plugin.cpp
-+++ panel/plugin.cpp
-@@ -477,6 +477,7 @@ void Plugin::showConfigureDialog()
- if (!dialog)
- return;
-
-+ mPanel->willShowWindow(dialog);
- dialog->show();
- dialog->raise();
- dialog->activateWindow();
-diff --git panel/windownotifier.cpp panel/windownotifier.cpp
-new file mode 100644
-index 0000000..0b41057
---- /dev/null
-+++ panel/windownotifier.cpp
-@@ -0,0 +1,65 @@
-+/* BEGIN_COMMON_COPYRIGHT_HEADER
-+ * (c)LGPL2+
-+ *
-+ * LXQt - a lightweight, Qt based, desktop toolset
-+ * http://lxqt.org
-+ *
-+ * Copyright: 2015 LXQt team
-+ * Authors:
-+ * Palo Kisa <palo.kisa@gmail.com>
-+ *
-+ * This program or library is free software; you can redistribute it
-+ * and/or modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Lesser General Public License for more details.
-+
-+ * You should have received a copy of the GNU Lesser General
-+ * Public License along with this library; if not, write to the
-+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+ * Boston, MA 02110-1301 USA
-+ *
-+ * END_COMMON_COPYRIGHT_HEADER */
-+
-+#include "windownotifier.h"
-+#include <QWidget>
-+#include <QEvent>
-+
-+void WindowNotifier::observeWindow(QWidget * w)
-+{
-+ //installing the same filter object multiple times doesn't harm
-+ w->installEventFilter(this);
-+}
-+
-+
-+bool WindowNotifier::eventFilter(QObject * watched, QEvent * event)
-+{
-+ QWidget * widget = qobject_cast<QWidget *>(watched); //we're observing only QWidgetw
-+ auto it = std::lower_bound(mShownWindows.begin(), mShownWindows.end(), widget);
-+ switch (event->type())
-+ {
-+ case QEvent::Close:
-+ watched->removeEventFilter(this);
-+ //no break
-+ case QEvent::Hide:
-+ Q_ASSERT(mShownWindows.end() != it);
-+ mShownWindows.erase(it);
-+ if (mShownWindows.isEmpty())
-+ emit lastHidden();
-+ break;
-+ case QEvent::Show:
-+ {
-+ const bool first_shown = mShownWindows.isEmpty();
-+ mShownWindows.insert(it, widget); //we keep the mShownWindows sorted
-+ if (first_shown)
-+ emit firstShown();
-+ }
-+ default:
-+ break;
-+ }
-+ return false;
-+}
-diff --git panel/windownotifier.h panel/windownotifier.h
-new file mode 100644
-index 0000000..53f2f3f
---- /dev/null
-+++ panel/windownotifier.h
-@@ -0,0 +1,53 @@
-+/* BEGIN_COMMON_COPYRIGHT_HEADER
-+ * (c)LGPL2+
-+ *
-+ * LXQt - a lightweight, Qt based, desktop toolset
-+ * http://lxqt.org
-+ *
-+ * Copyright: 2015 LXQt team
-+ * Authors:
-+ * Palo Kisa <palo.kisa@gmail.com>
-+ *
-+ * This program or library is free software; you can redistribute it
-+ * and/or modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Lesser General Public License for more details.
-+
-+ * You should have received a copy of the GNU Lesser General
-+ * Public License along with this library; if not, write to the
-+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+ * Boston, MA 02110-1301 USA
-+ *
-+ * END_COMMON_COPYRIGHT_HEADER */
-+
-+#if !defined(WINDOWNOTIFIER_H)
-+#define WINDOWNOTIFIER_H
-+
-+#include <QObject>
-+
-+class QWidget;
-+
-+class WindowNotifier : public QObject
-+{
-+ Q_OBJECT
-+public:
-+ using QObject::QObject;
-+
-+ void observeWindow(QWidget * w);
-+ inline bool isAnyWindowShown() const { return !mShownWindows.isEmpty(); }
-+
-+ virtual bool eventFilter(QObject * watched, QEvent * event) override;
-+signals:
-+ void lastHidden();
-+ void firstShown();
-+
-+private:
-+ QList<QWidget *> mShownWindows; //!< known shown windows (sorted)
-+};
-+
-+#endif
-diff --git plugin-clock/lxqtclock.cpp plugin-clock/lxqtclock.cpp
-index 79c2c17..d4603de 100644
---- plugin-clock/lxqtclock.cpp
-+++ plugin-clock/lxqtclock.cpp
-@@ -286,6 +286,7 @@ void LXQtClock::activated(ActivationReason reason)
- {
- QRect pos = calculatePopupWindowPos(mCalendarPopup->size());
- mCalendarPopup->move(pos.topLeft());
-+ willShowWindow(mCalendarPopup);
- mCalendarPopup->show();
- }
- else
-diff --git plugin-directorymenu/directorymenu.cpp plugin-directorymenu/directorymenu.cpp
-index 8c5ec28..e332e05 100644
---- plugin-directorymenu/directorymenu.cpp
-+++ plugin-directorymenu/directorymenu.cpp
-@@ -58,11 +58,11 @@ DirectoryMenu::DirectoryMenu(const ILXQtPanelPluginStartupInfo &startupInfo) :
-
- DirectoryMenu::~DirectoryMenu()
- {
-- if(mMenu)
-- {
-- delete mMenu;
-- mMenu = 0;
-- }
-+ if(mMenu)
-+ {
-+ delete mMenu;
-+ mMenu = 0;
-+ }
- }
-
- void DirectoryMenu::showMenu()
-@@ -102,67 +102,67 @@ void DirectoryMenu::showMenu()
- break;
- }
-
-+ willShowWindow(mMenu);
- // Just using Qt`s activateWindow() won't work on some WMs like Kwin.
- // Solution is to execute menu 1ms later using timer
-- mButton.activateWindow();
-- mMenu->exec(QPoint(x, y));
-+ mMenu->popup(calculatePopupWindowPos(mMenu->sizeHint()).topLeft());
- }
-
- void DirectoryMenu::buildMenu(const QString& path)
- {
-- if(mMenu)
-- {
-- delete mMenu;
-- mMenu = 0;
-- }
-+ if(mMenu)
-+ {
-+ delete mMenu;
-+ mMenu = 0;
-+ }
-
-- mPathStrings.clear();
-+ mPathStrings.clear();
-
-- mMenu = new QMenu();
-+ mMenu = new QMenu();
-
-- addActions(mMenu, path);
-+ addActions(mMenu, path);
- }
-
- void DirectoryMenu::openDirectory(const QString& path)
- {
-- QDesktopServices::openUrl(QUrl("file://" + QDir::toNativeSeparators(path)));
-+ QDesktopServices::openUrl(QUrl("file://" + QDir::toNativeSeparators(path)));
- }
-
- void DirectoryMenu::addMenu(QString path)
- {
-- QSignalMapper* sender = (QSignalMapper* )QObject::sender();
-- QMenu* parentMenu = (QMenu*) sender->mapping(path);
-+ QSignalMapper* sender = (QSignalMapper* )QObject::sender();
-+ QMenu* parentMenu = (QMenu*) sender->mapping(path);
-
-- if(parentMenu->isEmpty())
-- {
-- addActions(parentMenu, path);
-- }
-+ if(parentMenu->isEmpty())
-+ {
-+ addActions(parentMenu, path);
-+ }
- }
-
- void DirectoryMenu::addActions(QMenu* menu, const QString& path)
- {
-- mPathStrings.push_back(path);
-+ mPathStrings.push_back(path);
-
-- QAction* openDirectoryAction = menu->addAction(XdgIcon::fromTheme("folder"), tr("Open"));
-- connect(openDirectoryAction, SIGNAL(triggered()), mOpenDirectorySignalMapper, SLOT(map()));
-- mOpenDirectorySignalMapper->setMapping(openDirectoryAction, mPathStrings.back());
-+ QAction* openDirectoryAction = menu->addAction(XdgIcon::fromTheme("folder"), tr("Open"));
-+ connect(openDirectoryAction, SIGNAL(triggered()), mOpenDirectorySignalMapper, SLOT(map()));
-+ mOpenDirectorySignalMapper->setMapping(openDirectoryAction, mPathStrings.back());
-
-- menu->addSeparator();
-+ menu->addSeparator();
-
-- QDir dir(path);
-- QFileInfoList list = dir.entryInfoList();
-+ QDir dir(path);
-+ QFileInfoList list = dir.entryInfoList();
-
-- foreach (const QFileInfo& entry, list)
-+ foreach (const QFileInfo& entry, list)
- {
-- if(entry.isDir() && !entry.isHidden())
-- {
-- mPathStrings.push_back(entry.fileName());
-+ if(entry.isDir() && !entry.isHidden())
-+ {
-+ mPathStrings.push_back(entry.fileName());
-
-- QMenu* subMenu = menu->addMenu(XdgIcon::fromTheme("folder"), mPathStrings.back());
-+ QMenu* subMenu = menu->addMenu(XdgIcon::fromTheme("folder"), mPathStrings.back());
-
-- connect(subMenu, SIGNAL(aboutToShow()), mMenuSignalMapper, SLOT(map()));
-- mMenuSignalMapper->setMapping(subMenu, entry.absoluteFilePath());
-- }
-+ connect(subMenu, SIGNAL(aboutToShow()), mMenuSignalMapper, SLOT(map()));
-+ mMenuSignalMapper->setMapping(subMenu, entry.absoluteFilePath());
-+ }
- }
- }
-
-diff --git plugin-dom/domplugin.cpp plugin-dom/domplugin.cpp
-index ffd05c6..0988a2b 100644
---- plugin-dom/domplugin.cpp
-+++ plugin-dom/domplugin.cpp
-@@ -51,6 +51,7 @@ void DomPlugin::showDialog()
- dialog->setAttribute(Qt::WA_DeleteOnClose);
- }
-
-+ willShowWindow(dialog);
- dialog->show();
- dialog->activateWindow();
- }
-diff --git plugin-mainmenu/lxqtmainmenu.cpp plugin-mainmenu/lxqtmainmenu.cpp
-index 9673a4f..b9ff6e4 100644
---- plugin-mainmenu/lxqtmainmenu.cpp
-+++ plugin-mainmenu/lxqtmainmenu.cpp
-@@ -130,6 +130,7 @@ void LXQtMainMenu::showMenu()
- if (!mMenu)
- return;
-
-+ willShowWindow(mMenu);
- // Just using Qt`s activateWindow() won't work on some WMs like Kwin.
- // Solution is to execute menu 1ms later using timer
- mMenu->popup(calculatePopupWindowPos(mMenu->sizeHint()).topLeft());
-@@ -227,8 +228,6 @@ void LXQtMainMenu::buildMenu()
- menu->installEventFilter(this);
- connect(menu, &QMenu::aboutToHide, &mHideTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
- connect(menu, &QMenu::aboutToShow, &mHideTimer, &QTimer::stop);
-- // panel notification (needed in case of auto-hide)
-- connect(menu, &QMenu::aboutToHide, dynamic_cast<LXQtPanel *>(panel()), &LXQtPanel::hidePanel);
-
- QMenu *oldMenu = mMenu;
- mMenu = menu;
-diff --git plugin-mount/popup.cpp plugin-mount/popup.cpp
-index 1c3e7c1..7993681 100644
---- plugin-mount/popup.cpp
-+++ plugin-mount/popup.cpp
-@@ -90,7 +90,12 @@ Popup::Popup(ILXQtPanelPlugin * plugin, QWidget* parent):
-
- void Popup::showHide()
- {
-- setVisible(isHidden());
-+ if (isHidden())
-+ {
-+ mPlugin->willShowWindow(this);
-+ show();
-+ } else
-+ close();
- }
-
- void Popup::onDeviceAdded(QString const & udi)
-diff --git plugin-statusnotifier/statusnotifierbutton.cpp plugin-statusnotifier/statusnotifierbutton.cpp
-index fb124c6..71cf78f 100644
---- plugin-statusnotifier/statusnotifierbutton.cpp
-+++ plugin-statusnotifier/statusnotifierbutton.cpp
-@@ -249,8 +249,10 @@ void StatusNotifierButton::mouseReleaseEvent(QMouseEvent *event)
- else if (Qt::RightButton == event->button())
- {
- if (mMenu)
-- mMenu->popup(QCursor::pos());
-- else
-+ {
-+ mPlugin->willShowWindow(mMenu);
-+ mMenu->popup(mPlugin->calculatePopupWindowPos(mMenu->sizeHint()).topLeft());
-+ } else
- interface->ContextMenu(QCursor::pos().x(), QCursor::pos().y());
- }
-
-diff --git plugin-taskbar/lxqttaskgroup.cpp plugin-taskbar/lxqttaskgroup.cpp
-index 6828216..79e27f5 100644
---- plugin-taskbar/lxqttaskgroup.cpp
-+++ plugin-taskbar/lxqttaskgroup.cpp
-@@ -84,6 +84,7 @@ void LXQtTaskGroup::contextMenuEvent(QContextMenuEvent *event)
- mPreventPopup = false;
- });
- menu->setGeometry(mPlugin->panel()->calculatePopupWindowPos(mapToGlobal(event->pos()), menu->sizeHint()));
-+ mPlugin->willShowWindow(menu);
- menu->show();
- }
-
-@@ -418,6 +419,7 @@ void LXQtTaskGroup::setPopupVisible(bool visible, bool fast)
- recalculateFramePosition();
- }
-
-+ mPlugin->willShowWindow(mPopup);
- mPopup->show();
- emit popupShown(this);
- }
-diff --git plugin-volume/volumebutton.cpp plugin-volume/volumebutton.cpp
-index a738a1a..98b3f10 100644
---- plugin-volume/volumebutton.cpp
-+++ plugin-volume/volumebutton.cpp
-@@ -133,6 +133,7 @@ void VolumeButton::showVolumeSlider()
- m_volumePopup->updateGeometry();
- m_volumePopup->adjustSize();
- QRect pos = mPlugin->calculatePopupWindowPos(m_volumePopup->size());
-+ mPlugin->willShowWindow(m_volumePopup);
- m_volumePopup->openAt(pos.topLeft(), Qt::TopLeftCorner);
- m_volumePopup->activateWindow();
- }
-diff --git plugin-worldclock/lxqtworldclock.cpp plugin-worldclock/lxqtworldclock.cpp
-index 7386049..8fa795d 100644
---- plugin-worldclock/lxqtworldclock.cpp
-+++ plugin-worldclock/lxqtworldclock.cpp
-@@ -356,6 +356,7 @@ void LXQtWorldClock::activated(ActivationReason reason)
- mPopup->adjustSize();
- mPopup->setGeometry(calculatePopupWindowPos(mPopup->size()));
-
-+ willShowWindow(mPopup);
- mPopup->show();
- }
- else
diff --git a/lxqt-base/lxqt-panel/lxqt-panel-0.10.0-r1.ebuild b/lxqt-base/lxqt-panel/lxqt-panel-0.10.0-r1.ebuild
index b342e0bc9d2..3ae6d34161e 100644
--- a/lxqt-base/lxqt-panel/lxqt-panel-0.10.0-r1.ebuild
+++ b/lxqt-base/lxqt-panel/lxqt-panel-0.10.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2016 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=5
@@ -11,7 +11,8 @@ if [[ ${PV} = *9999* ]]; then
inherit git-r3
EGIT_REPO_URI="git://git.lxde.org/git/lxde/${PN}.git"
else
- SRC_URI="https://downloads.lxqt.org/lxqt/${PV}/${P}.tar.xz"
+ SRC_URI="https://downloads.lxqt.org/lxqt/${PV}/${P}.tar.xz
+ https://dev.gentoo.org/~chiitoo/distfiles/lxqt-panel-0.10.0-autohide-patch.tar.bz2"
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
fi
@@ -55,7 +56,7 @@ RDEPEND="${CDEPEND}
dev-qt/qtsvg:5
>=lxde-base/lxmenu-data-0.1.2"
-PATCHES=( "${FILESDIR}/${P}-autohide.patch" )
+PATCHES=( "${WORKDIR}/${P}-autohide.patch" )
src_configure() {
local mycmakeargs i y
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: lxqt-base/lxqt-panel/files/, lxqt-base/lxqt-panel/
@ 2017-12-11 1:37 Anthony G. Basile
0 siblings, 0 replies; 3+ messages in thread
From: Anthony G. Basile @ 2017-12-11 1:37 UTC (permalink / raw
To: gentoo-commits
commit: c27e67813ed4ccb87f255479ec708f58f00a882b
Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 11 01:37:16 2017 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Dec 11 01:37:32 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c27e6781
lxqt-base/lxqt-panel: fix build error reported in bug #634222
Package-Manager: Portage-2.3.13, Repoman-2.3.3
.../lxqt-panel-0.11.0-fix-undef-explicit.patch | 32 ++++++++++++++++++++++
lxqt-base/lxqt-panel/lxqt-panel-0.11.0.ebuild | 4 +++
2 files changed, 36 insertions(+)
diff --git a/lxqt-base/lxqt-panel/files/lxqt-panel-0.11.0-fix-undef-explicit.patch b/lxqt-base/lxqt-panel/files/lxqt-panel-0.11.0-fix-undef-explicit.patch
new file mode 100644
index 00000000000..c6349c25cba
--- /dev/null
+++ b/lxqt-base/lxqt-panel/files/lxqt-panel-0.11.0-fix-undef-explicit.patch
@@ -0,0 +1,32 @@
+From ec62109e0fa678875a9b10fc6f1975267432712d Mon Sep 17 00:00:00 2001
+From: Palo Kisa <palo.kisa@gmail.com>
+Date: Mon, 30 Jan 2017 12:21:10 +0100
+Subject: [PATCH] plugin-kbindicator: Undef the "explicit" workaround
+
+..after include and add explanation of the workaround.
+
+closes lxde/lxqt#1251
+---
+ plugin-kbindicator/src/x11/kbdlayout.cpp | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/plugin-kbindicator/src/x11/kbdlayout.cpp b/plugin-kbindicator/src/x11/kbdlayout.cpp
+index c4aa4e27..883df074 100644
+--- a/plugin-kbindicator/src/x11/kbdlayout.cpp
++++ b/plugin-kbindicator/src/x11/kbdlayout.cpp
+@@ -33,8 +33,15 @@
+
+ #include <xkbcommon/xkbcommon-x11.h>
+ #include <xcb/xcb.h>
++
++// Note: We need to override "explicit" as this is a C++ keyword. But it is
++// used as variable name in xkb.h. This is causing a failure in C++ compile
++// time.
++// Similar bug here: https://bugs.freedesktop.org/show_bug.cgi?id=74080
+ #define explicit _explicit
+ #include <xcb/xkb.h>
++#undef explicit
++
+ #include "../kbdinfo.h"
+ #include "../controls.h"
+
diff --git a/lxqt-base/lxqt-panel/lxqt-panel-0.11.0.ebuild b/lxqt-base/lxqt-panel/lxqt-panel-0.11.0.ebuild
index 65f1bebbd9a..39ae731adb2 100644
--- a/lxqt-base/lxqt-panel/lxqt-panel-0.11.0.ebuild
+++ b/lxqt-base/lxqt-panel/lxqt-panel-0.11.0.ebuild
@@ -55,6 +55,10 @@ RDEPEND="${CDEPEND}
dev-qt/qtsvg:5
>=lxde-base/lxmenu-data-0.1.2"
+PATCHES=(
+ ${FILESDIR}/${P}-fix-undef-explicit.patch
+)
+
src_configure() {
local mycmakeargs i y
mycmakeargs=( -DPULL_TRANSLATIONS=OFF )
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-12-11 1:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-07 2:39 [gentoo-commits] repo/gentoo:master commit in: lxqt-base/lxqt-panel/files/, lxqt-base/lxqt-panel/ NP Hardass
-- strict thread matches above, loose matches on Subject: below --
2017-12-11 1:37 Anthony G. Basile
2016-01-02 23:26 Jauhien Piatlicki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox