summaryrefslogtreecommitdiffstats
path: root/src/VButton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VButton.cpp')
-rw-r--r--src/VButton.cpp32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/VButton.cpp b/src/VButton.cpp
index e44feba..41871cd 100644
--- a/src/VButton.cpp
+++ b/src/VButton.cpp
@@ -26,13 +26,21 @@ void VButton::shiftCapsPressed(bool shift, bool caps)
if (isAlpha)
{
// Alpha button, both shift and caps affect its state
- if (shift ^ caps)
+ if (caps && shift)
+ {
+ TQPushButton::setText(capsShiftText);
+ }
+ else if (caps)
+ {
+ TQPushButton::setText(capsText);
+ }
+ else if (shift)
{
TQPushButton::setText(shiftText);
}
else
{
- TQPushButton::setText(lowerText);
+ TQPushButton::setText(normalText);
}
}
else
@@ -44,7 +52,7 @@ void VButton::shiftCapsPressed(bool shift, bool caps)
}
else
{
- TQPushButton::setText(lowerText);
+ TQPushButton::setText(normalText);
}
}
}
@@ -54,13 +62,25 @@ void VButton::setText(const TQString& text)
// Need to set the pushbutton text to correctly handle those buttons which usually
// don't change (tab, shift, caps, Fn, ...)
TQPushButton::setText(text);
- lowerText = text;
- isAlpha = text.length() == 1 && (text.upper() != text);
+ normalText = text;
+ capsText = text.upper();
+ isAlpha = text.length() == 1 && capsText != normalText;
}
void VButton::setShiftText(const TQString& text)
{
- shiftText=text;
+ shiftText = text;
+ // 'text' is normally uppercase here, so in most cases we need to set capsShiftText
+ // to text.lower() to handle caps+shift correctly. Special cases like ç and Ç are
+ // handled by using text.upper()
+ if (text.lower() != text)
+ {
+ capsShiftText = text.lower();
+ }
+ else
+ {
+ capsShiftText = text.upper();
+ }
}
void VButton::setColor(const TQColor &color)