gui/widget/menue.cpp:

always call paintHint(-1) in hide() to clear hintbox;
comment additional hintbox w/h from full_width/full_height - CComponents should clear itself;
dont always save/restore menu hint screens - why it was enabled ??
comment GenericMenuBack->setHint() in ::exec - checkHints() do the same
This commit is contained in:
[CST] Focus
2012-10-19 19:30:28 +04:00
parent 5d055324ec
commit 405ac286e3

View File

@@ -491,10 +491,14 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &)
} }
} }
} }
#if 0
GenericMenuBack->setHint("", NONEXISTANT_LOCALE); GenericMenuBack->setHint("", NONEXISTANT_LOCALE);
#endif
checkHints(); checkHints();
#if 0
if (has_hints) if (has_hints)
GenericMenuBack->setHint(NEUTRINO_ICON_HINT_BACK, LOCALE_MENU_HINT_BACK); GenericMenuBack->setHint(NEUTRINO_ICON_HINT_BACK, LOCALE_MENU_HINT_BACK);
#endif
if(savescreen) { if(savescreen) {
calcSize(); calcSize();
@@ -758,8 +762,9 @@ void CMenuWidget::hide()
restoreScreen();//FIXME restoreScreen();//FIXME
else { else {
frameBuffer->paintBackgroundBoxRel(x, y, full_width, full_height); frameBuffer->paintBackgroundBoxRel(x, y, full_width, full_height);
paintHint(-1); //paintHint(-1);
} }
paintHint(-1);
/* setActive() paints item for hidden parent menu, if called from child menu */ /* setActive() paints item for hidden parent menu, if called from child menu */
for (unsigned int count = 0; count < items.size(); count++) for (unsigned int count = 0; count < items.size(); count++)
@@ -878,8 +883,8 @@ void CMenuWidget::calcSize()
if(total_pages > 1) if(total_pages > 1)
sb_width=15; sb_width=15;
full_width = ConnectLineBox_Width+width+sb_width+SHADOW_OFFSET; full_width = /*ConnectLineBox_Width+*/width+sb_width+SHADOW_OFFSET;
full_height = height+RADIUS_LARGE+SHADOW_OFFSET*2+hint_height+INFO_BOX_Y_OFFSET; full_height = height+RADIUS_LARGE+SHADOW_OFFSET*2 /*+hint_height+INFO_BOX_Y_OFFSET*/;
setMenuPos(width - sb_width); setMenuPos(width - sb_width);
} }
@@ -1039,14 +1044,14 @@ void CMenuWidget::saveScreen()
background = new fb_pixel_t [full_width * full_height]; background = new fb_pixel_t [full_width * full_height];
if(background) if(background)
frameBuffer->SaveScreen(x-ConnectLineBox_Width, y, full_width, full_height, background); frameBuffer->SaveScreen(x /*-ConnectLineBox_Width*/, y, full_width, full_height, background);
} }
void CMenuWidget::restoreScreen() void CMenuWidget::restoreScreen()
{ {
if(background) { if(background) {
if(savescreen) if(savescreen)
frameBuffer->RestoreScreen(x-ConnectLineBox_Width, y, full_width, full_height, background); frameBuffer->RestoreScreen(x /*-ConnectLineBox_Width*/, y, full_width, full_height, background);
} }
} }
@@ -1075,12 +1080,22 @@ void CMenuWidget::paintHint(int pos)
if (hint_painted) { if (hint_painted) {
/* clear detailsline line */ /* clear detailsline line */
if (details_line != NULL) // TODO CComponents::hide with param restore ? or auto (if it have saved screens) ?
details_line->restore(); if (details_line != NULL) {
if (savescreen)
details_line->restore();
else
details_line->hide();
}
/* clear info box */ /* clear info box */
if (info_box != NULL) if (info_box != NULL) {
if (pos == -1) if (pos == -1) {
info_box->restore(); if (savescreen)
info_box->restore();
else
info_box->hide();
}
}
hint_painted = false; hint_painted = false;
} }
if (pos < 0) if (pos < 0)
@@ -1090,8 +1105,12 @@ void CMenuWidget::paintHint(int pos)
//printf("paintHint: icon %s text %s\n", item->hintIcon.c_str(), g_Locale->getText(item->hint)); //printf("paintHint: icon %s text %s\n", item->hintIcon.c_str(), g_Locale->getText(item->hint));
if (item->hintIcon.empty() && item->hint == NONEXISTANT_LOCALE) { if (item->hintIcon.empty() && item->hint == NONEXISTANT_LOCALE) {
if (info_box != NULL) if (info_box != NULL) {
info_box->restore(); if (savescreen)
info_box->restore();
else
info_box->hide();
}
return; return;
} }
@@ -1114,7 +1133,7 @@ void CMenuWidget::paintHint(int pos)
details_line->setYPosDown(ypos2a); details_line->setYPosDown(ypos2a);
details_line->setHMarkDown(markh); details_line->setHMarkDown(markh);
} }
details_line->paint(); details_line->paint(savescreen);
if (info_box == NULL) if (info_box == NULL)
info_box = new CComponentsInfoBox(x, ypos2, iwidth, hint_height); info_box = new CComponentsInfoBox(x, ypos2, iwidth, hint_height);
@@ -1123,7 +1142,8 @@ void CMenuWidget::paintHint(int pos)
info_box->setYPos(ypos2); info_box->setYPos(ypos2);
info_box->setWidth(iwidth); info_box->setWidth(iwidth);
} }
info_box->paint(); /* force full paint - menu-over i.e. option chooser with pulldown can overwrite */
info_box->paint(savescreen, true);
int offset = 10; int offset = 10;
if (!item->hintIcon.empty()) { if (!item->hintIcon.empty()) {