Common subdirectories: vdr-2.2.0/PLUGINS and /usr/local/src/vdr-2.2.0/PLUGINS Common subdirectories: vdr-2.2.0/libsi and /usr/local/src/vdr-2.2.0/libsi diff -upN '--exclude=Make.config' vdr-2.2.0/osdbase.c /usr/local/src/vdr-2.2.0/osdbase.c --- vdr-2.2.0/osdbase.c 2015-01-15 11:11:11.000000000 +0100 +++ /usr/local/src/vdr-2.2.0/osdbase.c 2015-08-06 17:27:18.778646643 +0200 @@ -87,6 +87,7 @@ cOsdMenu::cOsdMenu(const char *Title, in title = NULL; menuCategory = mcUnknown; menuSortMode = msmUnknown; + menuOrientation = moVertical; SetTitle(Title); SetCols(c0, c1, c2, c3, c4); first = 0; @@ -231,6 +232,7 @@ void cOsdMenu::Display(void) if (menuCategory != displayMenu->MenuCategory()) displayMenu->SetMenuCategory(menuCategory); displayMenu->SetMenuSortMode(menuSortMode); + menuOrientation = displayMenu->MenuOrientation(); displayMenuItems = displayMenu->MaxItems(); displayMenu->SetTabs(cols[0], cols[1], cols[2], cols[3], cols[4]);//XXX displayMenu->SetTitle(title); @@ -541,13 +543,13 @@ eOSState cOsdMenu::ProcessKey(eKeys Key) case k0: return osUnknown; case k1...k9: return hasHotkeys ? HotKey(Key) : osUnknown; case kUp|k_Repeat: - case kUp: CursorUp(); break; + case kUp: if (menuOrientation == moHorizontal) PageUp(); else CursorUp(); break; case kDown|k_Repeat: - case kDown: CursorDown(); break; + case kDown: if (menuOrientation == moHorizontal) PageDown(); else CursorDown(); break; case kLeft|k_Repeat: - case kLeft: PageUp(); break; + case kLeft: if (menuOrientation == moHorizontal) CursorUp(); else PageUp(); break; case kRight|k_Repeat: - case kRight: PageDown(); break; + case kRight: if (menuOrientation == moHorizontal) CursorDown(); else PageDown(); break; case kBack: return osBack; case kOk: if (marked >= 0) { SetStatus(NULL); diff -upN '--exclude=Make.config' vdr-2.2.0/osdbase.h /usr/local/src/vdr-2.2.0/osdbase.h --- vdr-2.2.0/osdbase.h 2015-01-15 11:09:18.000000000 +0100 +++ /usr/local/src/vdr-2.2.0/osdbase.h 2015-07-31 15:23:29.232867174 +0200 @@ -93,6 +93,7 @@ private: int first, current, marked; eMenuCategory menuCategory; eMenuSortMode menuSortMode; + eMenuOrientation menuOrientation; cOsdMenu *subMenu; const char *helpRed, *helpGreen, *helpYellow, *helpBlue; bool helpDisplayed; Common subdirectories: vdr-2.2.0/po and /usr/local/src/vdr-2.2.0/po diff -upN '--exclude=Make.config' vdr-2.2.0/skins.h /usr/local/src/vdr-2.2.0/skins.h --- vdr-2.2.0/skins.h 2015-01-15 11:45:47.000000000 +0100 +++ /usr/local/src/vdr-2.2.0/skins.h 2015-08-06 17:33:41.500188153 +0200 @@ -129,6 +129,12 @@ enum eMenuSortMode { msmProvider }; +#define MENU_ORIENTATION_DEFINED 1 +enum eMenuOrientation { + moVertical = 0, + moHorizontal + }; + class cSkinDisplayMenu : public cSkinDisplay { ///< This class implements the general purpose menu display, which is ///< used throughout the program to display information and let the @@ -179,6 +185,10 @@ public: ///< Sets the mode by which the items in this menu are sorted. ///< This is purely informative and may be used by a skin to display the ///< current sort mode by means of some text or symbol. + virtual eMenuOrientation MenuOrientation(void) { return moVertical; } + ///< Asks the skin for the orientation of the displayed menu + ///< If menu orientation is set to horizontal, the keys left / right + ///< and up / down are just toggled virtual void Scroll(bool Up, bool Page); ///< If this menu contains a text area that can be scrolled, this function ///< will be called to actually scroll the text. Up indicates whether the Common subdirectories: vdr-2.2.0/symbols and /usr/local/src/vdr-2.2.0/symbols