diff --git a/GooCalendar/Calendar.py b/GooCalendar/Calendar.py index 18493a689f416e4abeb8a50c7817d8ccb1878e18_R29vQ2FsZW5kYXIvQ2FsZW5kYXIucHk=..8eb98e034c2e1d74d5d38e637bde0d0f9243abd9_R29vQ2FsZW5kYXIvQ2FsZW5kYXIucHk= 100644 --- a/GooCalendar/Calendar.py +++ b/GooCalendar/Calendar.py @@ -206,6 +206,10 @@ day_width_max = (w - timeline_w) / 7 day_width = max(day_width_min, day_width_max) day_height = h + width, height = self.get_size_request() + new_width = int(timeline_w + 7 * day_width) + if (width != new_width and day_width_min >= day_width_max): + self.set_size_request(new_width, height) # Minimum widget size # Redraw all days. weeks = util.my_monthdatescalendar(self.cal, *self.selected_date) @@ -326,6 +330,12 @@ self.selected_day = box y_pos += day_height + + width = self.get_size_request() + new_width = int(7 * day_width) + new_height = int(14 * box.line_height) + if (width != new_width and day_width == day_width_min): + self.set_size_request(new_width, new_height) def _get_day_item(self, find_date): weeks = util.my_monthdatescalendar(self.cal, *find_date.timetuple()) @@ -488,6 +498,12 @@ self.timeline.bg_color = border_color self.timeline.text_color = text_color self.timeline.update() + width, height = self.get_size_request() + min_line_height = self.timeline.min_line_height + line_height = self.timeline.line_height + new_height = int(max_y + 24 * min_line_height) + if (height != new_height): + self.set_size_request(width, new_height) # Draw non-all-day events. for date in dates: @@ -533,7 +549,7 @@ self.on_event_item_button_press_event) self.event_items.append(event_item) self.get_root_item().add_child(event_item) - minute_height = self.timeline.line_height / 60 + minute_height = line_height / 60.0 y_off1 = top_offset_mins * minute_height y_off2 = bottom_offset_mins * minute_height column_width = day.width / parallel diff --git a/GooCalendar/TimelineItem.py b/GooCalendar/TimelineItem.py index 18493a689f416e4abeb8a50c7817d8ccb1878e18_R29vQ2FsZW5kYXIvVGltZWxpbmVJdGVtLnB5..8eb98e034c2e1d74d5d38e637bde0d0f9243abd9_R29vQ2FsZW5kYXIvVGltZWxpbmVJdGVtLnB5 100644 --- a/GooCalendar/TimelineItem.py +++ b/GooCalendar/TimelineItem.py @@ -51,8 +51,8 @@ return self._width @property - def line_height(self): + def min_line_height(self): style = self.cal.get_style() font_descr = style.font_desc.copy() pango_size = font_descr.get_size() logical_height = 0 @@ -55,10 +55,10 @@ style = self.cal.get_style() font_descr = style.font_desc.copy() pango_size = font_descr.get_size() logical_height = 0 - ink_padding_top = 0 + self.ink_padding_top = 0 for n in range(24): natural_extents = self.timeline_text[n].get_natural_extents() logical_rect = natural_extents[1] logical_height = max(logical_height, logical_rect[3]) ink_rect = natural_extents[0] @@ -60,7 +60,7 @@ for n in range(24): natural_extents = self.timeline_text[n].get_natural_extents() logical_rect = natural_extents[1] logical_height = max(logical_height, logical_rect[3]) ink_rect = natural_extents[0] - ink_padding_top = max(ink_padding_top, ink_rect[0]) + self.ink_padding_top = max(self.ink_padding_top, ink_rect[0]) line_height = int(math.ceil(float(logical_height) / pango.SCALE)) @@ -66,2 +66,3 @@ line_height = int(math.ceil(float(logical_height) / pango.SCALE)) + return line_height @@ -67,3 +68,4 @@ - # If we have more vertical space, use it and center the text + @property + def line_height(self): self.padding_top = 0 @@ -69,5 +71,6 @@ self.padding_top = 0 + line_height = self.min_line_height if line_height < self.height / 24: line_height = self.height / 24 pango_size = self.cal.get_style().font_desc.get_size() padding_top = (line_height - pango_size / pango.SCALE) / 2 @@ -70,8 +73,9 @@ if line_height < self.height / 24: line_height = self.height / 24 pango_size = self.cal.get_style().font_desc.get_size() padding_top = (line_height - pango_size / pango.SCALE) / 2 - padding_top -= int(math.ceil(float(ink_padding_top) / pango.SCALE)) + padding_top -= int(math.ceil(float(self.ink_padding_top) / + pango.SCALE)) self.padding_top = padding_top return line_height