Skip to content

feh_event_handle_ConfigureNotify ignores window geometry change when called too early #829

@Flexlolo

Description

@Flexlolo

My goal is to make feh behave as if its in fullscreen while being effectively tiled.
I created a custom rule on BSPWM "bspc rule -a feh state=tiled" that forces feh to be tiled.
Launching feh with -F does indeed make it pseudo-fullscreen and tiled, but the image is not resized accordingly.
According to the log feh_event_handle_ConfigureNotify is being called but the following if statement fails:

if ((w->w != ev->xconfigure.width) || (w->h != ev->xconfigure.height))

Without looking too much at the winwidget code, I assume its related to window mapping.
Would it be possible to address this by queuing the event or changing if statement?
Below is full log and screenshot of an example.
In the log you could see second event handled properly once the window is mapped.

feh --debug -F image.png
options.c    +461  feh_parse_option_array : Got option, getopt calls it 70, or F
filelist.c   +207  add_file_to_filelist_recursively : file is image.png
filelist.c   +288  add_file_to_filelist_recursively : Adding regular file image.png to filelist
options.c    +116  init_parse_options   : Options parsed
filelist.c   +511  feh_prepare_filelist : sort mode requested is: 0
winwidget.c  +839  winwidget_loadimage  : filename image.png
imlib.c      +345  feh_load_image       : filename is image.png, image is 0x55e03bd2dd58
imlib.c      +310  feh_is_image         : file image.png has mime type: image/png
imlib.c      +488  feh_load_image       : Loaded ok
winwidget.c  +753  winwidget_inotify_add : Adding inotify watch for image.png
winwidget.c  +140  winwidget_create_from_file : image is 998x458 pixels, format png
winwidget.c  +174  winwidget_create_window : winwidget_create_window 998x458
winwidget.c  +381  winwidget_update_title : winwid->name = (null)
winwidget.c  +1003 winwidget_register   : window 0x55e03bd2dd20
winwidget.c  +476  winwidget_render_image : winwidget_render_image resize 1 force_alias 0 im 998x458
winwidget.c  +553  winwidget_render_image : sx:    0 sy:    0 sw:      sh:      dx: 1413522816 dy: 32577 dw:  461 dh:  311 zoom: 1.000000
winwidget.c  +570  winwidget_render_image : sx:    0 sy:    0 sw:  998 sh:  458 dx:  461 dy:  311 dw:  998 dh:  458 zoom: 1.000000
winwidget.c  +576  winwidget_render_image : winwidget_render(): winwid->im_angle = 0.000000
winwidget.c  +381  winwidget_update_title : winwid->name = feh [1 of 1] - image.png
winwidget.c  +862  winwidget_show       : Waiting for window to map
events.c     +431  feh_event_handle_ConfigureNotify : configure size 956x1052
winwidget.c  +875  winwidget_show       : Window mapped
main.c       +265  feh_main_iteration   : Performing blocking select - no timers, or zooming
main.c       +265  feh_main_iteration   : Performing blocking select - no timers, or zooming
main.c       +265  feh_main_iteration   : Performing blocking select - no timers, or zooming
main.c       +265  feh_main_iteration   : Performing blocking select - no timers, or zooming
main.c       +265  feh_main_iteration   : Performing blocking select - no timers, or zooming
events.c     +431  feh_event_handle_ConfigureNotify : configure size 956x524
events.c     +434  feh_event_handle_ConfigureNotify : assigning size and rerendering
winwidget.c  +476  winwidget_render_image : winwidget_render_image resize 0 force_alias 0 im 998x458
winwidget.c  +553  winwidget_render_image : sx:    0 sy:    0 sw:      sh:      dx: 1413522816 dy: 32577 dw:    0 dh:   42 zoom: 0.957916
winwidget.c  +570  winwidget_render_image : sx:    0 sy:    0 sw:  998 sh:  458 dx:    0 dy:   42 dw:  956 dh:  439 zoom: 0.957916
winwidget.c  +576  winwidget_render_image : winwidget_render(): winwid->im_angle = 0.000000
winwidget.c  +381  winwidget_update_title : winwid->name = feh [1 of 1] - image.png

What happens:
Image

What should happen:
Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions