summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
366d045)
particularly useful keypress, particularly given how easy it is to
confuse it with `Redo'. So both r and ^R are now Redo, and Restart
is relegated to being a menu-only option.
git-svn-id: svn://svn.tartarus.org/sgt/puzzles@5796
cda61777-01e9-0310-a592-
d414129be87e
error_box(fe->window, msg);
}
error_box(fe->window, msg);
}
+static void menu_restart_event(GtkMenuItem *menuitem, gpointer data)
+{
+ frontend *fe = (frontend *)data;
+
+ midend_restart_game(fe->me);
+}
+
static void menu_config_event(GtkMenuItem *menuitem, gpointer data)
{
frontend *fe = (frontend *)data;
static void menu_config_event(GtkMenuItem *menuitem, gpointer data)
{
frontend *fe = (frontend *)data;
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);
add_menu_item_with_key(fe, GTK_CONTAINER(menu), "New", 'n');
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu);
add_menu_item_with_key(fe, GTK_CONTAINER(menu), "New", 'n');
- add_menu_item_with_key(fe, GTK_CONTAINER(menu), "Restart", 'r');
+
+ menuitem = gtk_menu_item_new_with_label("Restart");
+ gtk_container_add(GTK_CONTAINER(menu), menuitem);
+ gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
+ GTK_SIGNAL_FUNC(menu_restart_event), fe);
+ gtk_widget_show(menuitem);
menuitem = gtk_menu_item_new_with_label("Specific...");
gtk_object_set_data(GTK_OBJECT(menuitem), "user-data",
menuitem = gtk_menu_item_new_with_label("Specific...");
gtk_object_set_data(GTK_OBJECT(menuitem), "user-data",
* midend.c: general middle fragment sitting between the
* platform-specific front end and game-specific back end.
* Maintains a move list, takes care of Undo and Redo commands, and
* midend.c: general middle fragment sitting between the
* platform-specific front end and game-specific back end.
* Maintains a move list, takes care of Undo and Redo commands, and
- * processes standard keystrokes for undo/redo/new/restart/quit.
+ * processes standard keystrokes for undo/redo/new/quit.
+ midend_stop_anim(me);
+
assert(me->statepos >= 1);
if (me->statepos == 1)
return; /* no point doing anything at all! */
assert(me->statepos >= 1);
if (me->statepos == 1)
return; /* no point doing anything at all! */
midend_new_game(me);
midend_redraw(me);
return 1; /* never animate */
midend_new_game(me);
midend_redraw(me);
return 1; /* never animate */
- } else if (button == 'r' || button == 'R') {
- midend_stop_anim(me);
- midend_restart_game(me);
- midend_redraw(me);
- return 1; /* never animate */
} else if (button == 'u' || button == 'u' ||
button == '\x1A' || button == '\x1F') {
midend_stop_anim(me);
} else if (button == 'u' || button == 'u' ||
button == '\x1A' || button == '\x1F') {
midend_stop_anim(me);
gotspecial = TRUE;
if (!midend_undo(me))
return 1;
gotspecial = TRUE;
if (!midend_undo(me))
return 1;
- } else if (button == '\x12') {
+ } else if (button == 'r' || button == 'R' ||
+ button == '\x12') {
midend_stop_anim(me);
if (!midend_redo(me))
return 1;
midend_stop_anim(me);
if (!midend_redo(me))
return 1;
}
- (void)restartGame:(id)sender
{
}
- (void)restartGame:(id)sender
{
- [self processButton:'r' x:-1 y:-1];
+ midend_restart_game(me);
}
- (void)undoMove:(id)sender
{
}
- (void)undoMove:(id)sender
{
PostQuitMessage(0);
break;
case IDM_RESTART:
PostQuitMessage(0);
break;
case IDM_RESTART:
- if (!midend_process_key(fe->me, 0, 0, 'r'))
- PostQuitMessage(0);
+ midend_restart_game(fe->me);
break;
case IDM_UNDO:
if (!midend_process_key(fe->me, 0, 0, 'u'))
break;
case IDM_UNDO:
if (!midend_process_key(fe->me, 0, 0, 'u'))