Browse Source

fix(capslockindicator): fix altering the line edit height

Fix altering the Line Edit widget height when the indicator is on (e.g.
when caps lock is active).

To avoid messing with the style and all the complex issues that arise
from it, use an action to display the icon inside the line edit, as it
is a built-in feature that work just fine.

Fixes #3379.
pull/3383/head
Colomban Wendling 9 years ago
parent
commit
653e0b5af2
  1. 40
      src/widget/capslockindicator.cpp
  2. 15
      src/widget/capslockindicator.h
  3. 2
      src/widget/loginscreen.cpp

40
src/widget/capslockindicator.cpp

@ -3,40 +3,12 @@ @@ -3,40 +3,12 @@
#include "src/platform/capslock.h"
#endif
CapsLockIndicator::CapsLockIndicator(QWidget *parent) : QToolButton(parent)
CapsLockIndicator::CapsLockIndicator(QLineEdit *parent) :
QAction(parent),
parent(parent)
{
cleanInputStyle = parentWidget()->styleSheet();
QIcon icon = QIcon(":img/caps_lock.svg");
setIcon(icon);
setCursor(Qt::ArrowCursor);
setStyleSheet("border: none; padding: 0; color: white");
setIcon(QIcon(":img/caps_lock.svg"));
setToolTip(tr("CAPS-LOCK ENABLED"));
updateSize();
}
void CapsLockIndicator::updateSize()
{
inputSize = parentWidget()->size();
move(inputSize.width() - inputSize.height(), 0);
int side = inputSize.height() - 5;
QSize iconSize(side, side);
setIconSize(iconSize);
}
void CapsLockIndicator::show()
{
QToolButton::show();
QString style = QString("padding: -3px %1px -3px -6px; color: white").arg(iconSize().width() - 3);
parentWidget()->setStyleSheet(style);
}
void CapsLockIndicator::hide()
{
QToolButton::hide();
parentWidget()->setStyleSheet(cleanInputStyle);
}
void CapsLockIndicator::updateIndicator()
@ -48,7 +20,7 @@ void CapsLockIndicator::updateIndicator() @@ -48,7 +20,7 @@ void CapsLockIndicator::updateIndicator()
#endif
if (caps)
show();
parent->addAction(this, QLineEdit::TrailingPosition);
else
hide();
parent->removeAction(this);
}

15
src/widget/capslockindicator.h

@ -1,21 +1,16 @@ @@ -1,21 +1,16 @@
#ifndef CAPSLOCKINDICATOR_H
#define CAPSLOCKINDICATOR_H
#include <QToolButton>
#include <QAction>
#include <QLineEdit>
class CapsLockIndicator : QToolButton
class CapsLockIndicator : QAction
{
public:
CapsLockIndicator(QWidget *widget);
CapsLockIndicator(QLineEdit *widget);
void updateIndicator();
void updateSize();
private:
void show();
void hide();
private:
QString cleanInputStyle;
QSize inputSize;
QLineEdit *parent;
};
#endif // CAPSLOCKINDICATOR_H

2
src/widget/loginscreen.cpp

@ -136,8 +136,6 @@ bool LoginScreen::event(QEvent* event) @@ -136,8 +136,6 @@ bool LoginScreen::event(QEvent* event)
void LoginScreen::onNewProfilePageClicked()
{
ui->stackedWidget->setCurrentIndex(0);
capsIndicator->updateSize();
confimCapsIndicator->updateSize();
}
void LoginScreen::onLoginPageClicked()

Loading…
Cancel
Save