diff --git a/shell/panelview.h b/shell/panelview.h --- a/shell/panelview.h +++ b/shell/panelview.h @@ -176,6 +176,7 @@ void screenDestroyed(QObject* screen); private: + void resizePanel(); void integrateScreen(); bool containmentContainsPosition(const QPointF &point) const; QPointF positionAdjustedForContainment(const QPointF &point) const; @@ -185,6 +186,7 @@ int m_offset; int m_maxLength; int m_minLength; + int m_contentLength; int m_distance; int m_thickness; Qt::Alignment m_alignment; diff --git a/shell/panelview.cpp b/shell/panelview.cpp --- a/shell/panelview.cpp +++ b/shell/panelview.cpp @@ -55,6 +55,7 @@ m_offset(0), m_maxLength(0), m_minLength(0), + m_contentLength(0), m_distance(0), m_thickness(30), m_alignment(Qt::AlignLeft), @@ -215,33 +216,23 @@ config().writeEntry("thickness", value); m_corona->requestApplicationConfigSync(); - positionPanel(); + resizePanel(); } int PanelView::length() const { - int defaultLength = formFactor() == Plasma::Types::Vertical ? screen()->size().height() : screen()->size().width(); - return config().isValid() ? config().readEntry("length", defaultLength) : defaultLength; + return m_contentLength; } void PanelView::setLength(int value) { - if (value == length()) { + if (value == m_contentLength) { return; } - config().writeEntry("length", value); - m_corona->requestApplicationConfigSync(); - positionPanel(); - + m_contentLength = value; - const int maxSize = screen()->size().width() - m_offset; - if (containment()->formFactor() == Plasma::Types::Vertical) { - resize(thickness(), qBound(MINSIZE, value, maxSize)); - //Horizontal - } else { - resize(qBound(MINSIZE, value, maxSize), thickness()); - } + resizePanel(); emit m_corona->availableScreenRegionChanged(); } @@ -260,17 +251,12 @@ setMinimumLength(length); } - if (formFactor() == Plasma::Types::Vertical) { - setMaximumHeight(length); - } else { - setMaximumWidth(length); - } config().writeEntry("maxLength", length); m_maxLength = length; emit maximumLengthChanged(); m_corona->requestApplicationConfigSync(); - positionPanel(); + resizePanel(); } int PanelView::minimumLength() const @@ -288,17 +274,12 @@ setMaximumLength(length); } - if (formFactor() == Plasma::Types::Vertical) { - setMinimumHeight(length); - } else { - setMinimumWidth(length); - } config().writeEntry("minLength", length); m_minLength = length; emit minimumLengthChanged(); m_corona->requestApplicationConfigSync(); - positionPanel(); + resizePanel(); } int PanelView::distance() const @@ -379,20 +360,6 @@ m_strutsTimer.stop(); m_strutsTimer.start(STRUTSTIMERDELAY); - if (formFactor() == Plasma::Types::Vertical) { - setMinimumSize(QSize(thickness(), m_minLength)); - setMaximumSize(QSize(thickness(), m_maxLength)); - - emit thicknessChanged(); - emit lengthChanged(); - } else { - setMinimumSize(QSize(m_minLength, thickness())); - setMaximumSize(QSize(m_maxLength, thickness())); - - emit thicknessChanged(); - emit lengthChanged(); - } - const QPoint pos = geometryByDistance(m_distance).topLeft(); setPosition(pos); if (m_shellSurface) { @@ -469,6 +436,24 @@ return ret; } +void PanelView::resizePanel() +{ + + + if (formFactor() == Plasma::Types::Vertical) { + const int maxSize = screen()->size().height() - m_offset; + setMinimumSize(QSize(thickness(), m_minLength)); + setMaximumSize(QSize(thickness(), m_maxLength)); + resize(thickness(), qBound(MINSIZE, m_contentLength, maxSize)); + } else { + const int maxSize = screen()->size().width() - m_offset; + setMinimumSize(QSize(m_minLength, thickness())); + setMaximumSize(QSize(m_maxLength, thickness())); + resize(qBound(MINSIZE, m_contentLength, maxSize), thickness()); + } + //positionPanel will be called implicitly from resizeEvent +} + void PanelView::restore() { if (!containment()) { @@ -503,12 +488,6 @@ const int maxSize = screen()->size().height() - m_offset; m_maxLength = qBound(MINSIZE, m_maxLength, maxSize); m_minLength = qBound(MINSIZE, m_minLength, maxSize); - - resize(thickness(), qBound(MINSIZE, length(), maxSize)); - - setMinimumHeight(m_minLength); - setMaximumHeight(m_maxLength); - //Horizontal } else { defaultMaxLength = screen()->size().width(); @@ -520,13 +499,10 @@ const int maxSize = screen()->size().width() - m_offset; m_maxLength = qBound(MINSIZE, m_maxLength, maxSize); m_minLength = qBound(MINSIZE, m_minLength, maxSize); - - resize(qBound(MINSIZE, length(), maxSize), thickness()); - - setMinimumWidth(m_minLength); - setMaximumWidth(m_maxLength); } + resizePanel(); + setVisibilityMode((VisibilityMode)config().readEntry("panelVisibility", (int)NormalPanel)); emit maximumLengthChanged();