[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_na
From: |
David Engster |
Subject: |
bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_natural_allocation throws assertion |
Date: |
Wed, 25 Nov 2015 20:00:38 +0100 |
User-agent: |
Gnus/5.13001 (Ma Gnus v0.10) Emacs/24.5 (gnu/linux) |
martin rudalics writes:
>>> And obviously this is Bug#15700 ;-)
>>
>> I really need to improve my search-fu...
>
> I could have noticed sooner too. Google also lists:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=881760
>
> https://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00276.html
>
> https://bbs.archlinux.org/viewtopic.php?id=168847
>
> https://cygwin.com/ml/cygwin/2013-07/msg00070.html
I've actually found most of those, as well as bug #12234, but I think
that one was a problem only with Unity.
>> Also, it seems to be impossible to programatically set a frame width
>> that is smaller than the menu-bar. `set-frame-width' doesn't work,
>> neither does `initial-frame-alist' or even the '-geometry' switch.
>
> Here with xfce ‘set-frame-width’ and ‘default-frame-alist’ both crop the
> menubar.
That's weird. I just tested with 'icewm' and saw the same behavior as in
'i3' (flickering during resize and (set-frame-width nil 10) not
working). Maybe it also depends on the exact GTK3 version?
>> Unfortunately, I'm not very familiar with GTK. My guess is that you
>> would somehow have to catch the 'size-allocate' signal and do The Right
>> Thing in the callback, but my hacks so far were not successful.
>
> If I'm not mistaken the problem should happen in one of the two
> gtk_distribute_natural_allocation calls of gtk_menu_bar_size_allocate.
>
> But create_menus in gtkutil.c has this
>
> /* Set width of menu bar to a small value so it doesn't enlarge
> a small initial frame size. The width will be set to the
> width of the frame later on when it is added to a container.
> height -1: Natural height. */
> gtk_widget_set_size_request (wmenu, 1, -1);
>
> I have no idea yet how these are related and when the "width will be set".
I think the final width is set when container containing the menu widget
is actually displayed. The code is pretty opaque to me - I guess we
can't just use a plain gtk menu_bar because we need to add/remove menu
items at runtime? Because any other GTK3 app I've tried did not have any
problem with cropping the menu bar during resize.
-David
- bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_natural_allocation throws assertion, David Engster, 2015/11/23
- bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_natural_allocation throws assertion, martin rudalics, 2015/11/24
- bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_natural_allocation throws assertion, David Engster, 2015/11/24
- bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_natural_allocation throws assertion, martin rudalics, 2015/11/24
- bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_natural_allocation throws assertion, David Engster, 2015/11/25
- bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_natural_allocation throws assertion, martin rudalics, 2015/11/25
- bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_natural_allocation throws assertion,
David Engster <=
- bug#22000: 25.0.50; Running dired changes frame width, gtk_distribute_natural_allocation throws assertion, martin rudalics, 2015/11/26