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