Clock: take into account borders and padding when computing size
This commit is contained in:
parent
64edd55add
commit
5da4c1653a
1 changed files with 18 additions and 11 deletions
|
@ -243,7 +243,7 @@ void clock_default_font_changed()
|
||||||
schedule_panel_redraw();
|
schedule_panel_redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void clock_compute_text_geometry(Panel *panel,
|
void clock_compute_text_geometry(Clock *clock,
|
||||||
int *time_height_ink,
|
int *time_height_ink,
|
||||||
int *time_height,
|
int *time_height,
|
||||||
int *time_width,
|
int *time_width,
|
||||||
|
@ -251,14 +251,24 @@ void clock_compute_text_geometry(Panel *panel,
|
||||||
int *date_height,
|
int *date_height,
|
||||||
int *date_width)
|
int *date_width)
|
||||||
{
|
{
|
||||||
|
Panel *panel = (Panel *)clock->area.panel;
|
||||||
|
int available_w, available_h;
|
||||||
|
if (panel_horizontal) {
|
||||||
|
available_w = panel->area.width;
|
||||||
|
available_h = clock->area.height - 2 * clock->area.paddingy - left_right_border_width(&clock->area);
|
||||||
|
} else {
|
||||||
|
available_w = clock->area.width - 2 * clock->area.paddingxlr - left_right_border_width(&clock->area);
|
||||||
|
available_h = panel->area.height;
|
||||||
|
}
|
||||||
|
|
||||||
*date_height = *date_width = 0;
|
*date_height = *date_width = 0;
|
||||||
strftime(buf_time, sizeof(buf_time), time1_format, clock_gettime_for_tz(time1_timezone));
|
strftime(buf_time, sizeof(buf_time), time1_format, clock_gettime_for_tz(time1_timezone));
|
||||||
get_text_size2(time1_font_desc,
|
get_text_size2(time1_font_desc,
|
||||||
time_height_ink,
|
time_height_ink,
|
||||||
time_height,
|
time_height,
|
||||||
time_width,
|
time_width,
|
||||||
panel->area.height,
|
available_h,
|
||||||
panel->area.width,
|
available_w,
|
||||||
buf_time,
|
buf_time,
|
||||||
strlen(buf_time),
|
strlen(buf_time),
|
||||||
PANGO_WRAP_WORD_CHAR,
|
PANGO_WRAP_WORD_CHAR,
|
||||||
|
@ -270,8 +280,8 @@ void clock_compute_text_geometry(Panel *panel,
|
||||||
date_height_ink,
|
date_height_ink,
|
||||||
date_height,
|
date_height,
|
||||||
date_width,
|
date_width,
|
||||||
panel->area.height,
|
available_h,
|
||||||
panel->area.width,
|
available_w,
|
||||||
buf_date,
|
buf_date,
|
||||||
strlen(buf_date),
|
strlen(buf_date),
|
||||||
PANGO_WRAP_WORD_CHAR,
|
PANGO_WRAP_WORD_CHAR,
|
||||||
|
@ -283,9 +293,8 @@ void clock_compute_text_geometry(Panel *panel,
|
||||||
int clock_compute_desired_size(void *obj)
|
int clock_compute_desired_size(void *obj)
|
||||||
{
|
{
|
||||||
Clock *clock = (Clock *)obj;
|
Clock *clock = (Clock *)obj;
|
||||||
Panel *panel = (Panel *)clock->area.panel;
|
|
||||||
int time_height_ink, time_height, time_width, date_height_ink, date_height, date_width;
|
int time_height_ink, time_height, time_width, date_height_ink, date_height, date_width;
|
||||||
clock_compute_text_geometry(panel,
|
clock_compute_text_geometry(clock,
|
||||||
&time_height_ink,
|
&time_height_ink,
|
||||||
&time_height,
|
&time_height,
|
||||||
&time_width,
|
&time_width,
|
||||||
|
@ -294,8 +303,7 @@ int clock_compute_desired_size(void *obj)
|
||||||
&date_width);
|
&date_width);
|
||||||
|
|
||||||
if (panel_horizontal) {
|
if (panel_horizontal) {
|
||||||
int new_size = (time_width > date_width) ? time_width : date_width;
|
int new_size = MAX(time_width, date_width) + 2 * clock->area.paddingxlr + left_right_border_width(&clock->area);
|
||||||
new_size += 2 * clock->area.paddingxlr + left_right_border_width(&clock->area);
|
|
||||||
return new_size;
|
return new_size;
|
||||||
} else {
|
} else {
|
||||||
int new_size = time_height + date_height + 2 * clock->area.paddingxlr + top_bottom_border_width(&clock->area);
|
int new_size = time_height + date_height + 2 * clock->area.paddingxlr + top_bottom_border_width(&clock->area);
|
||||||
|
@ -306,13 +314,12 @@ int clock_compute_desired_size(void *obj)
|
||||||
gboolean resize_clock(void *obj)
|
gboolean resize_clock(void *obj)
|
||||||
{
|
{
|
||||||
Clock *clock = (Clock *)obj;
|
Clock *clock = (Clock *)obj;
|
||||||
Panel *panel = (Panel *)clock->area.panel;
|
|
||||||
gboolean result = FALSE;
|
gboolean result = FALSE;
|
||||||
|
|
||||||
schedule_redraw(&clock->area);
|
schedule_redraw(&clock->area);
|
||||||
|
|
||||||
int time_height_ink, time_height, time_width, date_height_ink, date_height, date_width;
|
int time_height_ink, time_height, time_width, date_height_ink, date_height, date_width;
|
||||||
clock_compute_text_geometry(panel,
|
clock_compute_text_geometry(clock,
|
||||||
&time_height_ink,
|
&time_height_ink,
|
||||||
&time_height,
|
&time_height,
|
||||||
&time_width,
|
&time_width,
|
||||||
|
|
Loading…
Reference in a new issue