Skip to content
This repository has been archived by the owner on Aug 7, 2022. It is now read-only.

Commit

Permalink
panel window state fix
Browse files Browse the repository at this point in the history
  • Loading branch information
nitramr committed May 17, 2016
1 parent 7cc7880 commit 0b71b93
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 42 deletions.
4 changes: 2 additions & 2 deletions indigodock/indigodock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ IndigoDock::IndigoDock(QString name, QWidget *parent) : QDockWidget(parent)
int_padding = 3;
int_placeholderHeight = 3;

wdg_toolbar = new IndigoTabBar;
wdg_toolbar = new IndigoTabBar;

wdg_placeholder = new QWidget();
wdg_placeholder->setFixedHeight(int_placeholderHeight);
Expand Down Expand Up @@ -149,7 +149,7 @@ void IndigoDock::addPanel (IndigoPanel *panel, int tabIndex){
wdg_panelSplitter->setCollapsible(tabIndex, false);
}

panel->setDockState(IndigoPanel::Docked);
panel->setDockState(IndigoPanel::Docked);
//panel->show();

updatePanels();
Expand Down
39 changes: 29 additions & 10 deletions indigodock/indigodockmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ void IndigoDockManager::addIndigoPanel(IndigoDock * dock, IndigoPanel * panel, I
case IndigoPanel::Floating:
default:
addFloatingPanel(panel);
panel->setDockState(IndigoPanel::Floating);
panel->setDockState(IndigoPanel::Floating);
break;

}
Expand All @@ -107,6 +107,18 @@ void IndigoDockManager::addIndigoPanel(IndigoDock * dock, IndigoPanel * panel, I



void IndigoDockManager::addFloatingPanel(IndigoPanel * panel){

if(!lst_floatingPanels.contains(panel)){
lst_floatingPanels.append(panel);
panel->setParent(this);
qDebug() << "addFloatingPanel" << panel->objectName() << endl;

}
}



void IndigoDockManager::removePanel(int index){

IndigoPanel *pan = qobject_cast<IndigoPanel *>(sender());
Expand Down Expand Up @@ -204,15 +216,6 @@ void IndigoDockManager::panelDropped(int index){
}


void IndigoDockManager::addFloatingPanel(IndigoPanel * panel){

if(!lst_floatingPanels.contains(panel)){
lst_floatingPanels.append(panel);
panel->setParent(this);

}
}


void IndigoDockManager::loadWorkspace(QString file){

Expand Down Expand Up @@ -394,13 +397,29 @@ void IndigoDockManager::loadWorkspace(QString file){

addFloatingPanel(floatingPanel);

int i_FrameX = floatingPanel->frameGeometry().x();
int i_FrameY = floatingPanel->frameGeometry().y();
int i_FrameW = floatingPanel->frameGeometry().width();
int i_FrameH = floatingPanel->frameGeometry().height();

int i_GeoX = floatingPanel->geometry().x();
int i_GeoY = floatingPanel->geometry().y();
int i_GeoW = floatingPanel->geometry().width();
int i_GeoH = floatingPanel->geometry().height();

QRect rect_frame = QRect(i_FrameX, i_FrameY, i_FrameW, i_FrameH);
QRect rect_geo = QRect(i_GeoX, i_GeoY, i_GeoW, i_GeoH);

qDebug() << rect_frame << rect_geo << endl;

//add attribute
floatingPanel->setIndex(indigoPanel.attribute("id", "-1").toInt());
floatingPanel->setExpanderState(indigoPanel.attribute("expanderState", "-1").toInt());
floatingPanel->setGeometry(indigoPanel.attribute("x", "0").toInt(), indigoPanel.attribute("y", "0").toInt(), floatingPanel->geometry().width(), floatingPanel->geometry().height());
floatingPanel->setDockState(indigoPanel.attribute("dockState", "-1").toInt());



}

}
Expand Down
55 changes: 29 additions & 26 deletions indigodock/indigopanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ IndigoPanel::IndigoPanel(QString name, QWidget *dock) :
setAccessibleName(name);
setObjectName(name);


}


Expand Down Expand Up @@ -205,6 +206,7 @@ bool IndigoPanel::eventFilter(QObject *object, QEvent *event)


qDebug() << "PanelIndex is:" << Index() << endl;
qDebug() << "Parent = " << parent() << endl;

QPoint point = me->globalPos();
QPoint xy = this->mapToGlobal(QPoint(0,0));
Expand Down Expand Up @@ -234,7 +236,6 @@ bool IndigoPanel::eventFilter(QObject *object, QEvent *event)

setDockState(IndigoPanel::Floating);


}

move(point - pnt_relativeOffset);
Expand All @@ -251,7 +252,9 @@ bool IndigoPanel::eventFilter(QObject *object, QEvent *event)
{

if(dockState() == IndigoPanel::Floating){

emit mouseReleased(); // activate reparenting in DropZone*
update();
}

break;
Expand Down Expand Up @@ -355,7 +358,8 @@ void IndigoPanel::hide(){
setDockState(IndigoPanel::HiddenFloating);
break;
default:
break;
QFrame::hide();
break;

}
}
Expand All @@ -364,7 +368,6 @@ void IndigoPanel::hide(){

void IndigoPanel::show(){


switch(dockState()){
case IndigoPanel::HiddenDocked:
setDockState(IndigoPanel::Docked);
Expand All @@ -373,6 +376,7 @@ void IndigoPanel::show(){
setDockState(IndigoPanel::Floating);
break;
default:
QFrame::show();
break;
}
}
Expand Down Expand Up @@ -442,23 +446,31 @@ void IndigoPanel::setDockState(IndigoPanel::IndigoDockState state){
m_state = state;

switch(state){
case IndigoPanel::HiddenDocked:
case IndigoPanel::HiddenFloating:
if(!this->isHidden()){
QFrame::hide();
}
break;
case IndigoPanel::HiddenDocked:
QFrame::hide();
break;

case IndigoPanel::Floating:
case IndigoPanel::Docked:
case IndigoPanel::None:
default:
if(!this->isVisible()){
QFrame::show();
}
break;
case IndigoPanel::HiddenFloating:
setWindowFlags(Qt::Tool | Qt::CustomizeWindowHint);
QFrame::hide();
break;

case IndigoPanel::Floating:
setWindowFlags(Qt::Tool | Qt::CustomizeWindowHint);
QFrame::show();
break;

case IndigoPanel::Docked:
case IndigoPanel::None:
default:

QFrame::show();

break;
}

update();

}


Expand Down Expand Up @@ -558,12 +570,3 @@ void IndigoPanel::setExpanderState(int expanderState){

}
}



void IndigoPanel::setParent(QWidget * parent){

QWidget::setParent(parent);

setWindowFlags(Qt::ToolTip | Qt::CustomizeWindowHint); // avoid flickering by moving
}
4 changes: 0 additions & 4 deletions indigodock/indigopanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,6 @@ class IndigoPanel : public QFrame
void setExpanderState(IndigoExpanderState expanderState);
void setExpanderState(int expanderState);

void setParent(QWidget * parent);



protected:
bool eventFilter(QObject *object, QEvent *e);

Expand Down

0 comments on commit 0b71b93

Please sign in to comment.