On Thu, 12 Jan 2012 at 20:43:42 -0500, David Rawson Couzelis wrote:
> 

Thanks for the patch. It leads to an increased memory use for 
everybody but that's not much.

However, please let's stop having non-trivial commits with
no commit message. If there's a non-trivial reason for your patch, 
it must be documented in the commit message in order to make the
development history meaningful.

So I will edit your patch (like I did to yesterday's patch) to add 
the following commit log:

> From: David Couzelis <[email protected]>
> Date: Thu, 12 Jan 2012 20:36:52 -0500
> Subject: [PATCH] Prevent dock icons from being removed because of a change in
>  resolution.

I use xrandr to decrease the resolution of my display when I connect
it to my TV. When I change the resolution back to my monitor, a few
of the icons at the bottom of my dock are deleted.

This happens because wmaker computes the maximum number of dockapps
which the dock can hold based on the screen resolution:

        icon_count = scr->scr_height / wPreferences.icon_size;
        
and drops the dockapps above that number (in wDockRestoreState()).

But now the resolution can change via xrandr, so the above computation 
can lead to dockapps being dropped when the new resolution is smaller
than it used to be.

To fix it's enough to have a resolution-invariant number of allowed 
dockapps.


> ---
>  src/dock.c       |   12 +++---------
>  src/wconfig.h.in |    4 ++--
>  2 files changed, 5 insertions(+), 11 deletions(-)
> 
> diff --git a/src/dock.c b/src/dock.c
> index 9d74b49..96d8c61 100644
> --- a/src/dock.c
> +++ b/src/dock.c
> @@ -1080,22 +1080,16 @@ WDock *wDockCreate(WScreen * scr, int type)
>  {
>       WDock *dock;
>       WAppIcon *btn;
> -     int icon_count;
>  
>       make_keys();
>  
>       dock = wmalloc(sizeof(WDock));
>       memset(dock, 0, sizeof(WDock));
>  
> -     if (type == WM_CLIP)
> -             icon_count = CLIP_MAX_ICONS;
> -     else
> -             icon_count = scr->scr_height / wPreferences.icon_size;
> -
> -     dock->icon_array = wmalloc(sizeof(WAppIcon *) * icon_count);
> -     memset(dock->icon_array, 0, sizeof(WAppIcon *) * icon_count);
> +     dock->max_icons = DOCK_MAX_ICONS;
>  
> -     dock->max_icons = icon_count;
> +     dock->icon_array = wmalloc(sizeof(WAppIcon *) * dock->max_icons);
> +     memset(dock->icon_array, 0, sizeof(WAppIcon *) * dock->max_icons);
>  
>       btn = mainIconCreate(scr, type);
>  
> diff --git a/src/wconfig.h.in b/src/wconfig.h.in
> index 5008ac6..5b70e53 100644
> --- a/src/wconfig.h.in
> +++ b/src/wconfig.h.in
> @@ -325,8 +325,8 @@
>   * Set this to zero if you want instant raise. */
>  #define AUTO_RAISE_DELAY        600
>  
> -/* Max. number of icons the clip can have */
> -#define CLIP_MAX_ICONS               32
> +/* Max. number of icons the dock and clip can have */
> +#define DOCK_MAX_ICONS               32
>  
>  /* blink interval when invoking a menu item */
>  #define MENU_BLINK_DELAY     60000
> -- 
> 1.7.8.3
> 


-- 
To unsubscribe, send mail to [email protected].

Reply via email to