Re: [dev] Re: [dwm] A general approach to master-slave layouts

From: Anselm R Garbe <garbeam_AT_gmail.com>
Date: Tue, 1 Nov 2011 17:24:55 +0100

On 1 November 2011 17:04, lolilolicon <lolilolicon_AT_gmail.com> wrote:
> On Tue, Nov 1, 2011 at 11:38 PM, Anselm R Garbe <garbeam_AT_gmail.com> wrote:
>> however this would require some reshuffling of the config.h inclusion
>> and also changes in various places. So I doubt it would be necessary
>> at all. Just stick with nmaster/mfact in Monitor.
>>
>
> Hmm, I think the difficulty is to track the index of the current layout
> in the layouts array.  I'm not sure how.  I'd like to stick with the
> current Monitor struct.

Hmm, ok.

>> This could work for a patch, but I don't think this is a great way of
>> programming for mainline, since manipulating and restoring
>> nmaster/mfact for the time being is quite ugly. ;)
>
> Well, it's a compromise.  Would you feel it's less ugly if I define the
> apply_mslts function like this:
>
>    tatic void apply_mslts(Monitor *m, Bool hsplit,
>        float mfact, int nmaster,
>        void (*mltf)(Client **, Booth *, unsigned int),
>        void (*sltf)(Client **, Booth *, unsigned int)) {
>        /* uses mfact instead of m->mfact, nmaster intead of m->nmaster */
>    }
>
> and define the layouts like:
>
>    void
>    col(Monitor *m) {
>       int nmaster = MIN(m->nmaster, m->ww / term_width);
>       float mfact = (float)term_width * nmaster / m->ww;
>      apply_mslts(m, False, mfact, nmaster, lt_hstack, lt_vstack);
>    }
>    void
>    tile(Monitor *m) {
>      apply_mslts(m, False, m->mfact, m->nmaster, lt_vstack, lt_vstack);
>    }
>
> Basically the same thing, I guess it's still ugly, but does it feel less
> ugly? :D

I think this is less ugly, because you don't manipulate (like before)
m->{nmaster, mfact}.

Cheers,
Anselm
Received on Tue Nov 01 2011 - 17:24:55 CET

This archive was generated by hypermail 2.3.0 : Tue Nov 01 2011 - 17:36:03 CET