From e341fa804eab732bba47e1fc1ff155d25b0142c0 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 21 Oct 2012 19:46:04 +0300 Subject: Extend password field theming. New theme parameter: passwordChar - ASCII code for password char. If zero password invisible. --- src/gui/widgets/passwordfield.cpp | 8 ++++++-- src/gui/widgets/passwordfield.h | 3 +++ src/gui/widgets/textfield.cpp | 2 +- src/gui/widgets/textfield.h | 3 ++- 4 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/gui/widgets/passwordfield.cpp b/src/gui/widgets/passwordfield.cpp index f0dd0f256..f301f2fe7 100644 --- a/src/gui/widgets/passwordfield.cpp +++ b/src/gui/widgets/passwordfield.cpp @@ -26,7 +26,8 @@ PasswordField::PasswordField(const Widget2 *const widget, const std::string &text): - TextField(widget, text) + TextField(widget, text), + mPasswordChar(mSkin ? mSkin->getOption("passwordChar", 42) : 42) { } @@ -34,7 +35,10 @@ void PasswordField::draw(gcn::Graphics *graphics) { // std::string uses cow, thus cheap copy const std::string original = mText; - mText.assign(mText.length(), '*'); + if (mPasswordChar) + mText.assign(mText.length(), mPasswordChar); + else + mText = ""; TextField::draw(graphics); mText = original; } diff --git a/src/gui/widgets/passwordfield.h b/src/gui/widgets/passwordfield.h index 69aaa32fc..87b248221 100644 --- a/src/gui/widgets/passwordfield.h +++ b/src/gui/widgets/passwordfield.h @@ -45,6 +45,9 @@ class PasswordField final : public TextField * Draws the password field. */ void draw(gcn::Graphics *graphics) override; + + protected: + int mPasswordChar; }; #endif diff --git a/src/gui/widgets/textfield.cpp b/src/gui/widgets/textfield.cpp index 4e5e7e027..a31ae59fe 100644 --- a/src/gui/widgets/textfield.cpp +++ b/src/gui/widgets/textfield.cpp @@ -39,10 +39,10 @@ #include "debug.h" +Skin *TextField::mSkin; int TextField::instances = 0; float TextField::mAlpha = 1.0; ImageRect TextField::skin; -Skin *TextField::mSkin; TextField::TextField(const Widget2 *const widget, const std::string &text, const bool loseFocusOnTab, diff --git a/src/gui/widgets/textfield.h b/src/gui/widgets/textfield.h index dc35cfe70..f4592e292 100644 --- a/src/gui/widgets/textfield.h +++ b/src/gui/widgets/textfield.h @@ -124,6 +124,8 @@ class TextField : public gcn::TextField, bool mSendAlwaysEvents; + static Skin *mSkin; + private: void handlePaste(); @@ -132,7 +134,6 @@ class TextField : public gcn::TextField, static int instances; static float mAlpha; static ImageRect skin; - static Skin *mSkin; bool mNumeric; int mMinimum; unsigned mMaximum; -- cgit v1.2.3-70-g09d2