Bug in 2.3.x git: running doesn't work with GTK interface

Everything about ToME 2.x.x. No spoilers, please

Moderator: Moderator

Post Reply
Message
Author
Lord Estraven
Uruivellas
Posts: 718
Joined: Tue Dec 13, 2005 12:35 am

Bug in 2.3.x git: running doesn't work with GTK interface

#1 Post by Lord Estraven »

Something I just figured out - if you use the GTK interface, and try to run (using either shift + an arrow key or the period key) you will only move one space in the desired direction.

Edit: BTW there doesn't seem to be an obvious way to disable config options in cmake, how do I do that? I'd like to make it so that the GTK interface isn't the default for now.

Edit again: Hmm, period key seems to work actually. Lack of shift + arrow running is still annoying though.

AnonymousHero
Spiderkin
Posts: 482
Joined: Sat Mar 18, 2006 12:48 pm

Re: Bug in 2.3.x git: running doesn't work with GTK interfac

#2 Post by AnonymousHero »

I suspect running in the GTK interface doesn't work in the 2.3.5 version either, then...

It might help to give me an idea of what's going on if you add a call to printf() in src/main-gtk2.c:

Code: Select all

        /* Build the macro trigger string */
        strnfmt(msg, 128, "%c%s%s%s%s_%X%c", 31,
                mc ? "N" : "", ms ? "S" : "",
                mo ? "O" : "", mx ? "M" : "",
                event->keyval, 13);
                        
        /* Enqueue the "macro trigger" string */
        for (i = 0; msg[i]; i++) Term_keypress(msg[i]);
The changed code should look like

Code: Select all

        /* Build the macro trigger string */
        strnfmt(msg, 128, "%c%s%s%s%s_%X%c", 31,
                mc ? "N" : "", ms ? "S" : "",
                mo ? "O" : "", mx ? "M" : "",
                event->keyval, 13);

       printf("KEYPRESS: [%s]\n", msg);
                        
        /* Enqueue the "macro trigger" string */
        for (i = 0; msg[i]; i++) Term_keypress(msg[i]);
(beware: the are two almost identical blocks containing this code; only the one "inside" #if 1 is actually used. I'll remove the other one from the git repo.)

... and report back how it reports "shift-Left" (for instance).

Re: default interface: I think the game just loads the "first" (in whatever order it's using) available interface. What I usually do is to just have a little shell script which starts the game with the appropriate options:

Code: Select all

!/bin/sh
export ANGBAND_X11_FONT="-*-fixed-medium-*-normal-*-20-*-*-*-*-*-*-*"
cd "`dirname $0`" && ./src/tome -mx11 -- -n4
I'm not sure how easy it would be to add a build variable to set the default interface, but given the easy workaround I don't see much point :).

Likewise, it would be quite easy to add "DISABLE_X11", "DISABLE_GTK2", etc. options to the CMakeLists.txt file, but again not sure if it's worth the effort given the above. However, I'd certainly accept a patch which does it :).

Post Reply