Merge branch 'tzwidget-layout'
The introduction of navigation panels made them taller, leaving less space for the locale page's timezonewidget -- which then got comboboxes overlapping it. That's weird from a QVBoxLayout point of view, but the issue remains that the locale page is actually a *smidgen* (2px) too tall. - Massage a bunch of layout code to make the default navigation panel 30 pixels again, like it was. This is obviously fragile in the face of HiDPI, but Calamares is weak there anyway. - Rework the enlarge signals to make it possible to claim space, so that if a page needs more space it's easy to get; because the locale page is just a smidgen too tall, it won't trigger resizes right now.
This commit is contained in:
commit
06f96dc16f
@ -207,6 +207,7 @@ CalamaresWindow::getWidgetNavigation()
|
|||||||
bottomLayout->addWidget( quit );
|
bottomLayout->addWidget( quit );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bottomLayout->setContentsMargins( 0, 0, 6, 6 );
|
||||||
navigation->setLayout( bottomLayout );
|
navigation->setLayout( bottomLayout );
|
||||||
return navigation;
|
return navigation;
|
||||||
}
|
}
|
||||||
@ -220,6 +221,7 @@ CalamaresWindow::getQmlNavigation()
|
|||||||
w->setResizeMode( QQuickWidget::SizeRootObjectToView );
|
w->setResizeMode( QQuickWidget::SizeRootObjectToView );
|
||||||
w->setSource( QUrl(
|
w->setSource( QUrl(
|
||||||
CalamaresUtils::searchQmlFile( CalamaresUtils::QmlSearch::Both, QStringLiteral( "calamares-navigation" ) ) ) );
|
CalamaresUtils::searchQmlFile( CalamaresUtils::QmlSearch::Both, QStringLiteral( "calamares-navigation" ) ) ) );
|
||||||
|
w->setMinimumHeight( 30 ); // matchine the default widgets version
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,14 +261,6 @@ insertIf( QBoxLayout* layout,
|
|||||||
{
|
{
|
||||||
if ( first && side == firstSide )
|
if ( first && side == firstSide )
|
||||||
{
|
{
|
||||||
if ( ( side == Calamares::Branding::PanelSide::Left ) || ( side == Calamares::Branding::PanelSide::Right ) )
|
|
||||||
{
|
|
||||||
first->setMinimumWidth( qMax( first->minimumWidth(), 64 ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
first->setMinimumHeight( qMax( first->minimumHeight(), 64 ) );
|
|
||||||
}
|
|
||||||
layout->addWidget( first );
|
layout->addWidget( first );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -316,7 +310,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
|||||||
m_viewManager = Calamares::ViewManager::instance( this );
|
m_viewManager = Calamares::ViewManager::instance( this );
|
||||||
if ( branding->windowExpands() )
|
if ( branding->windowExpands() )
|
||||||
{
|
{
|
||||||
connect( m_viewManager, &Calamares::ViewManager::enlarge, this, &CalamaresWindow::enlarge );
|
connect( m_viewManager, &Calamares::ViewManager::ensureSize, this, &CalamaresWindow::ensureSize );
|
||||||
}
|
}
|
||||||
// NOTE: Although the ViewManager has a signal cancelEnabled() that
|
// NOTE: Although the ViewManager has a signal cancelEnabled() that
|
||||||
// signals when the state of the cancel button changes (in
|
// signals when the state of the cancel button changes (in
|
||||||
@ -329,8 +323,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
|||||||
|
|
||||||
QBoxLayout* mainLayout = new QHBoxLayout;
|
QBoxLayout* mainLayout = new QHBoxLayout;
|
||||||
QBoxLayout* contentsLayout = new QVBoxLayout;
|
QBoxLayout* contentsLayout = new QVBoxLayout;
|
||||||
|
contentsLayout->setSpacing( 0 );
|
||||||
setLayout( mainLayout );
|
|
||||||
|
|
||||||
QWidget* sideBox = flavoredWidget(
|
QWidget* sideBox = flavoredWidget(
|
||||||
branding->sidebarFlavor(),
|
branding->sidebarFlavor(),
|
||||||
@ -358,16 +351,24 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
|
|||||||
|
|
||||||
CalamaresUtils::unmarginLayout( mainLayout );
|
CalamaresUtils::unmarginLayout( mainLayout );
|
||||||
CalamaresUtils::unmarginLayout( contentsLayout );
|
CalamaresUtils::unmarginLayout( contentsLayout );
|
||||||
|
setLayout( mainLayout );
|
||||||
setStyleSheet( Calamares::Branding::instance()->stylesheet() );
|
setStyleSheet( Calamares::Branding::instance()->stylesheet() );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CalamaresWindow::enlarge( QSize enlarge )
|
CalamaresWindow::ensureSize( QSize size )
|
||||||
{
|
{
|
||||||
auto mainGeometry = this->geometry();
|
auto mainGeometry = this->geometry();
|
||||||
QSize availableSize = qApp->desktop()->availableGeometry( this ).size();
|
QSize availableSize = qApp->desktop()->availableGeometry( this ).size();
|
||||||
|
|
||||||
auto h = qBound( 0, mainGeometry.height() + enlarge.height(), availableSize.height() );
|
// We only care about vertical sizes that are big enough
|
||||||
|
int embiggenment = qMax( 0, size.height() - m_viewManager->centralWidget()->size().height() );
|
||||||
|
if ( embiggenment < 6 )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto h = qBound( 0, mainGeometry.height() + embiggenment, availableSize.height() );
|
||||||
auto w = this->size().width();
|
auto w = this->size().width();
|
||||||
|
|
||||||
resize( w, h );
|
resize( w, h );
|
||||||
|
@ -41,11 +41,11 @@ public:
|
|||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
/**
|
/**
|
||||||
* This asks the main window to grow by @p enlarge pixels, to accomodate
|
* This asks the main window to grow to accomodate @p size pixels, to accomodate
|
||||||
* larger-than-expected window contents. The enlargement may be silently
|
* larger-than-expected window contents. The enlargement may be silently
|
||||||
* ignored.
|
* ignored.
|
||||||
*/
|
*/
|
||||||
void enlarge( QSize enlarge );
|
void ensureSize( QSize size );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void closeEvent( QCloseEvent* e ) override;
|
virtual void closeEvent( QCloseEvent* e ) override;
|
||||||
|
@ -118,7 +118,7 @@ ViewManager::insertViewStep( int before, ViewStep* step )
|
|||||||
{
|
{
|
||||||
emit beginInsertRows( QModelIndex(), before, before );
|
emit beginInsertRows( QModelIndex(), before, before );
|
||||||
m_steps.insert( before, step );
|
m_steps.insert( before, step );
|
||||||
connect( step, &ViewStep::enlarge, this, &ViewManager::enlarge );
|
connect( step, &ViewStep::ensureSize, this, &ViewManager::ensureSize );
|
||||||
connect( step, &ViewStep::nextStatusChanged, this, &ViewManager::updateNextStatus );
|
connect( step, &ViewStep::nextStatusChanged, this, &ViewManager::updateNextStatus );
|
||||||
|
|
||||||
if ( !step->widget() )
|
if ( !step->widget() )
|
||||||
|
@ -195,7 +195,7 @@ public Q_SLOTS:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void currentStepChanged();
|
void currentStepChanged();
|
||||||
void enlarge( QSize enlarge ) const; // See ViewStep::enlarge()
|
void ensureSize( QSize size ) const; // See ViewStep::ensureSize()
|
||||||
void cancelEnabled( bool enabled ) const;
|
void cancelEnabled( bool enabled ) const;
|
||||||
|
|
||||||
void nextEnabledChanged( bool ) const;
|
void nextEnabledChanged( bool ) const;
|
||||||
|
@ -149,10 +149,12 @@ signals:
|
|||||||
void nextStatusChanged( bool status );
|
void nextStatusChanged( bool status );
|
||||||
|
|
||||||
/* Emitted when the viewstep thinks it needs more space than is currently
|
/* Emitted when the viewstep thinks it needs more space than is currently
|
||||||
* available for display. @p enlarge is the requested additional space,
|
* available for display. @p size is the requested space, that is needed
|
||||||
* e.g. 24px vertical. This request may be silently ignored.
|
* to display the entire page.
|
||||||
|
*
|
||||||
|
* This request may be silently ignored.
|
||||||
*/
|
*/
|
||||||
void enlarge( QSize enlarge ) const;
|
void ensureSize( QSize enlarge ) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Calamares::ModuleSystem::InstanceKey m_instanceKey;
|
Calamares::ModuleSystem::InstanceKey m_instanceKey;
|
||||||
|
@ -49,35 +49,32 @@ LocalePage::LocalePage( QWidget* parent )
|
|||||||
QBoxLayout* mainLayout = new QVBoxLayout;
|
QBoxLayout* mainLayout = new QVBoxLayout;
|
||||||
|
|
||||||
QBoxLayout* tzwLayout = new QHBoxLayout;
|
QBoxLayout* tzwLayout = new QHBoxLayout;
|
||||||
mainLayout->addLayout( tzwLayout );
|
|
||||||
m_tzWidget = new TimeZoneWidget( this );
|
m_tzWidget = new TimeZoneWidget( this );
|
||||||
tzwLayout->addStretch();
|
tzwLayout->addStretch();
|
||||||
tzwLayout->addWidget( m_tzWidget );
|
tzwLayout->addWidget( m_tzWidget );
|
||||||
tzwLayout->addStretch();
|
tzwLayout->addStretch();
|
||||||
setMinimumWidth( m_tzWidget->width() );
|
// Adjust for margins and spacing in this page
|
||||||
|
m_tzWidget->setMinimumHeight( m_tzWidget->minimumHeight() + 12 ); // 2 * spacing
|
||||||
QBoxLayout* bottomLayout = new QHBoxLayout;
|
|
||||||
mainLayout->addLayout( bottomLayout );
|
|
||||||
|
|
||||||
|
QBoxLayout* zoneAndRegionLayout = new QHBoxLayout;
|
||||||
m_regionLabel = new QLabel( this );
|
m_regionLabel = new QLabel( this );
|
||||||
bottomLayout->addWidget( m_regionLabel );
|
zoneAndRegionLayout->addWidget( m_regionLabel );
|
||||||
|
|
||||||
m_regionCombo = new QComboBox( this );
|
m_regionCombo = new QComboBox( this );
|
||||||
bottomLayout->addWidget( m_regionCombo );
|
zoneAndRegionLayout->addWidget( m_regionCombo );
|
||||||
m_regionCombo->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
m_regionCombo->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
||||||
m_regionLabel->setBuddy( m_regionCombo );
|
m_regionLabel->setBuddy( m_regionCombo );
|
||||||
|
|
||||||
bottomLayout->addSpacing( 20 );
|
zoneAndRegionLayout->addSpacing( 20 );
|
||||||
|
|
||||||
m_zoneLabel = new QLabel( this );
|
m_zoneLabel = new QLabel( this );
|
||||||
bottomLayout->addWidget( m_zoneLabel );
|
zoneAndRegionLayout->addWidget( m_zoneLabel );
|
||||||
|
|
||||||
m_zoneCombo = new QComboBox( this );
|
m_zoneCombo = new QComboBox( this );
|
||||||
m_zoneCombo->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
m_zoneCombo->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
||||||
bottomLayout->addWidget( m_zoneCombo );
|
zoneAndRegionLayout->addWidget( m_zoneCombo );
|
||||||
m_zoneLabel->setBuddy( m_zoneCombo );
|
m_zoneLabel->setBuddy( m_zoneCombo );
|
||||||
|
|
||||||
mainLayout->addStretch();
|
|
||||||
|
|
||||||
QBoxLayout* localeLayout = new QHBoxLayout;
|
QBoxLayout* localeLayout = new QHBoxLayout;
|
||||||
m_localeLabel = new QLabel( this );
|
m_localeLabel = new QLabel( this );
|
||||||
@ -88,7 +85,6 @@ LocalePage::LocalePage( QWidget* parent )
|
|||||||
m_localeChangeButton = new QPushButton( this );
|
m_localeChangeButton = new QPushButton( this );
|
||||||
m_localeChangeButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
|
m_localeChangeButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
|
||||||
localeLayout->addWidget( m_localeChangeButton );
|
localeLayout->addWidget( m_localeChangeButton );
|
||||||
mainLayout->addLayout( localeLayout );
|
|
||||||
|
|
||||||
QBoxLayout* formatsLayout = new QHBoxLayout;
|
QBoxLayout* formatsLayout = new QHBoxLayout;
|
||||||
m_formatsLabel = new QLabel( this );
|
m_formatsLabel = new QLabel( this );
|
||||||
@ -99,8 +95,14 @@ LocalePage::LocalePage( QWidget* parent )
|
|||||||
m_formatsChangeButton = new QPushButton( this );
|
m_formatsChangeButton = new QPushButton( this );
|
||||||
m_formatsChangeButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
|
m_formatsChangeButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
|
||||||
formatsLayout->addWidget( m_formatsChangeButton );
|
formatsLayout->addWidget( m_formatsChangeButton );
|
||||||
mainLayout->addLayout( formatsLayout );
|
|
||||||
|
|
||||||
|
mainLayout->addLayout( tzwLayout );
|
||||||
|
mainLayout->addStretch();
|
||||||
|
mainLayout->addLayout( zoneAndRegionLayout );
|
||||||
|
mainLayout->addStretch();
|
||||||
|
mainLayout->addLayout( localeLayout );
|
||||||
|
mainLayout->addLayout( formatsLayout );
|
||||||
|
setMinimumWidth( m_tzWidget->width() );
|
||||||
setLayout( mainLayout );
|
setLayout( mainLayout );
|
||||||
|
|
||||||
connect( m_regionCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::regionChanged );
|
connect( m_regionCombo, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, &LocalePage::regionChanged );
|
||||||
|
@ -73,6 +73,8 @@ LocaleViewStep::setUpPage()
|
|||||||
m_actualWidget->init( m_startingTimezone.first, m_startingTimezone.second, m_localeGenPath );
|
m_actualWidget->init( m_startingTimezone.first, m_startingTimezone.second, m_localeGenPath );
|
||||||
m_widget->layout()->addWidget( m_actualWidget );
|
m_widget->layout()->addWidget( m_actualWidget );
|
||||||
|
|
||||||
|
ensureSize( m_actualWidget->sizeHint() );
|
||||||
|
|
||||||
m_nextEnabled = true;
|
m_nextEnabled = true;
|
||||||
emit nextStatusChanged( m_nextEnabled );
|
emit nextStatusChanged( m_nextEnabled );
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,7 @@ TimeZoneWidget::TimeZoneWidget( QWidget* parent )
|
|||||||
// Set size
|
// Set size
|
||||||
setMinimumSize( background.size() );
|
setMinimumSize( background.size() );
|
||||||
setMaximumSize( background.size() );
|
setMaximumSize( background.size() );
|
||||||
|
setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ SummaryPage::onActivate()
|
|||||||
|
|
||||||
cDebug() << "Summary widget is larger than viewport, enlarge by" << enlarge << "to" << widgetSize;
|
cDebug() << "Summary widget is larger than viewport, enlarge by" << enlarge << "to" << widgetSize;
|
||||||
|
|
||||||
emit m_thisViewStep->enlarge( QSize( 0, enlarge ) ); // Only expand height
|
emit m_thisViewStep->ensureSize( widgetSize ); // Only expand height
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user