[gnome-maps/wip/jonasdn/service-gnome-3-14: 2/4] Use GtkClutter for attribution logo
- From: Jonas Danielsson <jonasdn src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps/wip/jonasdn/service-gnome-3-14: 2/4] Use GtkClutter for attribution logo
- Date: Sat, 20 Aug 2016 18:50:00 +0000 (UTC)
commit fa4a62f4f2eab8a13b4040f737355524001d4c4f
Author: Jonas Danielsson <jonas threetimestwo org>
Date: Wed Aug 17 12:57:05 2016 +0200
Use GtkClutter for attribution logo
https://bugzilla.gnome.org/show_bug.cgi?id=769352
src/mainWindow.js | 3 ---
src/mapSource.js | 48 +++++++++++++++++++++++++++++++++++-------------
src/mapView.js | 5 +++++
3 files changed, 40 insertions(+), 16 deletions(-)
---
diff --git a/src/mainWindow.js b/src/mainWindow.js
index 4e0f67b..4863ab9 100644
--- a/src/mainWindow.js
+++ b/src/mainWindow.js
@@ -31,7 +31,6 @@ const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Application = imports.application;
-const MapSource = imports.mapSource;
const MapView = imports.mapView;
const LayersPopover = imports.layersPopover;
const ContextMenu = imports.contextMenu;
@@ -64,8 +63,6 @@ const MainWindow = new Lang.Class({
this.mapView = new MapView.MapView();
overlay.add(this.mapView);
- overlay.add_overlay(new MapSource.AttributionLogo());
-
this.mapView.gotoUserLocation(false);
this._sidebar = new Sidebar.Sidebar(this.mapView);
diff --git a/src/mapSource.js b/src/mapSource.js
index 3d5c4a2..b15585d 100644
--- a/src/mapSource.js
+++ b/src/mapSource.js
@@ -22,6 +22,7 @@ const GdkPixbuf = imports.gi.GdkPixbuf;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
+const GtkClutter = imports.gi.GtkClutter;
const Lang = imports.lang;
const Soup = imports.gi.Soup;
@@ -38,28 +39,49 @@ const _DEFAULT_SERVICE_FILE = 'maps-service.json';
const _FILE_CACHE_SIZE_LIMIT = (10 * 1024 * 1024); /* 10Mb */
const _MEMORY_CACHE_SIZE_LIMIT = 100; /* number of tiles */
+const _LOGO_PADDING_X = 10;
+const _LOGO_PADDING_Y = 25;
+
const AttributionLogo = new Lang.Class({
Name: 'AttributionLogo',
- Extends: Gtk.Bin,
-
- _init: function() {
- this.parent({ halign: Gtk.Align.END,
- valign: Gtk.Align.END,
- margin_bottom: 6,
- margin_end: 6 });
- this.add(_attributionImage);
+ Extends: GtkClutter.Actor,
+
+ _init: function(view) {
+ this.parent();
+
+ if (_attributionImage)
+ this.contents = _attributionImage;
+ else
+ return;
+
+ view.connect('notify::width', (function() {
+ this._updatePosition(view);
+ }).bind(this));
+
+ view.connect('notify::height', (function() {
+ this._updatePosition(view);
+ }).bind(this));
+
+ this._updatePosition(view);
+ },
+
+ _updatePosition: function(view) {
+ let width = _attributionImage.pixbuf.width;
+ let height = _attributionImage.pixbuf.height;
+
+ this.set_position(view.width - width - _LOGO_PADDING_X,
+ view.height - height - _LOGO_PADDING_Y);
+
}
});
function _updateAttributionImage(source) {
+ if (!source.attribution_logo || source.attribution_logo === "")
+ return;
+
if (!_attributionImage)
_attributionImage = new Gtk.Image();
- if (!source.attribution_logo || source.attribution_logo === "") {
- _attributionImage.visible = false;
- return;
- }
-
let data = GLib.base64_decode(source.attribution_logo);
let stream = Gio.MemoryInputStream.new_from_bytes(GLib.Bytes.new(data));
_attributionImage.pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null);
diff --git a/src/mapView.js b/src/mapView.js
index cd9aa30..803185c 100644
--- a/src/mapView.js
+++ b/src/mapView.js
@@ -152,6 +152,11 @@ const MapView = new Lang.Class({
this.view.map_source = MapSource.createAerialSource();
else
this.view.map_source = MapSource.createStreetSource();
+
+ if (!this._attribution) {
+ this._attribution = new MapSource.AttributionLogo(this.view);
+ this.view.add_child(this._attribution);
+ }
},
gotoUserLocation: function(animate) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]