Ticket #333: angband_x11_x.diff

File angband_x11_x.diff, 4.1 KB (added by morth@…, 12 years ago)

patch for -x and setting USPosition (user set window position) only.

  • main-x11.c

    old new  
    15001500/* 
    15011501 * Path to the X11 settings file 
    15021502 */ 
     1503static const char *x11_prefs = "x11-settings.prf"; 
    15031504char settings[1024]; 
    15041505 
    15051506 
     
    22322233        /* Get default font for this term */ 
    22332234        font = get_default_font(i); 
    22342235 
    2235         /* Build the filename */ 
    2236         path_build(settings, sizeof(settings), ANGBAND_DIR_USER, "x11-settings.prf"); 
    2237  
    22382236        /* Open the file */ 
    22392237        fff = my_fopen(settings, "r"); 
    22402238 
     
    24722470        /* Oops */ 
    24732471        if (sh == NULL) quit("XAllocSizeHints failed"); 
    24742472 
     2473        sh->flags = 0; 
     2474        if (x || y) 
     2475                sh->flags |= USPosition; 
     2476 
    24752477        /* Main window has a differing minimum size */ 
    24762478        if (i == 0) 
    24772479        { 
    24782480                /* Main window min size is 80x24 */ 
    2479                 sh->flags = PMinSize | PMaxSize; 
     2481                sh->flags |= PMinSize | PMaxSize; 
    24802482                sh->min_width = 80 * td->tile_wid + (ox + ox); 
    24812483                sh->min_height = 24 * td->tile_hgt + (oy + oy); 
    24822484                sh->max_width = 255 * td->tile_wid + (ox + ox); 
     
    24872489        else 
    24882490        { 
    24892491                /* Other windows */ 
    2490                 sh->flags = PMinSize | PMaxSize; 
     2492                sh->flags |= PMinSize | PMaxSize; 
    24912493                sh->min_width = td->tile_wid + (ox + ox); 
    24922494                sh->min_height = td->tile_hgt + (oy + oy); 
    24932495                sh->max_width = 255 * td->tile_wid + (ox + ox); 
     
    25462548} 
    25472549 
    25482550 
    2549 const char help_x11[] = "Basic X11, subopts -d<display> -n<windows>" 
     2551const char help_x11[] = "Basic X11, subopts -d<display> -n<windows> -x<file>" 
    25502552#ifdef USE_GRAPHICS 
    2551                         " -s(moothRescale)" 
    2552                         "\n           -b(Bigtile) -o(original) -a(AdamBolt) -g(David Gervais)" 
     2553                        "\n           -s(moothRescale) -b(Bigtile) -o(original) -a(AdamBolt) -g(David Gervais)" 
    25532554#endif 
    25542555                        ; 
    25552556 
     
    26152616 
    26162617        cptr dpy_name = ""; 
    26172618 
    2618         int num_term = 1; 
     2619        int num_term = 0; 
    26192620 
    26202621        FILE *fff; 
    26212622 
     
    26372638#endif /* USE_GRAPHICS */ 
    26382639 
    26392640 
    2640         /* 
    2641          * Check x11-settings for the number of windows before handling 
    2642          * command line options to allow for easy override 
    2643          */ 
    2644  
    2645         /* Build the filename */ 
    2646         (void)path_build(settings, sizeof(settings), ANGBAND_DIR_USER, "x11-settings.prf"); 
    2647  
    2648         /* Open the file */ 
    2649         fff = my_fopen(settings, "r"); 
    2650  
    2651         /* File exists */ 
    2652         if (fff) 
    2653         { 
    2654                 /* Process the file */ 
    2655                 while (0 == my_fgets(fff, buf, sizeof(buf))) 
    2656                 { 
    2657                         /* Count lines */ 
    2658                         line++; 
    2659  
    2660                         /* Skip "empty" lines */ 
    2661                         if (!buf[0]) continue; 
    2662  
    2663                         /* Skip "blank" lines */ 
    2664                         if (isspace((unsigned char)buf[0])) continue; 
    2665  
    2666                         /* Skip comments */ 
    2667                         if (buf[0] == '#') continue; 
    2668  
    2669                         /* Number of terminal windows */ 
    2670                         if (prefix(buf, "TERM_WINS")) 
    2671                         { 
    2672                                 str = strstr(buf, "="); 
    2673                                 val = (str != NULL) ? atoi(str + 1) : -1; 
    2674                                 if (val > 0) num_term = val; 
    2675                                 continue; 
    2676                         } 
    2677                 } 
    2678  
    2679                 /* Close */ 
    2680                 (void)my_fclose(fff); 
    2681         } 
    2682  
    26832641        /* Parse args */ 
    26842642        for (i = 1; i < argc; i++) 
    26852643        { 
     
    27312689                        continue; 
    27322690                } 
    27332691 
     2692                if (prefix(argv[i], "-x")) 
     2693                { 
     2694                        x11_prefs = argv[i] + 2; 
     2695                        continue; 
     2696                } 
     2697 
    27342698                plog_fmt("Ignoring option: %s", argv[i]); 
    27352699        } 
    27362700 
     
    27792743                Infoclr_init_ppn(pixel, Metadpy->bg, "cpy", 0); 
    27802744        } 
    27812745 
     2746        /* 
     2747         * Check x11-settings for the number of windows. 
     2748         */ 
     2749 
     2750        /* Build the filename */ 
     2751        (void)path_build(settings, sizeof(settings), ANGBAND_DIR_USER, x11_prefs); 
     2752 
     2753        if (num_term < 1) { 
     2754                /* Open the file */ 
     2755                fff = my_fopen(settings, "r"); 
     2756 
     2757                /* File exists */ 
     2758                if (fff) 
     2759                { 
     2760                        /* Process the file */ 
     2761                        while (0 == my_fgets(fff, buf, sizeof(buf))) 
     2762                        { 
     2763                                /* Count lines */ 
     2764                                line++; 
     2765 
     2766                                /* Skip "empty" lines */ 
     2767                                if (!buf[0]) continue; 
     2768 
     2769                                /* Skip "blank" lines */ 
     2770                                if (isspace((unsigned char)buf[0])) continue; 
     2771 
     2772                                /* Skip comments */ 
     2773                                if (buf[0] == '#') continue; 
     2774 
     2775                                /* Number of terminal windows */ 
     2776                                if (prefix(buf, "TERM_WINS")) 
     2777                                { 
     2778                                        str = strstr(buf, "="); 
     2779                                        val = (str != NULL) ? atoi(str + 1) : -1; 
     2780                                        if (val > 0) num_term = val; 
     2781                                        continue; 
     2782                                } 
     2783                        } 
     2784 
     2785                        /* Close */ 
     2786                        (void)my_fclose(fff); 
     2787                } 
     2788        } 
     2789        if (num_term < 1) 
     2790                num_term = 1; 
    27822791 
    27832792        /* Initialize the windows */ 
    27842793        for (i = 0; i < num_term; i++)