X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/102d0d14faf12415db0b1cd4bf3a2d510aa798c8..008b4378244bc9da9bc021598c8ff6d75a420593:/gtk.c diff --git a/gtk.c b/gtk.c index ab10a11..81aeda1 100644 --- a/gtk.c +++ b/gtk.c @@ -98,10 +98,14 @@ void frontend_default_colour(frontend *fe, float *output) void status_bar(frontend *fe, char *text) { + char *rewritten; + assert(fe->statusbar); + rewritten = midend_rewrite_statusbar(fe->me, text); gtk_statusbar_pop(GTK_STATUSBAR(fe->statusbar), fe->statusctx); - gtk_statusbar_push(GTK_STATUSBAR(fe->statusbar), fe->statusctx, text); + gtk_statusbar_push(GTK_STATUSBAR(fe->statusbar), fe->statusctx, rewritten); + sfree(rewritten); } void start_draw(frontend *fe) @@ -317,24 +321,26 @@ static gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data) { frontend *fe = (frontend *)data; int keyval; + int shift = (event->state & GDK_SHIFT_MASK) ? MOD_SHFT : 0; + int ctrl = (event->state & GDK_CONTROL_MASK) ? MOD_CTRL : 0; if (!fe->pixmap) return TRUE; if (event->keyval == GDK_Up) - keyval = CURSOR_UP; + keyval = shift | ctrl | CURSOR_UP; else if (event->keyval == GDK_KP_Up || event->keyval == GDK_KP_8) keyval = MOD_NUM_KEYPAD | '8'; else if (event->keyval == GDK_Down) - keyval = CURSOR_DOWN; + keyval = shift | ctrl | CURSOR_DOWN; else if (event->keyval == GDK_KP_Down || event->keyval == GDK_KP_2) keyval = MOD_NUM_KEYPAD | '2'; else if (event->keyval == GDK_Left) - keyval = CURSOR_LEFT; + keyval = shift | ctrl | CURSOR_LEFT; else if (event->keyval == GDK_KP_Left || event->keyval == GDK_KP_4) keyval = MOD_NUM_KEYPAD | '4'; else if (event->keyval == GDK_Right) - keyval = CURSOR_RIGHT; + keyval = shift | ctrl | CURSOR_RIGHT; else if (event->keyval == GDK_KP_Right || event->keyval == GDK_KP_6) keyval = MOD_NUM_KEYPAD | '6'; else if (event->keyval == GDK_KP_Home || event->keyval == GDK_KP_7) @@ -462,7 +468,7 @@ static gint configure_area(GtkWidget *widget, gdk_draw_rectangle(fe->pixmap, gc, 1, 0, 0, fe->w, fe->h); gdk_gc_unref(gc); - midend_redraw(fe->me); + midend_force_redraw(fe->me); return TRUE; } @@ -1301,7 +1307,7 @@ int main(int argc, char **argv) while (n-- > 0) { game_aux_info *aux = NULL; - char *desc = thegame.new_desc(par, rs, &aux); + char *desc = thegame.new_desc(par, rs, &aux, FALSE); printf("%s:%s\n", parstr, desc); sfree(desc); if (aux)