mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-04 21:39:52 +08:00
fix button popup (#2603)
This commit is contained in:
parent
3ec78f4c36
commit
8494a714cd
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
|||||||
*.pro.user.*
|
*.pro.user.*
|
||||||
.ccls
|
.ccls
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
|
compile_commands.json.*
|
||||||
compile_flags.txt
|
compile_flags.txt
|
||||||
.cache
|
.cache
|
||||||
.tasks
|
.tasks
|
||||||
|
@ -29,8 +29,7 @@
|
|||||||
using namespace vnotex;
|
using namespace vnotex;
|
||||||
|
|
||||||
AttachmentPopup::AttachmentPopup(QToolButton *p_btn, QWidget *p_parent)
|
AttachmentPopup::AttachmentPopup(QToolButton *p_btn, QWidget *p_parent)
|
||||||
: QMenu(p_parent),
|
: ButtonPopup(p_btn, p_parent)
|
||||||
m_button(p_btn)
|
|
||||||
{
|
{
|
||||||
setupUI();
|
setupUI();
|
||||||
|
|
||||||
@ -68,7 +67,7 @@ void AttachmentPopup::setupUI()
|
|||||||
const auto destFolderPath = getDestFolderPath();
|
const auto destFolderPath = getDestFolderPath();
|
||||||
|
|
||||||
auto &sessionConfig = ConfigMgr::getInst().getSessionConfig();
|
auto &sessionConfig = ConfigMgr::getInst().getSessionConfig();
|
||||||
auto files = QFileDialog::getOpenFileNames(this,
|
auto files = QFileDialog::getOpenFileNames(nullptr,
|
||||||
tr("Select Files As Attachments"),
|
tr("Select Files As Attachments"),
|
||||||
sessionConfig.getExternalMediaDefaultPath());
|
sessionConfig.getExternalMediaDefaultPath());
|
||||||
if (files.isEmpty()) {
|
if (files.isEmpty()) {
|
||||||
@ -206,12 +205,7 @@ void AttachmentPopup::setupUI()
|
|||||||
|
|
||||||
widget->setMinimumSize(320, 384);
|
widget->setMinimumSize(320, 384);
|
||||||
|
|
||||||
|
addWidget(widget);
|
||||||
auto act = new QWidgetAction(this);
|
|
||||||
// @act will own @p_widget.
|
|
||||||
act->setDefaultWidget(widget);
|
|
||||||
addAction(act);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QToolButton *AttachmentPopup::createButton()
|
QToolButton *AttachmentPopup::createButton()
|
||||||
|
@ -1,16 +1,14 @@
|
|||||||
#ifndef ATTACHMENTPOPUP_H
|
#ifndef ATTACHMENTPOPUP_H
|
||||||
#define ATTACHMENTPOPUP_H
|
#define ATTACHMENTPOPUP_H
|
||||||
|
|
||||||
#include <QMenu>
|
#include "buttonpopup.h"
|
||||||
|
|
||||||
class QToolButton;
|
|
||||||
|
|
||||||
namespace vnotex
|
namespace vnotex
|
||||||
{
|
{
|
||||||
class FileSystemViewer;
|
class FileSystemViewer;
|
||||||
class Buffer;
|
class Buffer;
|
||||||
|
|
||||||
class AttachmentPopup : public QMenu
|
class AttachmentPopup : public ButtonPopup
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
@ -43,9 +41,6 @@ namespace vnotex
|
|||||||
FileSystemViewer *m_viewer = nullptr;
|
FileSystemViewer *m_viewer = nullptr;
|
||||||
|
|
||||||
bool m_needUpdateAttachmentFolder = true;
|
bool m_needUpdateAttachmentFolder = true;
|
||||||
|
|
||||||
// Button for this menu.
|
|
||||||
QToolButton *m_button = nullptr;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "buttonpopup.h"
|
#include "buttonpopup.h"
|
||||||
|
|
||||||
#include <QVBoxLayout>
|
#include <QWidgetAction>
|
||||||
|
|
||||||
#include <utils/widgetutils.h>
|
#include <utils/widgetutils.h>
|
||||||
|
|
||||||
@ -10,8 +10,6 @@ ButtonPopup::ButtonPopup(QToolButton *p_btn, QWidget *p_parent)
|
|||||||
: QMenu(p_parent),
|
: QMenu(p_parent),
|
||||||
m_button(p_btn)
|
m_button(p_btn)
|
||||||
{
|
{
|
||||||
setupUI();
|
|
||||||
|
|
||||||
#if defined(Q_OS_MACOS) || defined(Q_OS_MAC)
|
#if defined(Q_OS_MACOS) || defined(Q_OS_MAC)
|
||||||
// Qt::Popup on macOS does not work well with input method.
|
// Qt::Popup on macOS does not work well with input method.
|
||||||
setWindowFlags(Qt::Tool | Qt::NoDropShadowWindowHint);
|
setWindowFlags(Qt::Tool | Qt::NoDropShadowWindowHint);
|
||||||
@ -19,16 +17,10 @@ ButtonPopup::ButtonPopup(QToolButton *p_btn, QWidget *p_parent)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void ButtonPopup::setupUI()
|
void ButtonPopup::addWidget(QWidget *p_widget)
|
||||||
{
|
{
|
||||||
auto mainLayout = new QVBoxLayout(this);
|
auto act = new QWidgetAction(this);
|
||||||
WidgetUtils::setContentsMargins(mainLayout);
|
// @act will own @p_widget.
|
||||||
}
|
act->setDefaultWidget(p_widget);
|
||||||
|
addAction(act);
|
||||||
void ButtonPopup::setCentralWidget(QWidget *p_widget)
|
|
||||||
{
|
|
||||||
Q_ASSERT(p_widget);
|
|
||||||
auto mainLayout = layout();
|
|
||||||
Q_ASSERT(mainLayout->count() == 0);
|
|
||||||
mainLayout->addWidget(p_widget);
|
|
||||||
}
|
}
|
||||||
|
@ -15,10 +15,7 @@ namespace vnotex
|
|||||||
ButtonPopup(QToolButton *p_btn, QWidget *p_parent = nullptr);
|
ButtonPopup(QToolButton *p_btn, QWidget *p_parent = nullptr);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setCentralWidget(QWidget *p_widget);
|
void addWidget(QWidget *p_widget);
|
||||||
|
|
||||||
private:
|
|
||||||
void setupUI();
|
|
||||||
|
|
||||||
// Button for this menu.
|
// Button for this menu.
|
||||||
QToolButton *m_button = nullptr;
|
QToolButton *m_button = nullptr;
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
#include "outlinepopup.h"
|
#include "outlinepopup.h"
|
||||||
|
|
||||||
#include <QVBoxLayout>
|
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <QWidgetAction>
|
|
||||||
|
|
||||||
#include <core/global.h>
|
#include <core/global.h>
|
||||||
#include <utils/widgetutils.h>
|
#include <utils/widgetutils.h>
|
||||||
@ -11,8 +9,7 @@
|
|||||||
using namespace vnotex;
|
using namespace vnotex;
|
||||||
|
|
||||||
OutlinePopup::OutlinePopup(QToolButton *p_btn, QWidget *p_parent)
|
OutlinePopup::OutlinePopup(QToolButton *p_btn, QWidget *p_parent)
|
||||||
: QMenu(p_parent),
|
: ButtonPopup(p_btn, p_parent)
|
||||||
m_button(p_btn)
|
|
||||||
{
|
{
|
||||||
setupUI();
|
setupUI();
|
||||||
|
|
||||||
@ -26,13 +23,7 @@ void OutlinePopup::setupUI()
|
|||||||
{
|
{
|
||||||
m_viewer = new OutlineViewer(tr("Outline"), this);
|
m_viewer = new OutlineViewer(tr("Outline"), this);
|
||||||
m_viewer->setMinimumSize(320, 384);
|
m_viewer->setMinimumSize(320, 384);
|
||||||
|
addWidget(m_viewer);
|
||||||
auto act = new QWidgetAction(this);
|
|
||||||
// @act will own @p_widget.
|
|
||||||
act->setDefaultWidget(m_viewer);
|
|
||||||
addAction(act);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutlinePopup::setOutlineProvider(const QSharedPointer<OutlineProvider> &p_provider)
|
void OutlinePopup::setOutlineProvider(const QSharedPointer<OutlineProvider> &p_provider)
|
||||||
@ -42,7 +33,7 @@ void OutlinePopup::setOutlineProvider(const QSharedPointer<OutlineProvider> &p_p
|
|||||||
|
|
||||||
void OutlinePopup::showEvent(QShowEvent* p_event)
|
void OutlinePopup::showEvent(QShowEvent* p_event)
|
||||||
{
|
{
|
||||||
QMenu::showEvent(p_event);
|
ButtonPopup::showEvent(p_event);
|
||||||
|
|
||||||
// Move it to be right-aligned.
|
// Move it to be right-aligned.
|
||||||
if (m_button->isVisible()) {
|
if (m_button->isVisible()) {
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#ifndef OUTLINEPOPUP_H
|
#ifndef OUTLINEPOPUP_H
|
||||||
#define OUTLINEPOPUP_H
|
#define OUTLINEPOPUP_H
|
||||||
|
|
||||||
#include <QMenu>
|
#include "buttonpopup.h"
|
||||||
|
|
||||||
#include <QSharedPointer>
|
#include <QSharedPointer>
|
||||||
|
|
||||||
class QToolButton;
|
class QToolButton;
|
||||||
@ -11,7 +12,7 @@ namespace vnotex
|
|||||||
class OutlineProvider;
|
class OutlineProvider;
|
||||||
class OutlineViewer;
|
class OutlineViewer;
|
||||||
|
|
||||||
class OutlinePopup : public QMenu
|
class OutlinePopup : public ButtonPopup
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
@ -27,9 +28,6 @@ namespace vnotex
|
|||||||
|
|
||||||
// Managed by QObject.
|
// Managed by QObject.
|
||||||
OutlineViewer *m_viewer = nullptr;
|
OutlineViewer *m_viewer = nullptr;
|
||||||
|
|
||||||
// Button with this menu.
|
|
||||||
QToolButton *m_button = nullptr;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
#include "tagpopup.h"
|
#include "tagpopup.h"
|
||||||
|
|
||||||
#include <QHBoxLayout>
|
|
||||||
#include <QVBoxLayout>
|
|
||||||
#include <QWidgetAction>
|
|
||||||
|
|
||||||
#include <utils/widgetutils.h>
|
#include <utils/widgetutils.h>
|
||||||
#include <buffer/buffer.h>
|
#include <buffer/buffer.h>
|
||||||
|
|
||||||
@ -31,14 +27,8 @@ TagPopup::TagPopup(QToolButton *p_btn, QWidget *p_parent)
|
|||||||
void TagPopup::setupUI()
|
void TagPopup::setupUI()
|
||||||
{
|
{
|
||||||
m_tagViewer = new TagViewer(true, this);
|
m_tagViewer = new TagViewer(true, this);
|
||||||
//setCentralWidget(m_tagViewer);
|
|
||||||
|
|
||||||
m_tagViewer->setMinimumSize(256, 320);
|
m_tagViewer->setMinimumSize(256, 320);
|
||||||
|
addWidget(m_tagViewer);
|
||||||
auto act = new QWidgetAction(this);
|
|
||||||
// @act will own @p_widget.
|
|
||||||
act->setDefaultWidget(m_tagViewer);
|
|
||||||
addAction(act);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagPopup::setBuffer(Buffer *p_buffer)
|
void TagPopup::setBuffer(Buffer *p_buffer)
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QWidgetAction>
|
|
||||||
|
|
||||||
#include <utils/widgetutils.h>
|
#include <utils/widgetutils.h>
|
||||||
|
|
||||||
@ -72,10 +71,5 @@ void WordCountPopup::updateCount(const ViewWindow::WordCountInfo &p_info)
|
|||||||
void WordCountPopup::setupUI()
|
void WordCountPopup::setupUI()
|
||||||
{
|
{
|
||||||
m_panel = new WordCountPanel(this);
|
m_panel = new WordCountPanel(this);
|
||||||
|
addWidget(m_panel);
|
||||||
|
|
||||||
auto act = new QWidgetAction(this);
|
|
||||||
// @act will own @p_widget.
|
|
||||||
act->setDefaultWidget(m_panel);
|
|
||||||
addAction(act);
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user