week-header: add support for expanded and collapsed mode
Add the expand button and the functions require to expand and collapse the header.
This commit is contained in:
committed by
Georges Basile Stavracas Neto
parent
d6ef05b31d
commit
7927d3b11f
+107
-83
@@ -51,7 +51,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkDrawingArea" id="draw_area">
|
<object class="GtkDrawingArea" id="draw_area">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="height-request">100</property>
|
<property name="height-request">125</property>
|
||||||
<signal name="draw" handler="gcal_week_header_draw" object="GcalWeekHeader" swapped="yes"/>
|
<signal name="draw" handler="gcal_week_header_draw" object="GcalWeekHeader" swapped="yes"/>
|
||||||
<style>
|
<style>
|
||||||
<class name="week-header" />
|
<class name="week-header" />
|
||||||
@@ -59,96 +59,120 @@
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child type="overlay">
|
<child type="overlay">
|
||||||
<object class="GtkScrolledWindow" id="scrolledwindow">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="max-content-height">150</property>
|
<property name="orientation">horizontal</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkViewport">
|
<object class="GtkButton" id="expand_button">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="shadow_type">none</property>
|
<property name="can_focus">True</property>
|
||||||
|
<property name="valign">GTK_ALIGN_END</property>
|
||||||
|
<signal name="clicked" handler="on_expand_action_activated" object="GcalWeekHeader" swapped="yes"/>
|
||||||
|
<style>
|
||||||
|
<class name="flat" />
|
||||||
|
<class name="circular" />
|
||||||
|
</style>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkGrid" id="grid">
|
<object class="GtkImage" id="expand_button_image">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="column-homogeneous">True</property>
|
<property name="icon_name">go-down-symbolic</property>
|
||||||
<property name="hexpand">True</property>
|
</object>
|
||||||
<property name="column-spacing">8</property>
|
</child>
|
||||||
<property name="row-spacing">2</property>
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScrolledWindow" id="scrolledwindow">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="max-content-height">150</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkViewport">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="shadow_type">none</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkGrid" id="grid">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="column-homogeneous">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="column-spacing">8</property>
|
||||||
|
<property name="row-spacing">2</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">0</property>
|
||||||
|
<property name="top_attach">0</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">1</property>
|
||||||
|
<property name="top_attach">0</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">2</property>
|
||||||
|
<property name="top_attach">0</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">3</property>
|
||||||
|
<property name="top_attach">0</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">4</property>
|
||||||
|
<property name="top_attach">0</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">5</property>
|
||||||
|
<property name="top_attach">0</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">6</property>
|
||||||
|
<property name="top_attach">0</property>
|
||||||
|
<property name="width">1</property>
|
||||||
|
<property name="height">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
|
||||||
<property name="left_attach">0</property>
|
|
||||||
<property name="top_attach">0</property>
|
|
||||||
<property name="width">1</property>
|
|
||||||
<property name="height">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">1</property>
|
|
||||||
<property name="top_attach">0</property>
|
|
||||||
<property name="width">1</property>
|
|
||||||
<property name="height">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">2</property>
|
|
||||||
<property name="top_attach">0</property>
|
|
||||||
<property name="width">1</property>
|
|
||||||
<property name="height">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">3</property>
|
|
||||||
<property name="top_attach">0</property>
|
|
||||||
<property name="width">1</property>
|
|
||||||
<property name="height">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">4</property>
|
|
||||||
<property name="top_attach">0</property>
|
|
||||||
<property name="width">1</property>
|
|
||||||
<property name="height">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">5</property>
|
|
||||||
<property name="top_attach">0</property>
|
|
||||||
<property name="width">1</property>
|
|
||||||
<property name="height">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">6</property>
|
|
||||||
<property name="top_attach">0</property>
|
|
||||||
<property name="width">1</property>
|
|
||||||
<property name="height">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
#include "gcal-week-header.h"
|
#include "gcal-week-header.h"
|
||||||
#include "gcal-week-view.h"
|
#include "gcal-week-view.h"
|
||||||
@@ -39,6 +40,8 @@ struct _GcalWeekHeader
|
|||||||
GtkWidget *week_label;
|
GtkWidget *week_label;
|
||||||
GtkWidget *year_label;
|
GtkWidget *year_label;
|
||||||
GtkWidget *scrolledwindow;
|
GtkWidget *scrolledwindow;
|
||||||
|
GtkWidget *expand_button;
|
||||||
|
GtkWidget *expand_button_image;
|
||||||
|
|
||||||
GcalManager *manager;
|
GcalManager *manager;
|
||||||
|
|
||||||
@@ -51,6 +54,12 @@ struct _GcalWeekHeader
|
|||||||
|
|
||||||
gint first_weekday;
|
gint first_weekday;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Used for checking if the header is in collapsed state or expand state
|
||||||
|
* false is collapse state true is expand state
|
||||||
|
*/
|
||||||
|
gboolean expanded;
|
||||||
|
|
||||||
gboolean use_24h_format;
|
gboolean use_24h_format;
|
||||||
|
|
||||||
icaltimetype *active_date;
|
icaltimetype *active_date;
|
||||||
@@ -68,6 +77,13 @@ static void place_events (GcalWeekHeader *sel
|
|||||||
|
|
||||||
static void clear_current_events (GcalWeekHeader *self);
|
static void clear_current_events (GcalWeekHeader *self);
|
||||||
|
|
||||||
|
static void header_collapse (GcalWeekHeader *self);
|
||||||
|
|
||||||
|
static void header_expand (GcalWeekHeader *self);
|
||||||
|
|
||||||
|
static void on_expand_action_activated (GcalWeekHeader *self,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
static void gcal_week_header_finalize (GObject *object);
|
static void gcal_week_header_finalize (GObject *object);
|
||||||
|
|
||||||
static void gcal_week_header_get_property (GObject *object,
|
static void gcal_week_header_get_property (GObject *object,
|
||||||
@@ -189,14 +205,20 @@ static void
|
|||||||
place_events (GcalWeekHeader *self)
|
place_events (GcalWeekHeader *self)
|
||||||
{
|
{
|
||||||
GList *l, *iter;
|
GList *l, *iter;
|
||||||
GDateTime *week_start;
|
GDateTime *week_start, *week_end;
|
||||||
|
gint i;
|
||||||
|
gint hidden_events[7];
|
||||||
|
|
||||||
if (!self->active_date)
|
if (!self->active_date)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
week_start = get_start_of_week (self);
|
week_start = get_start_of_week (self);
|
||||||
|
week_end = g_date_time_add_days (week_start, 6);
|
||||||
iter = g_list_copy (self->events);
|
iter = g_list_copy (self->events);
|
||||||
|
|
||||||
|
for (i = 0; i < 7; i++)
|
||||||
|
hidden_events[i] = 0;
|
||||||
|
|
||||||
iter = g_list_sort (iter, (GCompareFunc) events_compare_func);
|
iter = g_list_sort (iter, (GCompareFunc) events_compare_func);
|
||||||
|
|
||||||
for (l = iter; l != NULL; l = l->next)
|
for (l = iter; l != NULL; l = l->next)
|
||||||
@@ -204,10 +226,12 @@ place_events (GcalWeekHeader *self)
|
|||||||
GcalEvent *event;
|
GcalEvent *event;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
GDateTime *event_start, *event_end;
|
GDateTime *event_start, *event_end;
|
||||||
gint start, end, i;
|
gint start, end;
|
||||||
|
gboolean placed;
|
||||||
|
|
||||||
start = -1;
|
start = -1;
|
||||||
end = -1;
|
end = -1;
|
||||||
|
placed = FALSE;
|
||||||
event = GCAL_EVENT (l->data);
|
event = GCAL_EVENT (l->data);
|
||||||
widget = gcal_event_widget_new (event);
|
widget = gcal_event_widget_new (event);
|
||||||
event_start = gcal_event_get_date_start (event);
|
event_start = gcal_event_get_date_start (event);
|
||||||
@@ -245,6 +269,9 @@ place_events (GcalWeekHeader *self)
|
|||||||
gint j;
|
gint j;
|
||||||
gboolean present;
|
gboolean present;
|
||||||
|
|
||||||
|
if (!(self->expanded) && i >=4)
|
||||||
|
break;
|
||||||
|
|
||||||
present = FALSE;
|
present = FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -256,12 +283,45 @@ place_events (GcalWeekHeader *self)
|
|||||||
|
|
||||||
if (!present)
|
if (!present)
|
||||||
{
|
{
|
||||||
|
gcal_event_widget_set_date_start (GCAL_EVENT_WIDGET (widget),
|
||||||
|
MAX (week_start, event_start));
|
||||||
|
gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (widget),
|
||||||
|
MIN(week_end, event_end));
|
||||||
|
|
||||||
gtk_grid_attach (GTK_GRID (self->grid), widget, start, i, end - start + 1, 1);
|
gtk_grid_attach (GTK_GRID (self->grid), widget, start, i, end - start + 1, 1);
|
||||||
|
placed = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!placed)
|
||||||
|
{
|
||||||
|
for (i = start; i <= end; i++)
|
||||||
|
hidden_events[i]++;
|
||||||
|
|
||||||
|
self->events = g_list_append (self->events, event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(self->expanded))
|
||||||
|
{
|
||||||
|
gtk_grid_remove_row (GTK_GRID (self->grid), 4);
|
||||||
|
|
||||||
|
for (i = 0; i < 7; i++)
|
||||||
|
{
|
||||||
|
if (hidden_events[i])
|
||||||
|
{
|
||||||
|
GtkWidget *widget;
|
||||||
|
|
||||||
|
widget = gtk_label_new (g_strdup_printf (g_dngettext (GETTEXT_PACKAGE, "Other event", "Other %d events", hidden_events[i]),
|
||||||
|
hidden_events[i]));
|
||||||
|
|
||||||
|
gtk_widget_set_visible (widget, TRUE);
|
||||||
|
gtk_grid_attach (GTK_GRID (self->grid), widget, i, 4, 1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
g_list_free (iter);
|
g_list_free (iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,6 +347,106 @@ clear_current_events (GcalWeekHeader *self)
|
|||||||
g_list_free (children);
|
g_list_free (children);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
header_collapse (GcalWeekHeader *self)
|
||||||
|
{
|
||||||
|
gint hidden_events[7], row, i;
|
||||||
|
|
||||||
|
self->expanded = FALSE;
|
||||||
|
|
||||||
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (self->scrolledwindow),
|
||||||
|
GTK_POLICY_NEVER,
|
||||||
|
GTK_POLICY_NEVER);
|
||||||
|
gtk_scrolled_window_set_max_content_height (GTK_SCROLLED_WINDOW (self->scrolledwindow), -1);
|
||||||
|
gtk_image_set_from_icon_name (GTK_IMAGE (self->expand_button_image), "go-down-symbolic", 4);
|
||||||
|
|
||||||
|
for (i = 0; i < 7; i++)
|
||||||
|
hidden_events[i] = 0;
|
||||||
|
|
||||||
|
/* Gets count of number of extra events in each column */
|
||||||
|
for (row = 4; ; row++)
|
||||||
|
{
|
||||||
|
gboolean empty;
|
||||||
|
|
||||||
|
empty = TRUE;
|
||||||
|
|
||||||
|
for (i = 0; i < 7; i++)
|
||||||
|
{
|
||||||
|
if (gtk_grid_get_child_at (GTK_GRID (self->grid), i, row))
|
||||||
|
{
|
||||||
|
hidden_events[i]++;
|
||||||
|
empty = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Removes the excess events and adds them to the object list of events */
|
||||||
|
for ( ; row >= 4; row--)
|
||||||
|
{
|
||||||
|
for (i = 0; i < 7; i++)
|
||||||
|
{
|
||||||
|
if (gtk_grid_get_child_at (GTK_GRID (self->grid), i, row))
|
||||||
|
{
|
||||||
|
GcalEventWidget *widget;
|
||||||
|
|
||||||
|
widget = GCAL_EVENT_WIDGET (gtk_grid_get_child_at (GTK_GRID (self->grid), i, row));
|
||||||
|
|
||||||
|
self->events = g_list_append (self->events, gcal_event_widget_get_event (widget));
|
||||||
|
|
||||||
|
gtk_widget_destroy (GTK_WIDGET (widget));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Adds labels in the last row */
|
||||||
|
for (i = 0; i < 7; i++)
|
||||||
|
{
|
||||||
|
if (hidden_events[i])
|
||||||
|
{
|
||||||
|
GtkWidget *widget;
|
||||||
|
|
||||||
|
widget = gtk_label_new (g_strdup_printf (g_dngettext (GETTEXT_PACKAGE, "Other event", "Other %d events", hidden_events[i]),
|
||||||
|
hidden_events[i]));
|
||||||
|
|
||||||
|
gtk_widget_set_visible (widget, TRUE);
|
||||||
|
gtk_grid_attach (GTK_GRID (self->grid), widget, i, 4, 1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
header_expand (GcalWeekHeader *self)
|
||||||
|
{
|
||||||
|
GtkWidget *week_view;
|
||||||
|
|
||||||
|
week_view = gtk_widget_get_ancestor (GTK_WIDGET (self), GCAL_TYPE_WEEK_VIEW);
|
||||||
|
|
||||||
|
self->expanded = TRUE;
|
||||||
|
|
||||||
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (self->scrolledwindow),
|
||||||
|
GTK_POLICY_NEVER,
|
||||||
|
GTK_POLICY_AUTOMATIC);
|
||||||
|
gtk_scrolled_window_set_max_content_height (GTK_SCROLLED_WINDOW (self->scrolledwindow),
|
||||||
|
gtk_widget_get_allocated_height (week_view)/2);
|
||||||
|
gtk_image_set_from_icon_name (GTK_IMAGE (self->expand_button_image), "go-up-symbolic", 4);
|
||||||
|
|
||||||
|
gtk_grid_remove_row (GTK_GRID (self->grid), 4);
|
||||||
|
place_events (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_expand_action_activated (GcalWeekHeader *self,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
if (self->expanded)
|
||||||
|
header_collapse (self);
|
||||||
|
else
|
||||||
|
header_expand (self);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gcal_week_header_finalize (GObject *object)
|
gcal_week_header_finalize (GObject *object)
|
||||||
{
|
{
|
||||||
@@ -307,7 +467,7 @@ void
|
|||||||
gcal_week_header_remove_event (GcalWeekHeader *self,
|
gcal_week_header_remove_event (GcalWeekHeader *self,
|
||||||
gchar *uuid)
|
gchar *uuid)
|
||||||
{
|
{
|
||||||
GList *children, *l;
|
GList *children, *l, *iter;
|
||||||
|
|
||||||
children = gtk_container_get_children (GTK_CONTAINER (self->grid));
|
children = gtk_container_get_children (GTK_CONTAINER (self->grid));
|
||||||
|
|
||||||
@@ -326,7 +486,19 @@ gcal_week_header_remove_event (GcalWeekHeader *self,
|
|||||||
gtk_widget_destroy (GTK_WIDGET (l->data));
|
gtk_widget_destroy (GTK_WIDGET (l->data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iter = g_list_copy (self->events);
|
||||||
|
|
||||||
|
for (l = iter; l != NULL; l = g_list_next (l))
|
||||||
|
{
|
||||||
|
if (!GCAL_IS_EVENT (l->data))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (l->data != NULL && g_strcmp0 (uuid, gcal_event_get_uid (l->data)) == 0)
|
||||||
|
self->events = g_list_remove_all (self->events, l->data);
|
||||||
|
}
|
||||||
|
|
||||||
g_list_free (children);
|
g_list_free (children);
|
||||||
|
g_list_free (iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -384,13 +556,14 @@ gcal_week_header_size_allocate (GtkWidget *widget,
|
|||||||
GtkStateFlags state;
|
GtkStateFlags state;
|
||||||
GtkAllocation draw_alloc;
|
GtkAllocation draw_alloc;
|
||||||
|
|
||||||
gdouble sidebar_width, cell_width;
|
gdouble sidebar_width, cell_width, button_width;
|
||||||
|
|
||||||
PangoFontDescription *bold_font;
|
PangoFontDescription *bold_font;
|
||||||
|
|
||||||
context = gtk_widget_get_style_context (self->draw_area);
|
context = gtk_widget_get_style_context (self->draw_area);
|
||||||
state = gtk_widget_get_state_flags (self->draw_area);
|
state = gtk_widget_get_state_flags (self->draw_area);
|
||||||
sidebar_width = gcal_week_view_get_sidebar_width (self->draw_area);
|
sidebar_width = gcal_week_view_get_sidebar_width (self->draw_area);
|
||||||
|
button_width = gtk_widget_get_allocated_width (self->expand_button);
|
||||||
|
|
||||||
gtk_widget_get_allocation (self->draw_area, &draw_alloc);
|
gtk_widget_get_allocation (self->draw_area, &draw_alloc);
|
||||||
|
|
||||||
@@ -400,7 +573,7 @@ gcal_week_header_size_allocate (GtkWidget *widget,
|
|||||||
pango_font_description_set_weight (bold_font, PANGO_WEIGHT_SEMIBOLD);
|
pango_font_description_set_weight (bold_font, PANGO_WEIGHT_SEMIBOLD);
|
||||||
|
|
||||||
gtk_widget_set_margin_start (self->scrolledwindow,
|
gtk_widget_set_margin_start (self->scrolledwindow,
|
||||||
gcal_week_view_get_sidebar_width (self->draw_area) + 1);
|
gcal_week_view_get_sidebar_width (self->draw_area) + 1 - button_width);
|
||||||
|
|
||||||
gtk_widget_set_margin_end (self->scrolledwindow,
|
gtk_widget_set_margin_end (self->scrolledwindow,
|
||||||
gtk_widget_get_allocated_width (self->draw_area) - cell_width * 7 - sidebar_width + 7);
|
gtk_widget_get_allocated_width (self->draw_area) - cell_width * 7 - sidebar_width + 7);
|
||||||
@@ -595,8 +768,11 @@ gcal_week_header_class_init (GcalWeekHeaderClass *kclass)
|
|||||||
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, week_label);
|
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, week_label);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, draw_area);
|
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, draw_area);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, scrolledwindow);
|
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, scrolledwindow);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, expand_button);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, expand_button_image);
|
||||||
|
|
||||||
gtk_widget_class_bind_template_callback (widget_class, gcal_week_header_draw);
|
gtk_widget_class_bind_template_callback (widget_class, gcal_week_header_draw);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, on_expand_action_activated);
|
||||||
|
|
||||||
gtk_widget_class_set_css_name (widget_class, "calendar-view");
|
gtk_widget_class_set_css_name (widget_class, "calendar-view");
|
||||||
}
|
}
|
||||||
@@ -604,6 +780,8 @@ gcal_week_header_class_init (GcalWeekHeaderClass *kclass)
|
|||||||
static void
|
static void
|
||||||
gcal_week_header_init (GcalWeekHeader *self)
|
gcal_week_header_init (GcalWeekHeader *self)
|
||||||
{
|
{
|
||||||
|
self->expanded = FALSE;
|
||||||
|
|
||||||
gtk_widget_init_template (GTK_WIDGET (self));
|
gtk_widget_init_template (GTK_WIDGET (self));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user