From 39bf43e4653adad59f540e02fcab6b42a95593d9 Mon Sep 17 00:00:00 2001 From: Ryohei Morita Date: Mon, 2 Feb 2015 01:02:55 +0800 Subject: [PATCH] Fix calculation of display mode index in 'list' table. --- main.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/main.c b/main.c index 339dd42..2615463 100644 --- a/main.c +++ b/main.c @@ -164,11 +164,13 @@ unsigned int listAvailableModes(CGDirectDisplayID display, int displayNum) { CGDisplayModeRef mode; - int modesPerColumn = numModes / MODES_PER_LINE; + int lastRowNum = (numModes - 1) / MODES_PER_LINE; + int lastRowColumnSize = numModes % MODES_PER_LINE; for (i = 0; (i < numModes) && returncode; i++) { - int rowNumber = (i / MODES_PER_LINE); - int idxDisplayMode = (i % MODES_PER_LINE) * modesPerColumn + rowNumber; + int rowNumber = i / MODES_PER_LINE; + int columnNumber = i % MODES_PER_LINE; + int idxDisplayMode = columnNumber * lastRowNum + MIN(lastRowColumnSize, columnNumber) + rowNumber; // if there are an even number of display modes to display, // the last mode must have it's index decremented by 1