MaxSem has uploaded a new change for review.
https://gerrit.wikimedia.org/r/298038
Change subject: Fix broken full screen mode on Safari
......................................................................
Fix broken full screen mode on Safari
Bug: T138079
Change-Id: I9ff2d75d4d6b482659f16c8b5ef45d99dae47093
(cherry picked from commit 96b5aaaedb8ea8bd6fcc1b23140cc0786440b704)
---
M modules/fullscreen/MapDialog.js
M modules/kartographer.js
M modules/live/MWMap.js
3 files changed, 28 insertions(+), 17 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Kartographer
refs/changes/38/298038/1
diff --git a/modules/fullscreen/MapDialog.js b/modules/fullscreen/MapDialog.js
index a4b66a9..df6ac80 100644
--- a/modules/fullscreen/MapDialog.js
+++ b/modules/fullscreen/MapDialog.js
@@ -149,24 +149,21 @@
extendedData = {};
self.map = map;
- self.map.addControl( new CloseControl(
{ dialog: self } ) );
-
- // copy of the initial settings
self.mapData = mapData;
+
+ map.addControl( new CloseControl( {
dialog: self } ) );
if ( fullScreenState ) {
// override with full screen
state
$.extend( extendedData,
mapData, fullScreenState );
- self.map.setView( new L.LatLng(
extendedData.latitude, extendedData.longitude ), extendedData.zoom, true );
+ map.setView( new L.LatLng(
extendedData.latitude, extendedData.longitude ), extendedData.zoom );
}
if ( typeof mapData.maptagId ===
'number' ) {
- self.map.on( 'moveend',
self.onMapMove, self );
+ map.on( 'moveend',
self.onMapMove, self );
}
- mw.hook( 'wikipage.maps' ).fire(
self.map, true /* isFullScreen */ );
-
- this.map.invalidateSize();
+ mw.hook( 'wikipage.maps' ).fire( map,
true /* isFullScreen */ );
} );
}, this );
};
diff --git a/modules/kartographer.js b/modules/kartographer.js
index fa24af3..0dbb2cc 100644
--- a/modules/kartographer.js
+++ b/modules/kartographer.js
@@ -64,6 +64,14 @@
getWindowManager()
.openWindow( getMapDialog(), dialogData
)
.then( function ( opened ) {
+ // It takes 250ms for the
dialog to open,
+ // we'd better invalidate the
size once it opened.
+ setTimeout( function () {
+ var map =
getMapDialog().map;
+ if ( map ) {
+
map.invalidateSize();
+ }
+ }, 300 );
return opened;
} )
.then( function ( closing ) {
diff --git a/modules/live/MWMap.js b/modules/live/MWMap.js
index 8bd63f4..9b9bfd9 100644
--- a/modules/live/MWMap.js
+++ b/modules/live/MWMap.js
@@ -218,22 +218,28 @@
* The hack is to try jQuery which will pick up CSS dimensions. T125263
*
* However in full screen, the container size is actually [0,0] at that
- * time. Let's default to 300px temporarily, so that the map has a
default
- * size to initialize itself (with an acceptable fullscreen minimum
value).
+ * time. In that case, the script looks for the first visible parent and
+ * takes its `height` and `width` to initialize the map.
*
* @private
*/
MWMap.prototype._fixMapSize = function () {
- var width, height, $container = this.$container;
+ var width, height, $visibleParent = this.$container.closest(
':visible' );
// Get `max` properties in case the container was wrapped
// with {@link #responsiveContainerWrap}.
- width = $container.css( 'max-width' );
- height = $container.css( 'max-height' );
- width = ( !width || width === 'none' ) ? $container.width() :
width;
- height = ( !height || height === 'none' ) ? $container.height()
: height;
+ width = $visibleParent.css( 'max-width' );
+ height = $visibleParent.css( 'max-height' );
+ width = ( !width || width === 'none' ) ? $visibleParent.width()
: width;
+ height = ( !height || height === 'none' ) ?
$visibleParent.height() : height;
- this.map._size = new L.Point( width || 300, height || 300 );
+ while ( ( !height && $visibleParent.parent().length ) ) {
+ $visibleParent = $visibleParent.parent();
+ width = $visibleParent.outerWidth( true );
+ height = $visibleParent.outerHeight( true );
+ }
+
+ this.map._size = new L.Point( width, height );
};
MWMap.prototype.setView = function ( center, zoom, options, save ) {
@@ -244,7 +250,7 @@
try {
center = L.latLng( center );
zoom = isNaN( zoom ) ? this.map.options.fallbackZoom :
zoom;
- map.setView( center, zoom, true );
+ map.setView( center, zoom, options );
} catch ( e ) {
// Determines best center of the map
maxBounds = getValidBounds( map );
--
To view, visit https://gerrit.wikimedia.org/r/298038
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9ff2d75d4d6b482659f16c8b5ef45d99dae47093
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Kartographer
Gerrit-Branch: wmf/1.28.0-wmf.9
Gerrit-Owner: MaxSem <[email protected]>
Gerrit-Reviewer: JGirault <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits