diff --git a/ChangeLog.txt b/ChangeLog.txt index ecee1021c..349dbac57 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -142,3 +142,5 @@ minimized. * NxWM::CHexCalculator: Add a hexadecimal/decimal calculator example. +* NXWidgets::CNxTkWindow: Back out height adjustment in the getSize() + method. The code was correct as it was before. diff --git a/libnxwidgets/src/cnxtkwindow.cxx b/libnxwidgets/src/cnxtkwindow.cxx index b1d7be9e2..05241817c 100644 --- a/libnxwidgets/src/cnxtkwindow.cxx +++ b/libnxwidgets/src/cnxtkwindow.cxx @@ -298,15 +298,9 @@ bool CNxTkWindow::getPosition(FAR struct nxgl_point_s *pos) bool CNxTkWindow::getSize(FAR struct nxgl_size_s *size) { // Get the size of the NXTK window (this will exclude the thickness of - // the frame). + // the frame and the height of the toolbar, if any). - bool ret = m_widgetControl->getWindowSize(size); - - // Subtract the height of the toolbar (if any) to get the size of the - // drawable region in the window. - - size->h -= m_toolbarHeight; - return ret; + return m_widgetControl->getWindowSize(size); } /** diff --git a/nxwm/include/chexcalculator.hxx b/nxwm/include/chexcalculator.hxx index d73e17faf..3ac50f71c 100644 --- a/nxwm/include/chexcalculator.hxx +++ b/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/nxwm/src/chexcalculator.cxx b/nxwm/src/chexcalculator.cxx index 0217574e2..48409f4d9 100644 --- a/nxwm/src/chexcalculator.cxx +++ b/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;