[gnome-shell/wip/fmuellner/calendar-refresh: 1/15] dateMenu: Enforce calendar column width
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/fmuellner/calendar-refresh: 1/15] dateMenu: Enforce calendar column width
- Date: Mon, 27 Feb 2017 21:38:45 +0000 (UTC)
commit 796fdca5c5277de7f33b2026ba7684bb19e20d48
Author: Florian Müllner <fmuellner gnome org>
Date: Fri Feb 24 14:56:47 2017 +0100
dateMenu: Enforce calendar column width
We want the width of the calendar column to be determined by the
calendar, other elements should adjust their allocation accordingly.
However neither ellipsization nor wrapping will kick in unless the
parent's width is restricted, so use a small custom layout manager
that enforces the desired behavior.
https://bugzilla.gnome.org/show_bug.cgi?id=754031
js/ui/dateMenu.js | 26 ++++++++++++++++++++++----
1 files changed, 22 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index eab55b4..47b22a4 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -36,7 +36,7 @@ const TodayButton = new Lang.Class({
// on the current date can be confusing. So don't make the button reactive
// until the selected date changes.
this.actor = new St.Button({ style_class: 'datemenu-today-button',
- x_align: St.Align.START,
+ x_expand: true, x_align: St.Align.START,
can_focus: true,
reactive: false
});
@@ -290,6 +290,22 @@ const FreezableBinLayout = new Lang.Class({
}
});
+const CalendarColumnLayout = new Lang.Class({
+ Name: 'CalendarColumnLayout',
+ Extends: Clutter.BoxLayout,
+
+ _init(actor) {
+ this.parent({ orientation: Clutter.Orientation.VERTICAL });
+ this._calActor = actor;
+ },
+
+ vfunc_get_preferred_width: function(container, forHeight) {
+ if (!this._calActor || this._calActor.get_parent() != container)
+ return this.parent(container, forHeight);
+ return this._calActor.get_preferred_width(forHeight);
+ }
+});
+
const DateMenuButton = new Lang.Class({
Name: 'DateMenuButton',
Extends: PanelMenu.Button,
@@ -346,14 +362,16 @@ const DateMenuButton = new Lang.Class({
hbox.add(this._messageList.actor, { expand: true, y_fill: false, y_align: St.Align.START });
// Fill up the second column
- vbox = new St.BoxLayout({ style_class: 'datemenu-calendar-column',
- vertical: true });
+ let boxLayout = new CalendarColumnLayout(this._calendar.actor);
+ vbox = new St.Widget({ style_class: 'datemenu-calendar-column',
+ layout_manager: boxLayout });
+ boxLayout.hookup_style(vbox);
hbox.add(vbox);
this._date = new TodayButton(this._calendar);
vbox.add_actor(this._date.actor);
- vbox.add(this._calendar.actor);
+ vbox.add_actor(this._calendar.actor);
this._displaysSection = new St.ScrollView({ style_class: 'datemenu-displays-section vfade',
x_expand: true, x_fill: true,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]