Take advantage of trayicon transparency in gtk+ 2.16
Fall back to the old behavior with older gtk. http://bugzilla.gnome.org/show_bug.cgi?id=582484
This commit is contained in:
parent
278a44caf1
commit
3ed0c2dc1c
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
const Big = imports.gi.Big;
|
const Big = imports.gi.Big;
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
const Meta = imports.gi.Meta;
|
const Meta = imports.gi.Meta;
|
||||||
@ -33,14 +34,17 @@ PANEL_BUTTON_COLOR.from_pixel(0x00000015);
|
|||||||
const PRESSED_BUTTON_BACKGROUND_COLOR = new Clutter.Color();
|
const PRESSED_BUTTON_BACKGROUND_COLOR = new Clutter.Color();
|
||||||
PRESSED_BUTTON_BACKGROUND_COLOR.from_pixel(0x00000030);
|
PRESSED_BUTTON_BACKGROUND_COLOR.from_pixel(0x00000030);
|
||||||
|
|
||||||
|
const TRAY_PADDING = 2;
|
||||||
|
const TRAY_SPACING = 2;
|
||||||
|
|
||||||
|
// Used for the tray icon container with gtk pre-2.16, which doesn't
|
||||||
|
// fully support tray icon transparency
|
||||||
const TRAY_BACKGROUND_COLOR = new Clutter.Color();
|
const TRAY_BACKGROUND_COLOR = new Clutter.Color();
|
||||||
TRAY_BACKGROUND_COLOR.from_pixel(0xefefefff);
|
TRAY_BACKGROUND_COLOR.from_pixel(0xefefefff);
|
||||||
const TRAY_BORDER_COLOR = new Clutter.Color();
|
const TRAY_BORDER_COLOR = new Clutter.Color();
|
||||||
TRAY_BORDER_COLOR.from_pixel(0x00000033);
|
TRAY_BORDER_COLOR.from_pixel(0x00000033);
|
||||||
const TRAY_CORNER_RADIUS = 5;
|
const TRAY_CORNER_RADIUS = 5;
|
||||||
const TRAY_BORDER_WIDTH = 1;
|
const TRAY_BORDER_WIDTH = 1;
|
||||||
const TRAY_PADDING = 2;
|
|
||||||
const TRAY_SPACING = 2;
|
|
||||||
|
|
||||||
function Panel() {
|
function Panel() {
|
||||||
this._init();
|
this._init();
|
||||||
@ -112,19 +116,25 @@ Panel.prototype = {
|
|||||||
box.append(clockbox, Big.BoxPackFlags.END);
|
box.append(clockbox, Big.BoxPackFlags.END);
|
||||||
|
|
||||||
// The tray icons live in trayBox within trayContainer.
|
// The tray icons live in trayBox within trayContainer.
|
||||||
// With Gtk 2.16, we can also use a transparent background for this.
|
|
||||||
// The trayBox is hidden when there are no tray icons.
|
// The trayBox is hidden when there are no tray icons.
|
||||||
let trayContainer = new Big.Box({ orientation: Big.BoxOrientation.VERTICAL,
|
let trayContainer = new Big.Box({ orientation: Big.BoxOrientation.VERTICAL,
|
||||||
y_align: Big.BoxAlignment.CENTER });
|
y_align: Big.BoxAlignment.CENTER });
|
||||||
box.append(trayContainer, Big.BoxPackFlags.END);
|
box.append(trayContainer, Big.BoxPackFlags.END);
|
||||||
let trayBox = new Big.Box({ orientation: Big.BoxOrientation.HORIZONTAL,
|
let trayBox = new Big.Box({ orientation: Big.BoxOrientation.HORIZONTAL,
|
||||||
height: TRAY_HEIGHT,
|
height: TRAY_HEIGHT,
|
||||||
background_color: TRAY_BACKGROUND_COLOR,
|
|
||||||
corner_radius: TRAY_CORNER_RADIUS,
|
|
||||||
border: TRAY_BORDER_WIDTH,
|
|
||||||
border_color: TRAY_BORDER_COLOR,
|
|
||||||
padding: TRAY_PADDING,
|
padding: TRAY_PADDING,
|
||||||
spacing: TRAY_SPACING });
|
spacing: TRAY_SPACING });
|
||||||
|
|
||||||
|
// gtk+ < 2.16 doesn't have fully-working icon transparency,
|
||||||
|
// so we want trayBox to be opaque in that case (the icons
|
||||||
|
// will at least pick up its background color).
|
||||||
|
if (Gtk.MAJOR_VERSION == 2 && Gtk.MINOR_VERSION < 16) {
|
||||||
|
trayBox.background_color = TRAY_BACKGROUND_COLOR;
|
||||||
|
trayBox.corner_radius = TRAY_CORNER_RADIUS;
|
||||||
|
trayBox.border = TRAY_BORDER_WIDTH;
|
||||||
|
trayBox.border_color = TRAY_BORDER_COLOR;
|
||||||
|
}
|
||||||
|
|
||||||
trayBox.hide();
|
trayBox.hide();
|
||||||
trayContainer.append(trayBox, Big.BoxPackFlags.NONE);
|
trayContainer.append(trayBox, Big.BoxPackFlags.NONE);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user