- int middle = (first_page + last_page) / 2;
- file << std::setw(indent) << "" << "if (g0 le " << middle << ")\n";
- generate_page_dispatch(file, indent + 2, first_page, middle);
- file << std::setw(indent) << "" << "else\n";
- generate_page_dispatch(file, indent + 2, middle + 1, last_page);
+ if (first_menu == 0 && last_menu == 1)
+ {
+ // dvdauthor doesn't allow empty blocks or null
+ // statements so when selecting between the first 2
+ // menus we don't use an "else" part. We must use
+ // braces so that a following "else" will match the
+ // right "if".
+ file << std::setw(indent) << "" << "{\n"
+ << std::setw(indent) << "" << "if (g0 eq 2)\n"
+ << std::setw(indent + 2) << "" << "jump menu 2;\n"
+ << std::setw(indent) << "" << "}\n";
+ }
+ else
+ {
+ int middle = (first_menu + last_menu) / 2;
+ file << std::setw(indent) << "" << "if (g0 le " << 1 + middle
+ << ")\n";
+ generate_menu_dispatch(file, indent + 2,
+ first_menu, middle);
+ file << std::setw(indent) << "" << "else\n";
+ generate_menu_dispatch(file, indent + 2,
+ middle + 1, last_menu);
+ }