From c41415a665961adf14f62eccf601d81d8b3d55c7 Mon Sep 17 00:00:00 2001 From: vsv Date: Mon, 21 Apr 2014 19:28:36 +0400 Subject: [PATCH] Solved "frozen" buttons in toolbar on second window activation (Issue #32) --- src/XGUI/XGUI_ViewWindow.cpp | 23 +++++++++++++---------- src/XGUI/XGUI_Viewer.cpp | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/XGUI/XGUI_ViewWindow.cpp b/src/XGUI/XGUI_ViewWindow.cpp index 3de5191cd..38d259ff9 100644 --- a/src/XGUI/XGUI_ViewWindow.cpp +++ b/src/XGUI/XGUI_ViewWindow.cpp @@ -82,15 +82,12 @@ const char* imageCrossCursor[] = { "32 32 3 1", ". c None", "a c #000000", "# c ViewerToolbar::ViewerToolbar(QWidget* theParent, XGUI_ViewPort* thePort) : QToolBar(theParent), myVPort(thePort), myResize(false) { - setBackgroundRole(QPalette::NoRole); - setAttribute(Qt::WA_NoSystemBackground); - //setAttribute(Qt::WA_PaintOnScreen); - setAutoFillBackground(false); connect(myVPort, SIGNAL(resized()), this, SLOT(onViewPortResized())); } void ViewerToolbar::paintEvent(QPaintEvent* theEvent) { + //QToolBar::paintEvent(theEvent); // Paint background QPainter aPainter(this); QRect aRect = rect(); @@ -119,10 +116,6 @@ void ViewerToolbar::paintEvent(QPaintEvent* theEvent) ViewerLabel::ViewerLabel(QWidget* theParent, XGUI_ViewPort* thePort) : QLabel(theParent), myVPort(thePort), myResize(false) { - setBackgroundRole(QPalette::NoRole); - setAttribute(Qt::WA_NoSystemBackground); - //setAttribute(Qt::WA_PaintOnScreen); - setAutoFillBackground(false); connect(myVPort, SIGNAL(resized()), this, SLOT(onViewPortResized())); } @@ -194,7 +187,7 @@ XGUI_ViewWindow::XGUI_ViewWindow(XGUI_Viewer* theViewer, V3d_TypeOfView theType) QHBoxLayout* aToolLay = new QHBoxLayout(); aToolLay->setMargin(0); aToolLay->setSpacing(0); - aVPLay->setContentsMargins(0,0,0,0); + aToolLay->setContentsMargins(0,0,0,0); aVPLay->addLayout(aToolLay); aVPLay->addStretch(); @@ -428,6 +421,9 @@ void XGUI_ViewWindow::onMaximize() } parentWidget()->activateWindow(); myMinimizeBtn->setIcon(MinimizeIco); + + // In order to avoid frosen background in toolbars when it shown as a second view + QTimer::singleShot(50, parentWidget(), SLOT(setFocus())); } //**************************************************************** @@ -477,8 +473,11 @@ bool XGUI_ViewWindow::processWindowControls(QObject *theObj, QEvent *theEvent) } else { showNormal(); } - raise(); myViewer->onWindowActivated((QMdiSubWindow*)parentWidget()); + + // In order to avoid frosen background in toolbars when it shown as a second view + QTimer::singleShot(20, parentWidget(), SLOT(setFocus())); + return true; } } @@ -1011,7 +1010,11 @@ void XGUI_ViewWindow::cloneView() QMdiSubWindow* vw = myViewer->createView(); XGUI_ViewWindow* aNewWnd = static_cast(vw->widget()); aNewWnd->viewPort()->syncronizeWith(myViewPort); + emit viewCloned( vw ); + + // In order to avoid frosen background in toolbars when it shown as a second view + QTimer::singleShot(20, vw, SLOT(setFocus())); } void XGUI_ViewWindow::dumpView() diff --git a/src/XGUI/XGUI_Viewer.cpp b/src/XGUI/XGUI_Viewer.cpp index 917b3d552..b02a735eb 100644 --- a/src/XGUI/XGUI_Viewer.cpp +++ b/src/XGUI/XGUI_Viewer.cpp @@ -417,7 +417,7 @@ void XGUI_Viewer::addView(QMdiSubWindow* theView) */ void XGUI_Viewer::onWindowActivated(QMdiSubWindow* view) { - if (view && (view != myActiveView)) { + if (view && (view != myActiveView) && (!view->isMinimized())) { myActiveView = view; ((XGUI_ViewWindow*)myActiveView->widget())->windowActivated(); QList::iterator aIt; -- 2.39.2