From 400f6be1641d759633a0b62e3f3b9139b280b387 Mon Sep 17 00:00:00 2001 From: mrexodia Date: Mon, 10 Apr 2017 12:25:33 +0200 Subject: [PATCH] restore the 'responsive' functionality (closes issue #97) --- src/{Iaito.pro => iaito.pro} | 6 +- src/mainwindow.h | 2 +- src/optionsdialog.cpp | 2 +- src/widgets/commentswidget.cpp | 32 ++++------ src/widgets/commentswidget.h | 5 +- src/widgets/functionswidget.cpp | 32 ++++------ src/widgets/functionswidget.h | 3 +- src/widgets/{memwidget => }/memorywidget.cpp | 64 +++++++++++--------- src/widgets/{memwidget => }/memorywidget.h | 1 + src/widgets/{memwidget => }/memorywidget.ui | 18 +++--- src/widgets/sectionswidget.cpp | 29 ++++----- src/widgets/sectionswidget.h | 4 +- 12 files changed, 90 insertions(+), 108 deletions(-) rename src/{Iaito.pro => iaito.pro} (96%) rename src/widgets/{memwidget => }/memorywidget.cpp (97%) rename src/widgets/{memwidget => }/memorywidget.h (98%) rename src/widgets/{memwidget => }/memorywidget.ui (99%) diff --git a/src/Iaito.pro b/src/iaito.pro similarity index 96% rename from src/Iaito.pro rename to src/iaito.pro index b8cc7a51..2c8b9951 100644 --- a/src/Iaito.pro +++ b/src/iaito.pro @@ -51,7 +51,7 @@ SOURCES += \ widgets/commentswidget.cpp \ widgets/stringswidget.cpp \ widgets/flagswidget.cpp \ - widgets/memwidget/memorywidget.cpp \ + widgets/memorywidget.cpp \ qrdisasm.cpp \ widgets/sdbdock.cpp \ analthread.cpp \ @@ -86,7 +86,7 @@ HEADERS += \ widgets/commentswidget.h \ widgets/stringswidget.h \ widgets/flagswidget.h \ - widgets/memwidget/memorywidget.h \ + widgets/memorywidget.h \ qrdisasm.h \ widgets/sdbdock.h \ analthread.h \ @@ -114,7 +114,7 @@ FORMS += \ widgets/commentswidget.ui \ widgets/stringswidget.ui \ widgets/flagswidget.ui \ - widgets/memwidget/memorywidget.ui \ + widgets/memorywidget.ui \ widgets/sdbdock.ui \ dialogs/commentsdialog.ui \ widgets/sidebar.ui \ diff --git a/src/mainwindow.h b/src/mainwindow.h index 0aaef18d..3ba57742 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -15,7 +15,7 @@ #include "helpers.h" #include "qrcore.h" -#include "widgets/memwidget/memorywidget.h" +#include "widgets/memorywidget.h" #include "widgets/functionswidget.h" #include "widgets/sectionswidget.h" #include "widgets/commentswidget.h" diff --git a/src/optionsdialog.cpp b/src/optionsdialog.cpp index b4647e16..0abf49be 100644 --- a/src/optionsdialog.cpp +++ b/src/optionsdialog.cpp @@ -206,7 +206,7 @@ void OptionsDialog::on_okButton_clicked() // connect signal/slot int level = 0; - if (anal_level == true) + if (anal_level) { level = ui->analSlider->value(); } diff --git a/src/widgets/commentswidget.cpp b/src/widgets/commentswidget.cpp index 7f7a9e17..39df0e0e 100644 --- a/src/widgets/commentswidget.cpp +++ b/src/widgets/commentswidget.cpp @@ -26,9 +26,6 @@ CommentsWidget::CommentsWidget(MainWindow *main, QWidget *parent) : // Hide the buttons frame ui->frame->hide(); - - // Resize eventfilter - ui->commentsTreeWidget->viewport()->installEventFilter(this); } CommentsWidget::~CommentsWidget() @@ -126,27 +123,20 @@ void CommentsWidget::on_actionVertical_triggered() ui->tabWidget->setCurrentIndex(1); } -bool CommentsWidget::eventFilter(QObject *obj, QEvent *event) +void CommentsWidget::resizeEvent(QResizeEvent *event) { - if (this->main->responsive) + if(main->responsive && isVisible()) { - if (event->type() == QEvent::Resize && obj == this && this->isVisible()) + if (event->size().width() >= event->size().height()) { - QResizeEvent *resizeEvent = static_cast(event); - //qDebug("Dock Resized (New Size) - Width: %d Height: %d", - // resizeEvent->size().width(), - // resizeEvent->size().height()); - if (resizeEvent->size().width() >= resizeEvent->size().height()) - { - // Set horizontal view (list) - this->on_actionHorizontal_triggered(); - } - else - { - // Set vertical view (Tree) - this->on_actionVertical_triggered(); - } + // Set horizontal view (list) + on_actionHorizontal_triggered(); + } + else + { + // Set vertical view (Tree) + on_actionVertical_triggered(); } } - return QDockWidget::eventFilter(obj, event); + QDockWidget::resizeEvent(event); } diff --git a/src/widgets/commentswidget.h b/src/widgets/commentswidget.h index b5f29e92..50018e6e 100644 --- a/src/widgets/commentswidget.h +++ b/src/widgets/commentswidget.h @@ -24,6 +24,9 @@ public: QTreeWidget *nestedCommentsTreeWidget; void refreshTree(); +protected: + void resizeEvent(QResizeEvent *event) override; + private slots: void on_commentsTreeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column); @@ -37,8 +40,6 @@ private slots: void on_actionVertical_triggered(); - bool eventFilter(QObject *obj, QEvent *event) override; - private: Ui::CommentsWidget *ui; diff --git a/src/widgets/functionswidget.cpp b/src/widgets/functionswidget.cpp index 31f87178..da12deb2 100644 --- a/src/widgets/functionswidget.cpp +++ b/src/widgets/functionswidget.cpp @@ -37,9 +37,6 @@ FunctionsWidget::FunctionsWidget(MainWindow *main, QWidget *parent) : this->setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(showTitleContextMenu(const QPoint &))); - - // Resize eventfilter - ui->functionsTreeWidget->viewport()->installEventFilter(this); } FunctionsWidget::~FunctionsWidget() @@ -395,27 +392,20 @@ void FunctionsWidget::on_nestedFunctionsTree_itemDoubleClicked(QTreeWidgetItem * this->main->memoryDock->raise(); } -bool FunctionsWidget::eventFilter(QObject *obj, QEvent *event) +void FunctionsWidget::resizeEvent(QResizeEvent *event) { - if (this->main->responsive) + if(main->responsive && isVisible()) { - if (event->type() == QEvent::Resize && obj == this && this->isVisible() == true) + if (event->size().width() >= event->size().height()) { - QResizeEvent *resizeEvent = static_cast(event); - //qDebug("Dock Resized (New Size) - Width: %d Height: %d", - // resizeEvent->size().width(), - // resizeEvent->size().height()); - if (resizeEvent->size().width() >= resizeEvent->size().height()) - { - // Set horizontal view (list) - this->on_actionHorizontal_triggered(); - } - else - { - // Set vertical view (Tree) - this->on_actionVertical_triggered(); - } + // Set horizontal view (list) + on_actionHorizontal_triggered(); + } + else + { + // Set vertical view (Tree) + on_actionVertical_triggered(); } } - return QDockWidget::eventFilter(obj, event); + QDockWidget::resizeEvent(event); } diff --git a/src/widgets/functionswidget.h b/src/widgets/functionswidget.h index c3c65b07..26cba071 100644 --- a/src/widgets/functionswidget.h +++ b/src/widgets/functionswidget.h @@ -42,7 +42,8 @@ private slots: void on_nestedFunctionsTree_itemDoubleClicked(QTreeWidgetItem *item, int column); - bool eventFilter(QObject *obj, QEvent *event) override; +protected: + void resizeEvent(QResizeEvent *event) override; private: Ui::FunctionsWidget *ui; diff --git a/src/widgets/memwidget/memorywidget.cpp b/src/widgets/memorywidget.cpp similarity index 97% rename from src/widgets/memwidget/memorywidget.cpp rename to src/widgets/memorywidget.cpp index b95bcd26..72981c84 100644 --- a/src/widgets/memwidget/memorywidget.cpp +++ b/src/widgets/memorywidget.cpp @@ -106,7 +106,10 @@ MemoryWidget::MemoryWidget(MainWindow *main) : ui->actionSeparate_bytes->setDisabled(true); ui->actionRight_align_bytes->setDisabled(true); - // Resize eventfilter + // Event filter to intercept double clicks in the textbox (TODO: this does not work!) + ui->disasTextEdit_2->setMouseTracking(true); + ui->disasTextEdit_2->viewport()->setMouseTracking(true); + ui->disasTextEdit_2->installEventFilter(this); ui->disasTextEdit_2->viewport()->installEventFilter(this); // Set Splitter stretch factor @@ -1729,46 +1732,49 @@ void MemoryWidget::on_previewToolButton_2_clicked() } } -bool MemoryWidget::eventFilter(QObject *obj, QEvent *event) +void MemoryWidget::resizeEvent(QResizeEvent *event) { - if (event->type() == QEvent::Resize && obj == this && this->isVisible()) + if(main->responsive && isVisible()) { - if (this->main->responsive) + if (event->size().width() <= 1150) { - QResizeEvent *resizeEvent = static_cast(event); - //qDebug("Dock Resized (New Size) - Width: %d Height: %d", - // resizeEvent->size().width(), - // resizeEvent->size().height()); - if (resizeEvent->size().width() <= 1150) + ui->frame_3->setVisible(false); + ui->memPreviewTab->setVisible(false); + ui->previewToolButton_2->setChecked(false); + if (event->size().width() <= 950) { - ui->frame_3->setVisible(false); - ui->memPreviewTab->setVisible(false); - ui->previewToolButton_2->setChecked(false); - if (resizeEvent->size().width() <= 950) - { - ui->memSideTabWidget_2->hide(); - ui->hexSideTab_2->hide(); - ui->memSideToolButton->setChecked(true); - } - else - { - ui->memSideTabWidget_2->show(); - ui->hexSideTab_2->show(); - ui->memSideToolButton->setChecked(false); - } + ui->memSideTabWidget_2->hide(); + ui->hexSideTab_2->hide(); + ui->memSideToolButton->setChecked(true); } else { - ui->frame_3->setVisible(true); - ui->memPreviewTab->setVisible(true); - ui->previewToolButton_2->setChecked(true); + ui->memSideTabWidget_2->show(); + ui->hexSideTab_2->show(); + ui->memSideToolButton->setChecked(false); } } + else + { + ui->frame_3->setVisible(true); + ui->memPreviewTab->setVisible(true); + ui->previewToolButton_2->setChecked(true); + } } - else if ((obj == ui->disasTextEdit_2 || obj == ui->disasTextEdit_2->viewport()) && event->type() == QEvent::MouseButtonDblClick) + QDockWidget::resizeEvent(event); +} + +bool MemoryWidget::eventFilter(QObject *obj, QEvent *event) +{ + if(event->type() == QEvent::MouseButtonDblClick || event->type() == QEvent::MouseButtonPress) + QMessageBox::information(this, "double", "double"); + qDebug() << "MemoryWidget::eventFilter"; + qDebug() << obj; + qDebug() << event; + if ((obj == ui->disasTextEdit_2 || obj == ui->disasTextEdit_2->viewport()) && event->type() == QEvent::MouseButtonDblClick) { QMouseEvent *mouseEvent = static_cast(event); - //qDebug()<x()).arg(mouseEvent->y()); + qDebug()<x()).arg(mouseEvent->y()); QTextCursor cursor = ui->disasTextEdit_2->cursorForPosition(QPoint(mouseEvent->x(), mouseEvent->y())); cursor.select(QTextCursor::LineUnderCursor); QString lastline = cursor.selectedText(); diff --git a/src/widgets/memwidget/memorywidget.h b/src/widgets/memorywidget.h similarity index 98% rename from src/widgets/memwidget/memorywidget.h rename to src/widgets/memorywidget.h index 6df95a5d..6cf0e5bb 100644 --- a/src/widgets/memwidget/memorywidget.h +++ b/src/widgets/memorywidget.h @@ -88,6 +88,7 @@ public slots: void frameLoadFinished(bool ok); protected: + void resizeEvent(QResizeEvent *event) override; bool eventFilter(QObject *obj, QEvent *event) override; private: diff --git a/src/widgets/memwidget/memorywidget.ui b/src/widgets/memorywidget.ui similarity index 99% rename from src/widgets/memwidget/memorywidget.ui rename to src/widgets/memorywidget.ui index 0e929869..5c1d8bfa 100644 --- a/src/widgets/memwidget/memorywidget.ui +++ b/src/widgets/memorywidget.ui @@ -120,7 +120,7 @@ QToolTip { - + :/new/prefix1/img/icons/disas_light.png :/new/prefix1/img/icons/disas_white.png:/new/prefix1/img/icons/disas_light.png @@ -180,7 +180,7 @@ QToolTip { - + :/new/prefix1/img/icons/graph_light.png :/new/prefix1/img/icons/graph_white.png:/new/prefix1/img/icons/graph_light.png @@ -237,7 +237,7 @@ QToolTip { - + :/new/prefix1/img/icons/hexdump_light.png :/new/prefix1/img/icons/hexdump_white.png:/new/prefix1/img/icons/hexdump_light.png @@ -313,7 +313,7 @@ QToolTip { - + :/new/prefix1/img/icons/eye.png :/new/prefix1/img/icons/eye_white.png:/new/prefix1/img/icons/eye.png @@ -373,7 +373,7 @@ QToolTip { - + :/new/prefix1/img/icons/right.png:/new/prefix1/img/icons/right.png @@ -424,7 +424,7 @@ QToolTip { - + :/new/prefix1/img/icons/cog_light.png:/new/prefix1/img/icons/cog_light.png @@ -1499,7 +1499,7 @@ QToolTip { - + :/new/prefix1/img/icons/radar.png :/new/prefix1/img/icons/radar_white.png:/new/prefix1/img/icons/radar.png @@ -1560,7 +1560,7 @@ QToolTip { - + :/new/prefix1/img/icons/polar.png :/new/prefix1/img/icons/polar_white.png:/new/prefix1/img/icons/polar.png @@ -3042,7 +3042,7 @@ QToolTip { - + diff --git a/src/widgets/sectionswidget.cpp b/src/widgets/sectionswidget.cpp index 8e6b7486..685b040f 100644 --- a/src/widgets/sectionswidget.cpp +++ b/src/widgets/sectionswidget.cpp @@ -98,27 +98,20 @@ void SectionsWidget::adjustColumns() } } -bool SectionsWidget::eventFilter(QObject *obj, QEvent *event) +void SectionsWidget::resizeEvent(QResizeEvent *event) { - if (this->main->responsive) + if(main->responsive && isVisible()) { - if (event->type() == QEvent::Resize && obj == this && this->isVisible()) + if (event->size().width() >= event->size().height()) { - QResizeEvent *resizeEvent = static_cast(event); - //qDebug("Dock Resized (New Size) - Width: %d Height: %d", - // resizeEvent->size().width(), - // resizeEvent->size().height()); - if (resizeEvent->size().width() >= resizeEvent->size().height()) - { - // Set horizontal view (list) - this->main->on_actionSectionsHorizontal_triggered(); - } - else - { - // Set vertical view (Tree) - this->main->on_actionSectionsVertical_triggered(); - } + // Set horizontal view (list) + main->on_actionSectionsHorizontal_triggered(); + } + else + { + // Set vertical view (Tree) + main->on_actionSectionsVertical_triggered(); } } - return QSplitter::eventFilter(obj, event); + QWidget::resizeEvent(event); } diff --git a/src/widgets/sectionswidget.h b/src/widgets/sectionswidget.h index 8e818f0a..a30e5cf9 100644 --- a/src/widgets/sectionswidget.h +++ b/src/widgets/sectionswidget.h @@ -30,7 +30,8 @@ public: void adjustColumns(); QTreeWidget *tree; -private slots: +protected: + void resizeEvent(QResizeEvent *event) override; private: //void setupModel(); @@ -40,7 +41,6 @@ private: QAbstractItemView *pieChart; QItemSelectionModel *selectionModel; MainWindow *main; - bool eventFilter(QObject *obj, QEvent *event) override; }; #endif // SECTIONSWIDGET_H