[mythtv] [patch] LCD redraw fix in themedmenu.cpp
Leo Weppelman
leo at wau.mis.ah.nl
Sun Aug 29 16:36:12 EDT 2004
The attached patch factors out the duplicated LCD update code from
parseMenu() and keyPressHandler() into a new function: updateLCD(). Also
a call is added to this function from paintEvent(). The latter causes the
LCD to be redrawn upon return to the menu.
Leo.
-------------- next part --------------
Index: themedmenu.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmyth/themedmenu.cpp,v
retrieving revision 1.87
diff -u -r1.87 themedmenu.cpp
--- themedmenu.cpp 19 Aug 2004 02:02:19 -0000 1.87
+++ themedmenu.cpp 29 Aug 2004 20:15:16 -0000
@@ -141,6 +141,8 @@
const QString &password_setting,
const QString &text);
+ void updateLCD(void);
+
ThemedMenu *parent;
float wmult;
@@ -1278,28 +1280,37 @@
{
titleText = "MYTH-";
titleText += menumode;
- QPtrList<LCDMenuItem> menuItems;
- menuItems.setAutoDelete(true);
- bool selected;
+ updateLCD();
+ }
- for (int r = 0; r < (int)buttonRows.size(); r++)
- {
- if (r == currentrow)
- selected = true;
- else
- selected = false;
+ selection = "";
+ parent->update(menuRect());
+}
- if (currentcolumn < buttonRows[r].numitems)
- menuItems.append(new LCDMenuItem(selected, NOTCHECKABLE,
- buttonRows[r].buttons[currentcolumn]->text));
- }
+void ThemedMenuPrivate::updateLCD()
+{
+ if (!lcddev)
+ return;
+
+ // Build a list of the menu items
+ QPtrList<LCDMenuItem> menuItems;
+ menuItems.setAutoDelete(true);
+ bool selected;
- if (!menuItems.isEmpty())
- lcddev->switchToMenu(&menuItems, titleText);
+ for (int r = 0; r < (int)buttonRows.size(); r++)
+ {
+ if (r == currentrow)
+ selected = true;
+ else
+ selected = false;
+
+ if (currentcolumn < buttonRows[r].numitems)
+ menuItems.append(new LCDMenuItem(selected, NOTCHECKABLE,
+ buttonRows[r].buttons[currentcolumn]->text));
}
- selection = "";
- parent->update(menuRect());
+ if (!menuItems.isEmpty())
+ lcddev->switchToMenu(&menuItems, titleText);
}
QPoint ThemedMenuPrivate::parsePoint(const QString &text)
@@ -1976,27 +1987,8 @@
}
activebutton = buttonRows[currentrow].buttons[currentcolumn];
- if (lcddev)
- {
- // Build a list of the menu items
- QPtrList<LCDMenuItem> menuItems;
- menuItems.setAutoDelete(true);
- bool selected;
- for (int r = 0; r < (int)buttonRows.size(); r++)
- {
- if (r == currentrow)
- selected = true;
- else
- selected = false;
- if (currentcolumn < buttonRows[r].numitems)
- menuItems.append(new LCDMenuItem(selected, NOTCHECKABLE,
- buttonRows[r].buttons[currentcolumn]->text));
- }
-
- if (!menuItems.isEmpty())
- lcddev->switchToMenu(&menuItems, titleText);
- }
+ updateLCD();
parent->update(watermarkRect);
if (lastbutton)
@@ -2316,6 +2308,7 @@
if (r.intersects(d->buttonList[i].posRect))
d->paintButton(i, &p, e->erased());
}
+ d->updateLCD();
}
void ThemedMenu::ReloadTheme(void)
More information about the mythtv-dev
mailing list