Subject: bug#45620: 28.0.50; Child frames should have their own border width and colour

From: Alexander Miller <[email-masked]>
Date: Mon, 4 Jan 2021 18:48:58 +0100

> As soon as I apply the value I customized there, my minibuffer child
 > frame gets that border instead of the one specified via
 > 'pop-up-mini-internal-border' above.

Personally I would think this behaviour is mildly inconvenient at worst,
but hardly a real problem. It's just a new global default overriding
local customisations.

And that is only if I manage to run into the situation in the first
place - I am not usually in the habit of customising frame border faces,
and I don't think many other people are, either. So from my perspective
I don't really see the danger (or annoyance) in this behaviour.

 > Can you propose a patch?

I can *try*. I am absolutely not a C programmer, but as long as the task
is limited to a monkey see, monkey do situation for handling a new face
I should be able to hammer something useful together.

In fact my first attempt seems to compile and behave as expected, so I
have a few questions on how to proceed:

- I need to repeatedly use a pattern that looks like this:

int is_child_frame = FRAME_PARENT_FRAME(f) != NULL;
int border_face_id = is_child_frame
    ? CHILD_FRAME_BORDER_FACE_ID
    : INTERNAL_BORDER_FACE_ID;
int face_id = !NILP (Vface_remapping_alist)
    ? lookup_basic_face (NULL, f, border_face_id)
    : border_face_id;

and I would like to put it into a single function accessible from
anywhere. Is that the right call, and if yes, where would be the right
place to put it?

- Currently the actual width of the border is still controlled by the
`internal-border-width` parameter for both frame types. Should I try to
do something about that as well? If yes, what's my entry point?

- I think I'll need to sign the FSF copyright assignment, unless the
limit is higher than the 15 lines I am remembering.