From 91f53fd2a857714c794e0ccc6d8c91c79f41684a Mon Sep 17 00:00:00 2001 From: patacongo Date: Tue, 22 May 2012 21:01:42 +0000 Subject: CHexCalculator fixes + back out change to CNxtkWindow git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4761 42af7a65-404d-4744-a932-0658087f49c3 --- NxWidgets/ChangeLog.txt | 2 ++ NxWidgets/libnxwidgets/src/cnxtkwindow.cxx | 10 ++-------- NxWidgets/nxwm/include/chexcalculator.hxx | 6 +++--- NxWidgets/nxwm/src/chexcalculator.cxx | 22 +++++++++++++++------- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/NxWidgets/ChangeLog.txt b/NxWidgets/ChangeLog.txt index ecee1021c..349dbac57 100644 --- a/NxWidgets/ChangeLog.txt +++ b/NxWidgets/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/NxWidgets/libnxwidgets/src/cnxtkwindow.cxx b/NxWidgets/libnxwidgets/src/cnxtkwindow.cxx index b1d7be9e2..05241817c 100644 --- a/NxWidgets/libnxwidgets/src/cnxtkwindow.cxx +++ b/NxWidgets/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/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; -- cgit v1.2.3