[PATCH weston GSoC v2] desktop-shell: make panel clock configurable

Armin Krezović armin.krezovic at fet.ba
Tue Mar 8 19:44:02 UTC 2016

On 08.03.2016 11:01, Pekka Paalanen wrote:
> On Mon, 7 Mar 2016 15:42:45 +0100
> Armin Krezović <armin.krezovic at fet.ba> wrote:
>> On 07.03.2016 13:37, Pekka Paalanen wrote:
>>> On Thu, 3 Mar 2016 11:39:13 -0800
>>> Bryce Harrington <bryce at osg.samsung.com> wrote:
>>>> On Thu, Mar 03, 2016 at 03:48:03PM +0100, Armin Krezović wrote:  
>>>>> This patch enhances the panel clock by adding a config file
>>>>> option which can be used to either disable the clock or make
>>>>> it also show seconds in the current clock format.
>>>>> v2: Implement suggestions from Pekka's review.
>>>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57583
>>>>> Signed-off-by: Armin Krezović <armin.krezovic at fet.ba>    
>>>> I might name the enum elements CLOCK_FORMAT_* but as long as it's kept
>>>> local to the desktop-shell.c client it probably doesn't matter.
>>>> Reviewed-by: Bryce Harrington <bryce at osg.samsung.com>
>>>> (I just glossed over the adjustments to the cairo position mathematics.
>>>> I assume it'll be pretty obvious visually if there's an error with
>>>> that.)  
>>> Hi Armin,
>>> there is some funny logic that I'd like to see fixed, details inline.
>>>>> @@ -368,12 +373,21 @@ panel_clock_redraw_handler(struct widget *widget, void *data)
>>>>>  			       CAIRO_FONT_WEIGHT_NORMAL);
>>>>>  	cairo_set_font_size(cr, 14);
>>>>>  	cairo_text_extents(cr, string, &extents);
>>>>> -	cairo_font_extents (cr, &font_extents);
>>>>> -	cairo_move_to(cr, allocation.x + 5,
>>>>> +	cairo_font_extents(cr, &font_extents);
>>>>> +
>>>>> +	if (!clock->size_set) {
>>>>> +		allocation.x = allocation.x + allocation.width - extents.width;
>>>>> +		allocation.width = extents.width + 1;
>>>>> +		widget_set_allocation(widget, allocation.x, allocation.y,
>>>>> +				      allocation.width, allocation.height);  
>>> The call to widget_set_allocation() belongs in the resize function, not
>>> here in the redraw function. Did you have problems putting it there?
>> When we had a conversation on IRC about this one, you said that the
>> proper way to fix this is to get the length from text extents, which
>> I did.
> Hi Armin
> Yeah, sorry, I tend to talk about things unrelated to the immediate
> topic in question, to give a more broader view and background, and then
> just leave it to the listener to figure out what's actually in scope
> for the immediate task. :-)
> Using extents of the longest possible time string for a format would be
> the proper way to allocate the widget size, but the topic here is just
> about adding new formats rather than fixing everything.
>> I didn't find a way to get access to text extents from within panel
>> resize function, which is ran before cairo_text_extents is in this
>> function.
> Getting the extents in the resize function is indeed the key to the
> proper sizing solution, which also makes it a little harder to do.
> That's what my last comment in the bugzilla about extents refers to.
> It's also a thing one might not bother to do without a reason, like a
> configurable font or some user setup where the constants are wrong - or
> another GSoC applicant wanting to prove his skills.
> Thanks,
> pq


I've modified the patch to use fixed width for the clock widget.
190 for clock format with seconds, 170 (same as current) for the
one without seconds. But in doing so, I had to somehow forward
the clock format value to the panel resize handler, which is why
new panel structure member was introduced.

Thanks for all the feedback so far.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20160308/822813a9/attachment.sig>

More information about the wayland-devel mailing list