diff --git a/src/gui/widget/keyboard_input.cpp b/src/gui/widget/keyboard_input.cpp index b654bd8bd..a984069e0 100644 --- a/src/gui/widget/keyboard_input.cpp +++ b/src/gui/widget/keyboard_input.cpp @@ -502,6 +502,22 @@ void CKeyboardInput::keyBackspacePressed(void) } } +void CKeyboardInput::keyDigiPressed(const neutrino_msg_t key) +{ + int old_col = scol; + int old_srow = srow; + int digi = CRCInput::getNumericValue(key); + digi = (digi == 0) ? 10 : digi; + srow = 0; + scol = digi; + if (focus == FOCUS_KEY) + paintKey(old_srow, old_col); + + focus = FOCUS_KEY; + paintKey(srow, scol); + NormalKeyPressed(); +} + void CKeyboardInput::insertChar() { int item = inputSize -1; @@ -614,6 +630,10 @@ int CKeyboardInput::exec(CMenuTarget* parent, const std::string &) { switchLayout(); } + else if (CRCInput::isNumeric(msg)) + { + keyDigiPressed(msg); + } else if ((msg == CRCInput::RC_home) || (msg == CRCInput::RC_timeout)) { if ((inputString->getValue() != oldval) && diff --git a/src/gui/widget/keyboard_input.h b/src/gui/widget/keyboard_input.h index 1003e7f39..7af5c1c17 100644 --- a/src/gui/widget/keyboard_input.h +++ b/src/gui/widget/keyboard_input.h @@ -104,6 +104,8 @@ class CKeyboardInput : public CMenuTarget bool force_saveScreen; fb_pixel_t *pixBuf; + void keyDigiPressed(const neutrino_msg_t key); + virtual void init(); virtual void paint(); diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index 3277cc42d..70ea05736 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -1413,16 +1413,18 @@ void CMenuWidget::saveScreen() delete[] background; saveScreen_height = full_height+fbutton_height; saveScreen_width = full_width; + saveScreen_y = y; + saveScreen_x = x; background = new fb_pixel_t [saveScreen_height * saveScreen_width]; if(background) - frameBuffer->SaveScreen(x /*-ConnectLineBox_Width*/, y, full_width, saveScreen_height, background); + frameBuffer->SaveScreen(saveScreen_x /*-ConnectLineBox_Width*/, saveScreen_y, saveScreen_width, saveScreen_height, background); } void CMenuWidget::restoreScreen() { if(background) { if(savescreen) - frameBuffer->RestoreScreen(x /*-ConnectLineBox_Width*/, y, saveScreen_width, saveScreen_height, background); + frameBuffer->RestoreScreen(saveScreen_x /*-ConnectLineBox_Width*/, saveScreen_y, saveScreen_width, saveScreen_height, background); } } @@ -1434,6 +1436,8 @@ void CMenuWidget::enableSaveScreen(bool enable) background = NULL; saveScreen_width = 0; saveScreen_height = 0; + saveScreen_y = 0; + saveScreen_x = 0; } } diff --git a/src/gui/widget/menue.h b/src/gui/widget/menue.h index 61d6691b4..5da3cc3f5 100644 --- a/src/gui/widget/menue.h +++ b/src/gui/widget/menue.h @@ -496,6 +496,8 @@ class CMenuWidget : public CMenuTarget, public CComponentsSignals CComponentsHeader *header; unsigned int saveScreen_width ; unsigned int saveScreen_height; + unsigned int saveScreen_y; + unsigned int saveScreen_x; protected: std::string nameString; neutrino_locale_t name;