restore the 'responsive' functionality (closes issue #97)

This commit is contained in:
mrexodia 2017-04-10 12:25:33 +02:00
parent bee9d28683
commit 400f6be164
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
12 changed files with 90 additions and 108 deletions

View File

@ -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 \

View File

@ -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"

View File

@ -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();
}

View File

@ -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<QResizeEvent *>(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);
}

View File

@ -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;

View File

@ -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<QResizeEvent *>(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);
}

View File

@ -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;

View File

@ -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<QResizeEvent *>(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<QMouseEvent *>(event);
//qDebug()<<QString("Click location: (%1,%2)").arg(mouseEvent->x()).arg(mouseEvent->y());
qDebug()<<QString("Click location: (%1,%2)").arg(mouseEvent->x()).arg(mouseEvent->y());
QTextCursor cursor = ui->disasTextEdit_2->cursorForPosition(QPoint(mouseEvent->x(), mouseEvent->y()));
cursor.select(QTextCursor::LineUnderCursor);
QString lastline = cursor.selectedText();

View File

@ -88,6 +88,7 @@ public slots:
void frameLoadFinished(bool ok);
protected:
void resizeEvent(QResizeEvent *event) override;
bool eventFilter(QObject *obj, QEvent *event) override;
private:

View File

@ -120,7 +120,7 @@ QToolTip {
<string notr="true"/>
</property>
<property name="icon">
<iconset resource="../../resources.qrc">
<iconset resource="../resources.qrc">
<normaloff>:/new/prefix1/img/icons/disas_light.png</normaloff>
<activeon>:/new/prefix1/img/icons/disas_white.png</activeon>:/new/prefix1/img/icons/disas_light.png</iconset>
</property>
@ -180,7 +180,7 @@ QToolTip {
<string/>
</property>
<property name="icon">
<iconset resource="../../resources.qrc">
<iconset resource="../resources.qrc">
<normaloff>:/new/prefix1/img/icons/graph_light.png</normaloff>
<activeon>:/new/prefix1/img/icons/graph_white.png</activeon>:/new/prefix1/img/icons/graph_light.png</iconset>
</property>
@ -237,7 +237,7 @@ QToolTip {
<string/>
</property>
<property name="icon">
<iconset resource="../../resources.qrc">
<iconset resource="../resources.qrc">
<normaloff>:/new/prefix1/img/icons/hexdump_light.png</normaloff>
<activeon>:/new/prefix1/img/icons/hexdump_white.png</activeon>:/new/prefix1/img/icons/hexdump_light.png</iconset>
</property>
@ -313,7 +313,7 @@ QToolTip {
<string notr="true"/>
</property>
<property name="icon">
<iconset resource="../../resources.qrc">
<iconset resource="../resources.qrc">
<normaloff>:/new/prefix1/img/icons/eye.png</normaloff>
<activeon>:/new/prefix1/img/icons/eye_white.png</activeon>:/new/prefix1/img/icons/eye.png</iconset>
</property>
@ -373,7 +373,7 @@ QToolTip {
<string notr="true"/>
</property>
<property name="icon">
<iconset resource="../../resources.qrc">
<iconset resource="../resources.qrc">
<normaloff>:/new/prefix1/img/icons/right.png</normaloff>:/new/prefix1/img/icons/right.png</iconset>
</property>
<property name="checkable">
@ -424,7 +424,7 @@ QToolTip {
<string/>
</property>
<property name="icon">
<iconset resource="../../resources.qrc">
<iconset resource="../resources.qrc">
<normaloff>:/new/prefix1/img/icons/cog_light.png</normaloff>:/new/prefix1/img/icons/cog_light.png</iconset>
</property>
<property name="popupMode">
@ -1499,7 +1499,7 @@ QToolTip {
<string/>
</property>
<property name="icon">
<iconset resource="../../resources.qrc">
<iconset resource="../resources.qrc">
<normaloff>:/new/prefix1/img/icons/radar.png</normaloff>
<activeon>:/new/prefix1/img/icons/radar_white.png</activeon>:/new/prefix1/img/icons/radar.png</iconset>
</property>
@ -1560,7 +1560,7 @@ QToolTip {
<string/>
</property>
<property name="icon">
<iconset resource="../../resources.qrc">
<iconset resource="../resources.qrc">
<normaloff>:/new/prefix1/img/icons/polar.png</normaloff>
<activeon>:/new/prefix1/img/icons/polar_white.png</activeon>:/new/prefix1/img/icons/polar.png</iconset>
</property>
@ -3042,7 +3042,7 @@ QToolTip {
</customwidget>
</customwidgets>
<resources>
<include location="../../resources.qrc"/>
<include location="../resources.qrc"/>
</resources>
<connections/>
<buttongroups>

View File

@ -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<QResizeEvent *>(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);
}

View File

@ -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