Adding upstream version 0.9.0+20151027.

upstream/0.9.0+20151027
Alf Gaida 9 years ago
parent c646cdaab7
commit 161a7316cf

@ -63,8 +63,7 @@ LXQtMainMenu::LXQtMainMenu(const ILXQtPanelPluginStartupInfo &startupInfo):
QObject(),
ILXQtPanelPlugin(startupInfo),
mMenu(0),
mShortcut(0),
mLockCascadeChanges(false)
mShortcut(0)
{
#ifdef HAVE_MENU_CACHE
mMenuCache = NULL;
@ -84,8 +83,18 @@ LXQtMainMenu::LXQtMainMenu(const ILXQtPanelPluginStartupInfo &startupInfo):
settingsChanged();
connect(mShortcut, SIGNAL(activated()), &mDelayedPopup, SLOT(start()));
connect(mShortcut, SIGNAL(shortcutChanged(QString,QString)), this, SLOT(shortcutChanged(QString,QString)));
mShortcut = GlobalKeyShortcut::Client::instance()->addAction(QString{}, QString("/panel/%1/show_hide").arg(settings()->group()), tr("Show/hide main menu"), this);
if (mShortcut)
{
connect(mShortcut, &GlobalKeyShortcut::Action::registrationFinished, [this] {
if (mShortcut->shortcut().isEmpty())
mShortcut->changeShortcut(DEFAULT_SHORTCUT);
else
mShortcutSeq = QKeySequence(mShortcut->shortcut());
});
connect(mShortcut, SIGNAL(activated()), &mDelayedPopup, SLOT(start()));
connect(mShortcut, SIGNAL(shortcutChanged(QString,QString)), this, SLOT(shortcutChanged(QString,QString)));
}
}
@ -124,13 +133,8 @@ void LXQtMainMenu::shortcutChanged(const QString &/*oldShortcut*/, const QString
{
if (!newShortcut.isEmpty())
{
mLockCascadeChanges = true;
settings()->setValue("dialog/shortcut", newShortcut);
settings()->sync();
mShortcutSeq = QKeySequence(newShortcut);
mLockCascadeChanges = false;
}
}
@ -161,9 +165,6 @@ void LXQtMainMenu::menuCacheReloadNotify(MenuCache* cache, gpointer user_data)
************************************************/
void LXQtMainMenu::settingsChanged()
{
if (mLockCascadeChanges)
return;
if (settings()->value("showText", false).toBool())
{
mButton.setText(settings()->value("text", "Start").toString());
@ -213,18 +214,6 @@ void LXQtMainMenu::settingsChanged()
#endif
}
QString shortcut = settings()->value("shortcut", DEFAULT_SHORTCUT).toString();
if (shortcut.isEmpty())
shortcut = DEFAULT_SHORTCUT;
if (!mShortcut)
mShortcut = GlobalKeyShortcut::Client::instance()->addAction(shortcut, QString("/panel/%1/show_hide").arg(settings()->group()), tr("Show/hide main menu"), this);
else if (mShortcut->shortcut() != shortcut)
{
mShortcut->changeShortcut(shortcut);
}
mShortcutSeq = QKeySequence(shortcut);
setMenuFontSize();
realign();
@ -301,7 +290,7 @@ void LXQtMainMenu::setMenuFontSize()
************************************************/
QDialog *LXQtMainMenu::configureDialog()
{
return new LXQtMainMenuConfiguration(*settings(), DEFAULT_SHORTCUT);
return new LXQtMainMenuConfiguration(*settings(), mShortcut, DEFAULT_SHORTCUT);
}
/************************************************

@ -95,7 +95,6 @@ private:
XdgMenu mXdgMenu;
#endif
bool mLockCascadeChanges;
QTimer mDelayedPopup;
QTimer mHideTimer;
QKeySequence mShortcutSeq;

@ -30,15 +30,17 @@
#include "ui_lxqtmainmenuconfiguration.h"
#include <XdgMenu>
#include <XdgIcon>
#include <lxqt-globalkeys.h>
#include <QFileDialog>
LXQtMainMenuConfiguration::LXQtMainMenuConfiguration(QSettings &settings, const QString &defaultShortcut, QWidget *parent) :
LXQtMainMenuConfiguration::LXQtMainMenuConfiguration(QSettings &settings, GlobalKeyShortcut::Action * shortcut, const QString &defaultShortcut, QWidget *parent) :
QDialog(parent),
ui(new Ui::LXQtMainMenuConfiguration),
mSettings(settings),
mOldSettings(settings),
mDefaultShortcut(defaultShortcut)
mDefaultShortcut(defaultShortcut),
mShortcut(shortcut)
{
setAttribute(Qt::WA_DeleteOnClose);
setObjectName("MainMenuConfigurationWindow");
@ -63,6 +65,8 @@ LXQtMainMenuConfiguration::LXQtMainMenuConfiguration(QSettings &settings, const
connect(ui->customFontCB, SIGNAL(toggled(bool)), this, SLOT(customFontChanged(bool)));
connect(ui->customFontSizeSB, SIGNAL(valueChanged(int)), this, SLOT(customFontSizeChanged(int)));
connect(mShortcut, &GlobalKeyShortcut::Action::shortcutChanged, this, &LXQtMainMenuConfiguration::globalShortcutChanged);
}
LXQtMainMenuConfiguration::~LXQtMainMenuConfiguration()
@ -81,7 +85,7 @@ void LXQtMainMenuConfiguration::loadSettings()
menuFile = XdgMenu::getMenuFileName();
}
ui->menuFilePathLE->setText(menuFile);
ui->shortcutEd->setText(mSettings.value("shortcut", "Alt+F1").toString());
ui->shortcutEd->setText(nullptr != mShortcut ? mShortcut->shortcut() : mDefaultShortcut);
ui->customFontCB->setChecked(mSettings.value("customFont", false).toBool());
LXQt::Settings lxqtSettings("lxqt"); //load system font size as init value
@ -116,10 +120,15 @@ void LXQtMainMenuConfiguration::chooseMenuFile()
d->show();
}
void LXQtMainMenuConfiguration::globalShortcutChanged(const QString &/*oldShortcut*/, const QString &newShortcut)
{
ui->shortcutEd->setText(newShortcut);
}
void LXQtMainMenuConfiguration::shortcutChanged(const QString &value)
{
ui->shortcutEd->setText(value);
mSettings.setValue("shortcut", value);
if (mShortcut)
mShortcut->changeShortcut(value);
}
void LXQtMainMenuConfiguration::shortcutReset()

@ -40,12 +40,16 @@ namespace Ui {
class LXQtMainMenuConfiguration;
}
namespace GlobalKeyShortcut {
class Action;
}
class LXQtMainMenuConfiguration : public QDialog
{
Q_OBJECT
public:
explicit LXQtMainMenuConfiguration(QSettings &settings, const QString &defaultShortcut, QWidget *parent = 0);
explicit LXQtMainMenuConfiguration(QSettings &settings, GlobalKeyShortcut::Action * shortcut, const QString &defaultShortcut, QWidget *parent = 0);
~LXQtMainMenuConfiguration();
private:
@ -53,8 +57,11 @@ private:
QSettings &mSettings;
LXQt::SettingsCache mOldSettings;
QString mDefaultShortcut;
GlobalKeyShortcut::Action * mShortcut;
private slots:
void globalShortcutChanged(const QString &oldShortcut, const QString &newShortcut);
void shortcutChanged(const QString &value);
/*
Saves settings in conf file.
*/
@ -63,7 +70,6 @@ private slots:
void textButtonChanged(const QString &value);
void showTextChanged(bool value);
void chooseMenuFile();
void shortcutChanged(const QString &value);
void shortcutReset();
void customFontChanged(bool value);
void customFontSizeChanged(int value);

@ -32,7 +32,9 @@
Button::Button(QWidget * parent) :
QToolButton(parent)
{
setIcon(XdgIcon::fromTheme(QStringLiteral("drive-removable-media")));
//Note: don't use the QStringLiteral here as it is causing a SEGFAULT in static finalization time
//(the string is released upon our *.so removal, but the reference is still in held in libqtxdg...)
setIcon(XdgIcon::fromTheme(QLatin1String("drive-removable-media")));
setToolTip(tr("Removable media/devices manager"));
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}

@ -89,7 +89,9 @@ void MenuDiskItem::setMountStatus(bool mounted)
void MenuDiskItem::updateMountStatus()
{
static const QIcon icon = XdgIcon::fromTheme(mDevice.icon(), QStringLiteral("drive-removable-media"));
//Note: don't use the QStringLiteral here as it is causing a SEGFAULT in static finalization time
//(the string is released upon our *.so removal, but the reference is still in held in libqtxdg...)
static const QIcon icon = XdgIcon::fromTheme(mDevice.icon(), QLatin1String("drive-removable-media"));
if (mDevice.isValid())
{

@ -142,7 +142,7 @@ void LXQtTaskBar::dragEnterEvent(QDragEnterEvent* event)
if (event->mimeData()->hasFormat(LXQtTaskGroup::mimeDataFormat()))
{
event->acceptProposedAction();
buttonMove(nullptr, LXQtTaskGroup::mimeDataData(event->mimeData()), event->pos());
buttonMove(nullptr, qobject_cast<LXQtTaskGroup *>(event->source()), event->pos());
} else
event->ignore();
QWidget::dragEnterEvent(event);
@ -154,23 +154,22 @@ void LXQtTaskBar::dragEnterEvent(QDragEnterEvent* event)
void LXQtTaskBar::dragMoveEvent(QDragMoveEvent * event)
{
//we don't get any dragMoveEvents if dragEnter wasn't accepted
buttonMove(nullptr, LXQtTaskGroup::mimeDataData(event->mimeData()), event->pos());
buttonMove(nullptr, qobject_cast<LXQtTaskGroup *>(event->source()), event->pos());
QWidget::dragMoveEvent(event);
}
/************************************************
************************************************/
void LXQtTaskBar::buttonMove(LXQtTaskGroup * dst, QString const & srcWindow, QPoint const & pos)
void LXQtTaskBar::buttonMove(LXQtTaskGroup * dst, LXQtTaskGroup * src, QPoint const & pos)
{
LXQtTaskGroup *src_group = mGroupsHash.value(srcWindow, nullptr);
if (!src_group)
int src_index;
if (!src || -1 == (src_index = mLayout->indexOf(src)))
{
qDebug() << "Dropped invalid";
return;
}
const int src_index = mLayout->indexOf(src_group);
const int size = mLayout->count();
Q_ASSERT(0 < size);
//dst is nullptr in case the drop occured on empty space in taskbar
@ -245,8 +244,8 @@ void LXQtTaskBar::addWindow(WId window, QString const & groupId)
connect(group, SIGNAL(visibilityChanged(bool)), this, SLOT(refreshPlaceholderVisibility()));
connect(group, &LXQtTaskGroup::popupShown, this, &LXQtTaskBar::groupPopupShown);
connect(group, SIGNAL(windowDisowned(WId)), this, SLOT(refreshTaskList()));
connect(group, &LXQtTaskButton::dragging, this, [this] (QString const & mimeWindow, QPoint const & pos) {
buttonMove(qobject_cast<LXQtTaskGroup *>(sender()), mimeWindow, pos);
connect(group, &LXQtTaskButton::dragging, this, [this] (QObject * dragSource, QPoint const & pos) {
buttonMove(qobject_cast<LXQtTaskGroup *>(sender()), qobject_cast<LXQtTaskGroup *>(dragSource), pos);
});
mLayout->addWidget(group);

@ -95,7 +95,7 @@ private slots:
private:
void addWindow(WId window, QString const & groupId);
void buttonMove(LXQtTaskGroup * dst, QString const & srcWindow, QPoint const & pos);
void buttonMove(LXQtTaskGroup * dst, LXQtTaskGroup * src, QPoint const & pos);
private:
QHash<QString, LXQtTaskGroup*> mGroupsHash;

@ -70,17 +70,6 @@ void LeftAlignedTextStyle::drawItemText(QPainter * painter, const QRect & rect,
}
/************************************************
************************************************/
QString LXQtTaskButton::mimeDataData(QMimeData const * mime)
{
QString data;
QDataStream stream(mime->data(mimeDataFormat()));
stream >> data;
return data;
}
/************************************************
************************************************/
@ -173,7 +162,7 @@ void LXQtTaskButton::dragEnterEvent(QDragEnterEvent *event)
event->acceptProposedAction();
if (event->mimeData()->hasFormat(mimeDataFormat()))
{
emit dragging(mimeDataData(event->mimeData()), event->pos());
emit dragging(event->source(), event->pos());
setAttribute(Qt::WA_UnderMouse, false);
} else
{
@ -187,7 +176,7 @@ void LXQtTaskButton::dragMoveEvent(QDragMoveEvent * event)
{
if (event->mimeData()->hasFormat(mimeDataFormat()))
{
emit dragging(mimeDataData(event->mimeData()), event->pos());
emit dragging(event->source(), event->pos());
setAttribute(Qt::WA_UnderMouse, false);
}
}
@ -203,7 +192,7 @@ void LXQtTaskButton::dropEvent(QDropEvent *event)
mDNDTimer->stop();
if (event->mimeData()->hasFormat(mimeDataFormat()))
{
emit dropped(mimeDataData(event->mimeData()), event->pos());
emit dropped(event->source(), event->pos());
setAttribute(Qt::WA_UnderMouse, false);
}
QToolButton::dropEvent(event);
@ -266,7 +255,20 @@ void LXQtTaskButton::mouseMoveEvent(QMouseEvent* event)
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData());
QIcon ico = icon();
drag->setPixmap(ico.pixmap(ico.actualSize({32, 32})));
QPixmap img = ico.pixmap(ico.actualSize({32, 32}));
drag->setPixmap(img);
switch (parentTaskBar()->panel()->position())
{
case ILXQtPanel::PositionLeft:
case ILXQtPanel::PositionTop:
drag->setHotSpot({0, 0});
break;
case ILXQtPanel::PositionRight:
case ILXQtPanel::PositionBottom:
drag->setHotSpot(img.rect().bottomRight());
break;
}
sDraggging = true;
drag->exec();

@ -85,7 +85,6 @@ public:
void refreshIconGeometry(QRect const & geom);
static QString mimeDataFormat() { return QLatin1String("lxqt/lxqttaskbutton"); }
static QString mimeDataData(QMimeData const * mime);
/*! \return true if this buttom received DragEnter event (and no DragLeave event yet)
* */
bool hasDragAndDropHover() const;
@ -136,8 +135,8 @@ private slots:
void activateWithDraggable();
signals:
void dropped(QString const & mimeWindow, QPoint const & pos);
void dragging(QString const & mimeWindow, QPoint const & pos);
void dropped(QObject * dragSource, QPoint const & pos);
void dragging(QObject * dragSource, QPoint const & pos);
};
typedef QHash<WId,LXQtTaskButton*> LXQtTaskButtonHash;

Loading…
Cancel
Save