Added ability to set minimal height for slide wrap.
This commit is contained in:
parent
3f28dfa821
commit
1ee4b34bf6
2 changed files with 12 additions and 3 deletions
|
|
@ -96,6 +96,10 @@ SlideWrap<RpWidget> *SlideWrap<RpWidget>::toggleOn(
|
|||
return this;
|
||||
}
|
||||
|
||||
void SlideWrap<RpWidget>::setMinimalHeight(int height) {
|
||||
_minimalHeight = height;
|
||||
}
|
||||
|
||||
void SlideWrap<RpWidget>::animationStep() {
|
||||
const auto weak = wrapped();
|
||||
if (weak && !_up) {
|
||||
|
|
@ -106,8 +110,11 @@ void SlideWrap<RpWidget>::animationStep() {
|
|||
const auto current = _animation.value(_toggled ? 1. : 0.);
|
||||
const auto newHeight = weak
|
||||
? (_animation.animating()
|
||||
? anim::interpolate(0, weak->heightNoMargins(), current)
|
||||
: (_toggled ? weak->height() : 0))
|
||||
? anim::interpolate(
|
||||
_minimalHeight,
|
||||
weak->heightNoMargins(),
|
||||
current)
|
||||
: (_toggled ? weak->height() : _minimalHeight))
|
||||
: 0;
|
||||
if (weak && _up) {
|
||||
const auto margins = getMargins();
|
||||
|
|
@ -121,7 +128,7 @@ void SlideWrap<RpWidget>::animationStep() {
|
|||
const auto shouldBeHidden = !_toggled && !_animation.animating();
|
||||
if (shouldBeHidden != isHidden()) {
|
||||
const auto guard = MakeWeak(this);
|
||||
setVisible(!shouldBeHidden);
|
||||
setVisible(!shouldBeHidden || _minimalHeight);
|
||||
if (shouldBeHidden && guard) {
|
||||
SendPendingMoveResizeEvents(this);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ public:
|
|||
auto toggledValue() const {
|
||||
return _toggledChanged.events_starting_with_copy(_toggled);
|
||||
}
|
||||
void setMinimalHeight(int height);
|
||||
|
||||
QMargins getMargins() const override;
|
||||
|
||||
|
|
@ -68,6 +69,7 @@ private:
|
|||
int _duration = 0;
|
||||
bool _toggled = true;
|
||||
bool _up = false;
|
||||
int _minimalHeight = 0;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue