do not mark message as read when right click with mouse
This commit is contained in:
parent
9855b8a523
commit
e9a9b32335
7 changed files with 50 additions and 21 deletions
|
@ -26,7 +26,7 @@
|
|||
<url type="donation">https://github.com/sponsors/martinrotter</url>
|
||||
<content_rating type="oars-1.1" />
|
||||
<releases>
|
||||
<release version="4.0.4" date="2021-10-15"/>
|
||||
<release version="4.0.4" date="2021-10-19"/>
|
||||
</releases>
|
||||
<content_rating type="oars-1.0">
|
||||
<content_attribute id="violence-cartoon">none</content_attribute>
|
||||
|
|
|
@ -407,9 +407,7 @@ void FormMain::onFeedUpdatesStarted() {
|
|||
|
||||
void FormMain::onFeedUpdatesProgress(const Feed* feed, int current, int total) {
|
||||
statusBar()->showProgressFeeds(int((current * 100.0) / total),
|
||||
|
||||
//: Text display in status bar when particular feed is updated.
|
||||
tr("Fetched '%1'").arg(TextFactory::shorten(feed->title())));
|
||||
feed->title());
|
||||
}
|
||||
|
||||
void FormMain::updateMessageButtonsAvailability() {
|
||||
|
|
|
@ -27,7 +27,8 @@
|
|||
#include <QTimer>
|
||||
|
||||
MessagesView::MessagesView(QWidget* parent)
|
||||
: BaseTreeView(parent), m_contextMenu(nullptr), m_columnsAdjusted(false), m_processingMouse(false) {
|
||||
: BaseTreeView(parent), m_contextMenu(nullptr), m_columnsAdjusted(false), m_processingAnyMouseButton(false),
|
||||
m_processingRightMouseButton(false) {
|
||||
m_sourceModel = qApp->feedReader()->messagesModel();
|
||||
m_proxyModel = qApp->feedReader()->messagesProxyModel();
|
||||
|
||||
|
@ -351,9 +352,13 @@ void MessagesView::initializeContextMenu() {
|
|||
}
|
||||
|
||||
void MessagesView::mousePressEvent(QMouseEvent* event) {
|
||||
m_processingMouse = true;
|
||||
m_processingAnyMouseButton = true;
|
||||
m_processingRightMouseButton = event->button() == Qt::MouseButton::RightButton;
|
||||
|
||||
QTreeView::mousePressEvent(event);
|
||||
m_processingMouse = false;
|
||||
|
||||
m_processingAnyMouseButton = false;
|
||||
m_processingRightMouseButton = false;
|
||||
|
||||
switch (event->button()) {
|
||||
case Qt::MouseButton::LeftButton: {
|
||||
|
@ -415,8 +420,10 @@ void MessagesView::selectionChanged(const QItemSelection& selected, const QItemS
|
|||
|
||||
// Set this message as read only if current item
|
||||
// wasn't changed by "mark selected messages unread" action.
|
||||
m_sourceModel->setMessageRead(mapped_current_index.row(), RootItem::ReadStatus::Read);
|
||||
message.m_isRead = true;
|
||||
if (!m_processingRightMouseButton) {
|
||||
m_sourceModel->setMessageRead(mapped_current_index.row(), RootItem::ReadStatus::Read);
|
||||
message.m_isRead = true;
|
||||
}
|
||||
|
||||
emit currentMessageChanged(message, m_sourceModel->loadedItem());
|
||||
}
|
||||
|
@ -428,7 +435,7 @@ void MessagesView::selectionChanged(const QItemSelection& selected, const QItemS
|
|||
setCurrentIndex({});
|
||||
}
|
||||
|
||||
if (!m_processingMouse &&
|
||||
if (!m_processingAnyMouseButton &&
|
||||
qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()) {
|
||||
scrollTo(currentIndex(), QAbstractItemView::ScrollHint::PositionAtCenter);
|
||||
}
|
||||
|
@ -616,7 +623,7 @@ void MessagesView::selectNextItem() {
|
|||
setCurrentIndex(index_next);
|
||||
|
||||
scrollTo(index_next,
|
||||
!m_processingMouse && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()
|
||||
!m_processingAnyMouseButton && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()
|
||||
? QAbstractItemView::ScrollHint::PositionAtCenter
|
||||
: QAbstractItemView::ScrollHint::PositionAtTop);
|
||||
|
||||
|
@ -632,7 +639,7 @@ void MessagesView::selectPreviousItem() {
|
|||
setCurrentIndex(index_previous);
|
||||
|
||||
scrollTo(index_previous,
|
||||
!m_processingMouse && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()
|
||||
!m_processingAnyMouseButton && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()
|
||||
? QAbstractItemView::ScrollHint::PositionAtCenter
|
||||
: QAbstractItemView::ScrollHint::PositionAtTop);
|
||||
|
||||
|
@ -664,7 +671,7 @@ void MessagesView::selectNextUnreadItem() {
|
|||
qApp->processEvents();
|
||||
|
||||
scrollTo(next_unread,
|
||||
!m_processingMouse && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()
|
||||
!m_processingAnyMouseButton && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()
|
||||
? QAbstractItemView::ScrollHint::PositionAtCenter
|
||||
: QAbstractItemView::ScrollHint::PositionAtTop);
|
||||
|
||||
|
@ -692,7 +699,7 @@ void MessagesView::searchMessages(const QString& pattern) {
|
|||
else {
|
||||
// Scroll to selected message, it could become scrolled out due to filter change.
|
||||
scrollTo(selectionModel()->selectedRows().at(0),
|
||||
!m_processingMouse && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()
|
||||
!m_processingAnyMouseButton && qApp->settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()
|
||||
? QAbstractItemView::ScrollHint::PositionAtCenter
|
||||
: QAbstractItemView::ScrollHint::EnsureVisible);
|
||||
}
|
||||
|
|
|
@ -107,7 +107,8 @@ class MessagesView : public BaseTreeView {
|
|||
MessagesProxyModel* m_proxyModel;
|
||||
MessagesModel* m_sourceModel;
|
||||
bool m_columnsAdjusted;
|
||||
bool m_processingMouse;
|
||||
bool m_processingAnyMouseButton;
|
||||
bool m_processingRightMouseButton;
|
||||
};
|
||||
|
||||
inline MessagesProxyModel* MessagesView::model() const {
|
||||
|
|
|
@ -5,26 +5,44 @@
|
|||
#include "definitions/definitions.h"
|
||||
#include "miscellaneous/application.h"
|
||||
|
||||
ProgressBarWithText::ProgressBarWithText(QWidget* parent) : QProgressBar(parent) {}
|
||||
ProgressBarWithText::ProgressBarWithText(QWidget* parent) : QProgressBar(parent) {
|
||||
//setSizePolicy(QSizePolicy::Policy::Maximum, QSizePolicy::Policy::Preferred);
|
||||
}
|
||||
|
||||
/*
|
||||
QSize ProgressBarWithText::minimumSizeHint() const {
|
||||
QString txt = text();
|
||||
|
||||
return QSize(fontMetrics().boundingRect(txt).width() + 32,
|
||||
QProgressBar::minimumSizeHint().height());
|
||||
}
|
||||
|
||||
QSize ProgressBarWithText::sizeHint() const {
|
||||
QString txt = text();
|
||||
|
||||
return QSize(fontMetrics().boundingRect(txt).width() + 32,
|
||||
QProgressBar::sizeHint().height());
|
||||
}
|
||||
*/
|
||||
|
||||
QString ProgressBarWithText::text() const {
|
||||
qint64 totalSteps = qint64(maximum()) - minimum();
|
||||
qint64 total_steps = qint64(maximum()) - minimum();
|
||||
QString result = format();
|
||||
QLocale locale;
|
||||
|
||||
locale.setNumberOptions(locale.numberOptions() | QLocale::OmitGroupSeparator);
|
||||
result.replace(QLatin1String("%m"), locale.toString(totalSteps));
|
||||
result.replace(QLatin1String("%m"), locale.toString(total_steps));
|
||||
result.replace(QLatin1String("%v"), locale.toString(value()));
|
||||
|
||||
// If max and min are equal and we get this far, it means that the
|
||||
// progress bar has one step and that we are on that step. Return
|
||||
// 100% here in order to avoid division by zero further down.
|
||||
if (totalSteps == 0) {
|
||||
if (total_steps == 0) {
|
||||
result.replace(QLatin1String("%p"), locale.toString(100));
|
||||
return result;
|
||||
}
|
||||
|
||||
const auto progress = static_cast<int>((qint64(value()) - minimum()) * 100.0 / totalSteps);
|
||||
const auto progress = static_cast<int>((qint64(value()) - minimum()) * 100.0 / total_steps);
|
||||
|
||||
result.replace(QLatin1String("%p"), locale.toString(progress));
|
||||
return result;
|
||||
|
|
|
@ -9,6 +9,11 @@ class ProgressBarWithText : public QProgressBar {
|
|||
public:
|
||||
explicit ProgressBarWithText(QWidget* parent = nullptr);
|
||||
|
||||
// NOTE: Can be uncommented (along with constructor code)
|
||||
// to enable automatic fit-to-contents progress bars.
|
||||
//virtual QSize minimumSizeHint() const;
|
||||
//virtual QSize sizeHint() const;
|
||||
|
||||
virtual QString text() const;
|
||||
};
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ StatusBar::StatusBar(QWidget* parent) : QStatusBar(parent) {
|
|||
|
||||
m_barProgressFeeds = new ProgressBarWithText(this);
|
||||
m_barProgressFeeds->setTextVisible(true);
|
||||
m_barProgressFeeds->setFixedWidth(230);
|
||||
m_barProgressFeeds->setFixedWidth(250);
|
||||
m_barProgressFeeds->setVisible(false);
|
||||
m_barProgressFeeds->setObjectName(QSL("m_barProgressFeeds"));
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue