Fix size of drawer's content

This commit is contained in:
Clemens Manert 2023-04-26 23:35:28 +02:00 committed by uwerat
parent 55925c2774
commit 9699d2b4f7

View File

@ -1,5 +1,6 @@
#include "QskDrawer.h"
#include "QskAspect.h"
#include "QskControl.h"
#include <QskPopup.h>
#include <QskBox.h>
@ -10,7 +11,8 @@ QSK_SUBCONTROL( QskDrawer, DasPanel )
class QskDrawer::PrivateData {
public:
QskBox* content;
QskControl* content;
QskBox* contentBox;
Qt::Edge edge = Qt::LeftEdge;
};
@ -22,8 +24,8 @@ QskDrawer::QskDrawer( QQuickItem* parentItem ) :
setPopupFlag( PopupFlag::CloseOnPressOutside, true );
m_data->content = new QskBox(this);
m_data->content->setSubcontrolProxy( QskBox::Panel, DasPanel );
m_data->contentBox = new QskBox(this);
m_data->contentBox->setSubcontrolProxy( QskBox::Panel, DasPanel );
setAnimationHint( DasPanel | QskAspect::Position, QskAnimationHint( 1000 ) );
@ -55,12 +57,13 @@ void QskDrawer::setEdge( Qt::Edge edge ) {
edgeChanged( edge );
}
void QskDrawer::setContent( QskControl* t ) {
t->setParentItem( m_data->content );
void QskDrawer::setContent( QskControl* content ) {
content->setParentItem( m_data->contentBox );
m_data->content = content;
}
void QskDrawer::updateLayout() {
auto rect = parentItem()->childrenRect();
auto size = m_data->content->preferredSize();
switch( m_data->edge ) {
case Qt::Edge::LeftEdge:
@ -75,10 +78,8 @@ void QskDrawer::updateLayout() {
}
auto size = rect.size();
qreal off = metric( faderAspect() ) * size.width();
qskSetItemGeometry( m_data->content, -off, 0, size.width(), size.height());
qskSetItemGeometry( m_data->contentBox, -off, 0, size.width(), size.height());
Inherited::updateLayout();
}