From be0ef4f20f16aa027c50918e313e67f9d778cf40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Wed, 9 Dec 2015 22:38:28 +0100 Subject: [PATCH] close zoom slider when it loses its focus --- YACReader/width_slider.cpp | 16 ++++++++++++++++ YACReader/width_slider.h | 5 ++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/YACReader/width_slider.cpp b/YACReader/width_slider.cpp index 6fba73a7..b500d7a2 100644 --- a/YACReader/width_slider.cpp +++ b/YACReader/width_slider.cpp @@ -28,6 +28,8 @@ void YACReaderSliderAction::updateZoomRatio(int value) YACReaderSlider::YACReaderSlider(QWidget *parent) :QWidget(parent) { + setFocusPolicy(Qt::StrongFocus); + QHBoxLayout* pLayout = new QHBoxLayout(); pLayout->addStretch(); @@ -71,12 +73,26 @@ YACReaderSlider::YACReaderSlider(QWidget *parent) slider->setMaximum(500); slider->setPageStep(5); + slider->setFocusPolicy(Qt::NoFocus); + int value = Configuration::getConfiguration().getZoomLevel()*100; slider->setValue(value); percentageLabel->setText(QString("%1 %").arg(value)); connect(slider,SIGNAL(valueChanged(int)),this,SLOT(updateText(int))); } +void YACReaderSlider::show() +{ + QWidget::show(); + setFocus(); +} + +void YACReaderSlider::focusOutEvent(QFocusEvent * event) +{ + QWidget::focusOutEvent(event); + hide(); +} + void YACReaderSlider::updateText(int value) { percentageLabel->setText(QString("%1 %").arg(value)); diff --git a/YACReader/width_slider.h b/YACReader/width_slider.h index f9386b9d..14f3e541 100644 --- a/YACReader/width_slider.h +++ b/YACReader/width_slider.h @@ -14,8 +14,11 @@ private: QSlider * slider; public: - YACReaderSlider (QWidget * parent = 0); + void show(); + +protected: + virtual void focusOutEvent(QFocusEvent * event); public slots: void updateText(int value);