grub-core/gfxmenu/widget-box.c - bugfix: incorrect drawing in cases of NULL center slice
PATCH 1/1 grub-core/gfxmenu/widget-box.c - bugfix: incorrect drawing in cases of NULL center slice
See screenshots included.
If the center slice is NULL then west or north slice is also NULL so the height_n or width_w is also NULL. We can count these values from raw (non- scaled) bitmaps. The values will be the same as before for common cases. And the bug will be fixed.
Signature · 4 lines
With best regards, _______________________________ Vladimir Testov, ROSA Laboratory. www.rosalab.ru
grub-core/gfxmenu/widget-box.c +2 -2
@@ -81,8 +81,8 @@int height_n;int width_w; - height_n =get_height (self->scaled_pixmaps[BOX_PIXMAP_N ]); - width_w =get_width (self->scaled_pixmaps[BOX_PIXMAP_W ]); + height_n =get_height (self->raw_pixmaps[BOX_PIXMAP_N ]); + width_w =get_width (self->raw_pixmaps[BOX_PIXMAP_W ]);/* Draw sides. */ blit (self,BOX_PIXMAP_N , x + width_w, y);
В Wed, 17 Jul 2013 21:55:58 +0400
Vladimir Testov <[email protected]> пишет:
Quoted 3 lines
See screenshots included.
If the center slice is NULL then west or north slice is also NULL
Why? As far as I can tell code is supposed to scale all parts of bitmap. What triggers this problem?
Quoted 5 lines
so the
height_norwidth_wis also NULL. We can count these values from raw (non- scaled) bitmaps. The values will be the same as before for common cases. And the bug will be fixed.
This looks more like a workaround for some other problem. Also while currently width (for W) or height (for N) does not change, it may be reimplemented in the future. In this case this patch will create hard to spot bug.
Quoted 9 lines · Andrey Borzenkov
В Wed, 17 Jul 2013 21:55:58 +0400
Vladimir Testov <[email protected]> пишет:
Quoted 3 lines
See screenshots included.
If the center slice is NULL then west or north slice is also NULL
Why? As far as I can tell code is supposed to scale all parts of bitmap. What triggers this problem?
Code is supposed to scale all parts of a bitmap. Yes.
It does actually. But if the bitmap's size is zero then scaled bitmap won't be created.
There are two arrays of bitmaps: original and scaled. Some of the scaled bitmaps can be non-existent. And for correct drawing of the styled box with some zero sizes (e.g. very short scrollbar thumb, it's west slice will have zero height) will be drawn incorrectly because the west SCALED bitmap wasn't created. The west slice is scaled horizontally. It's width should be always the same as the ORIGINAL west slice's width.
So if we would like to draw a styled box correctly we should take original west slice's width. (of height of the north slice).
Quoted 8 lines
Quoted 5 lines
so the
height_norwidth_wis also NULL. We can count these values from raw (non- scaled) bitmaps. The values will be the same as before for common cases. And the bug will be fixed.
Quoted 4 lines
This looks more like a workaround for some other problem. Also while currently width (for W) or height (for N) does not change, it may be reimplemented in the future. In this case this patch will create hard to spot bug.
No, this is not a workaround for some other problem.
As I understand, it's the idea of the styled box - make corner slices be constant and others to be correspondingly scaled. And sizes of the bitmaps should be correct. (e.g. widths of W, NW, SW are the same)
If this conception is about to change then themes written before won't be corrcectly shown. I mean loosing of backward compatibility.
I don't see how the styled box concepts are going to change... Could you please give an example of the concept?
I still think this patch is needed and that it's correct.
Maybe it should be modified to correspond some ideas.
And maybe the styled box algorithms should be updated. :)
Thanks for the reply!
Signature · 4 lines
With best regards, _______________________________ Vladimir Testov, ROSA Laboratory. www.rosalab.ru