diff options
Diffstat (limited to 'NxWidgets/nxwm')
-rw-r--r-- | NxWidgets/nxwm/include/chexcalculator.hxx | 6 | ||||
-rw-r--r-- | NxWidgets/nxwm/src/chexcalculator.cxx | 22 |
2 files changed, 18 insertions, 10 deletions
diff --git a/NxWidgets/nxwm/include/chexcalculator.hxx b/NxWidgets/nxwm/include/chexcalculator.hxx index d73e17faf..3ac50f71c 100644 --- a/NxWidgets/nxwm/include/chexcalculator.hxx +++ b/NxWidgets/nxwm/include/chexcalculator.hxx @@ -87,9 +87,9 @@ namespace NxWM struct nxgl_size_s m_textSize; /**< The size of the calculator textbox */ struct nxgl_point_s m_keypadPos; /**< The position the calculator keypad */ struct nxgl_point_s m_textPos; /**< The position of the calculator textbox */ - uint64_t m_operand; /**< Previously entered operand */ - uint64_t m_accum; /**< The current accumulated value */ - uint64_t m_memory; /**< The current value in memory */ + int64_t m_operand; /**< Previously entered operand */ + int64_t m_accum; /**< The current accumulated value */ + int64_t m_memory; /**< The current value in memory */ uint8_t m_pending; /**< The pending operation */ bool m_hexMode; /**< True if in hex mode */ diff --git a/NxWidgets/nxwm/src/chexcalculator.cxx b/NxWidgets/nxwm/src/chexcalculator.cxx index 0217574e2..48409f4d9 100644 --- a/NxWidgets/nxwm/src/chexcalculator.cxx +++ b/NxWidgets/nxwm/src/chexcalculator.cxx @@ -455,7 +455,7 @@ void CHexCalculator::setGeometry(void) // Get the size of the text box. Same width as the m_keypad m_textSize.w = m_keypadSize.w; - m_textSize.h = m_windowSize.h - NXWM_HEXCALCULATOR_NROWS * m_buttonSize.h; + m_textSize.h = m_windowSize.h - m_keypadSize.h; // Limit the height of the text box to twice the height of a button. @@ -594,11 +594,11 @@ void CHexCalculator::updateText(void) if (m_hexMode) { - snprintf(buffer, 24, "%16lx", m_accum); + std::snprintf(buffer, 24, "%16llx", m_accum); } else { - snprintf(buffer, 24, "%ld", m_accum); + std::snprintf(buffer, 24, "%lld", m_accum); } // setText will perform the redraw as well @@ -662,8 +662,16 @@ void CHexCalculator::handleActionEvent(const NXWidgets::CWidgetEventArgs &e) case KEY_VALUE: // Key is a value { - m_accum <<= 4; - m_accum |= (uint64_t)g_keyDesc[index].value; + if (m_hexMode) + { + m_accum <<= 4; + m_accum |= (uint64_t)g_keyDesc[index].value; + } + else + { + m_accum *= 10; + m_accum += (uint64_t)g_keyDesc[index].value; + } updateText(); } break; @@ -766,7 +774,7 @@ void CHexCalculator::handleActionEvent(const NXWidgets::CWidgetEventArgs &e) { m_hexMode = false; labelKeypad(); - m_keypad->redraw(); + updateText(); } } break; @@ -777,7 +785,7 @@ void CHexCalculator::handleActionEvent(const NXWidgets::CWidgetEventArgs &e) { m_hexMode = true; labelKeypad(); - m_keypad->redraw(); + updateText(); } } break; |