From 7d3abbd5cadffb49f7419ad25c3a25e46dfef903 Mon Sep 17 00:00:00 2001
From: andrewcoder002 <92372311+andrewcoder002@users.noreply.github.com>
Date: Wed, 13 Oct 2021 14:35:47 +0200
Subject: [PATCH 01/24] Update PluggableMap.js
---
src/ol/PluggableMap.js | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/ol/PluggableMap.js b/src/ol/PluggableMap.js
index 136039e3f2..3df2448e4e 100644
--- a/src/ol/PluggableMap.js
+++ b/src/ol/PluggableMap.js
@@ -1239,6 +1239,11 @@ class PluggableMap extends BaseObject {
this.handleResize_ = this.updateSize.bind(this);
window.addEventListener(EventType.RESIZE, this.handleResize_, false);
}
+
+ if (this.getViewport().getRootNode().defaultView != window ){
+ window.removeEventListener(EventType.RESIZE, this.handleResize_);
+ this.getViewport().getRootNode().defaultView.addEventListener(EventType.RESIZE, this.handleResize_, false);
+ }
}
this.updateSize();
From b51d16b5756932f3d242f94e1e1246665222707f Mon Sep 17 00:00:00 2001
From: andrewcoder002 <92372311+andrewcoder002@users.noreply.github.com>
Date: Wed, 13 Oct 2021 17:22:18 +0200
Subject: [PATCH 02/24] Update PluggableMap.js
Just changed formatting
---
src/ol/PluggableMap.js | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/ol/PluggableMap.js b/src/ol/PluggableMap.js
index 3df2448e4e..235a93b49f 100644
--- a/src/ol/PluggableMap.js
+++ b/src/ol/PluggableMap.js
@@ -1239,11 +1239,11 @@ class PluggableMap extends BaseObject {
this.handleResize_ = this.updateSize.bind(this);
window.addEventListener(EventType.RESIZE, this.handleResize_, false);
}
-
- if (this.getViewport().getRootNode().defaultView != window ){
- window.removeEventListener(EventType.RESIZE, this.handleResize_);
- this.getViewport().getRootNode().defaultView.addEventListener(EventType.RESIZE, this.handleResize_, false);
- }
+
+ if (this.getViewport().getRootNode().defaultView != window ){
+ window.removeEventListener(EventType.RESIZE, this.handleResize_);
+ this.getViewport().getRootNode().defaultView.addEventListener(EventType.RESIZE, this.handleResize_, false);
+ }
}
this.updateSize();
From bc064aba36caa44901b808c6ccd20506d14ff143 Mon Sep 17 00:00:00 2001
From: andrewcoder002 <92372311+andrewcoder002@users.noreply.github.com>
Date: Thu, 14 Oct 2021 09:52:15 +0200
Subject: [PATCH 03/24] Update PluggableMap.js
Removing listener when the target is changed again.
---
src/ol/PluggableMap.js | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/ol/PluggableMap.js b/src/ol/PluggableMap.js
index 235a93b49f..3befe40c04 100644
--- a/src/ol/PluggableMap.js
+++ b/src/ol/PluggableMap.js
@@ -1240,9 +1240,20 @@ class PluggableMap extends BaseObject {
window.addEventListener(EventType.RESIZE, this.handleResize_, false);
}
+ if (this.externView && this.externView != window){
+ this.externView.removeEventListener(EventType.RESIZE, this.handleResize_);
+ }
+
if (this.getViewport().getRootNode().defaultView != window ){
+ this.externView = this.getViewport().getRootNode().defaultView;
window.removeEventListener(EventType.RESIZE, this.handleResize_);
- this.getViewport().getRootNode().defaultView.addEventListener(EventType.RESIZE, this.handleResize_, false);
+ this.getViewport()
+ .getRootNode().
+ defaultView.addEventListener(
+ EventType.RESIZE,
+ this.handleResize_,
+ false
+ );
}
}
From 7a74ba606a0250725e92339a9d74eb8da3b0b4fa Mon Sep 17 00:00:00 2001
From: andrewcoder002 <92372311+andrewcoder002@users.noreply.github.com>
Date: Thu, 14 Oct 2021 10:05:46 +0200
Subject: [PATCH 04/24] Test case of new functionality
Test case of new functionality that enables to switch map to another browser window and back
---
examples/extmap-main.html | 45 +++++++++++++++++++++++++++++++++++++++
examples/extmap-map.html | 22 +++++++++++++++++++
examples/extmap.js | 13 +++++++++++
3 files changed, 80 insertions(+)
create mode 100644 examples/extmap-main.html
create mode 100644 examples/extmap-map.html
create mode 100644 examples/extmap.js
diff --git a/examples/extmap-main.html b/examples/extmap-main.html
new file mode 100644
index 0000000000..16a6a4693b
--- /dev/null
+++ b/examples/extmap-main.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+ OpenLayers example
+
+
+ External map window test case
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/extmap-map.html b/examples/extmap-map.html
new file mode 100644
index 0000000000..0b02d97932
--- /dev/null
+++ b/examples/extmap-map.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/extmap.js b/examples/extmap.js
new file mode 100644
index 0000000000..fc770a9c15
--- /dev/null
+++ b/examples/extmap.js
@@ -0,0 +1,13 @@
+ var map = new ol.Map({
+ target: 'map',
+ layers: [
+ new ol.layer.Tile({
+ source: new ol.source.OSM()
+ })
+ ],
+ view: new ol.View({
+ center: ol.proj.fromLonLat([37.41, 8.82]),
+ zoom: 4
+ })
+ });
+
\ No newline at end of file
From 86801d11511b7f591897c52c8793c9f03c579b97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maximilian=20Kr=C3=B6g?=
Date: Thu, 14 Oct 2021 21:56:42 +0200
Subject: [PATCH 05/24] Make external map example work
---
examples/external-map.html | 11 ++++++
examples/external-map.js | 47 ++++++++++++++++++++++++
examples/extmap-main.html | 45 -----------------------
examples/extmap-map.html | 22 -----------
examples/extmap.js | 13 -------
examples/resources/external-map-map.html | 18 +++++++++
6 files changed, 76 insertions(+), 80 deletions(-)
create mode 100644 examples/external-map.html
create mode 100644 examples/external-map.js
delete mode 100644 examples/extmap-main.html
delete mode 100644 examples/extmap-map.html
delete mode 100644 examples/extmap.js
create mode 100644 examples/resources/external-map-map.html
diff --git a/examples/external-map.html b/examples/external-map.html
new file mode 100644
index 0000000000..b372bf43f2
--- /dev/null
+++ b/examples/external-map.html
@@ -0,0 +1,11 @@
+---
+layout: example.html
+title: External map
+shortdesc: Show a map in a separate window.
+docs: >
+
+tags: "external, window"
+resources:
+---
+
+
diff --git a/examples/external-map.js b/examples/external-map.js
new file mode 100644
index 0000000000..b5ee6d1b8c
--- /dev/null
+++ b/examples/external-map.js
@@ -0,0 +1,47 @@
+import Map from '../src/ol/Map.js';
+import OSM from '../src/ol/source/OSM.js';
+import TileLayer from '../src/ol/layer/Tile.js';
+import View from '../src/ol/View.js';
+import {fromLonLat} from '../src/ol/proj.js';
+
+const map = new Map({
+ target: 'map',
+ layers: [
+ new TileLayer({
+ source: new OSM(),
+ }),
+ ],
+ view: new View({
+ center: fromLonLat([37.41, 8.82]),
+ zoom: 4,
+ }),
+});
+
+let mapWindow;
+const button = document.getElementById('extMap');
+button.addEventListener('click', function () {
+ const localMapTarget = document.getElementById('map');
+ localMapTarget.style.height = '0px';
+ button.disabled = true;
+
+ mapWindow = window.open(
+ 'resources/external-map-map.html',
+ 'MapWindow',
+ 'toolbar=0,location=0,menubar=0,width=800,height=600'
+ );
+ mapWindow.addEventListener('load', function () {
+ const extMapDiv = mapWindow.document.getElementById('map');
+ map.setTarget(extMapDiv);
+ });
+ mapWindow.addEventListener('beforeunload', function () {
+ localMapTarget.style.height = '';
+ map.setTarget(localMapTarget);
+ button.disabled = false;
+ mapWindow = undefined;
+ });
+});
+window.addEventListener('beforeunload', function () {
+ if (mapWindow) {
+ mapWindow.close();
+ }
+});
diff --git a/examples/extmap-main.html b/examples/extmap-main.html
deleted file mode 100644
index 16a6a4693b..0000000000
--- a/examples/extmap-main.html
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
- OpenLayers example
-
-
- External map window test case
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/examples/extmap-map.html b/examples/extmap-map.html
deleted file mode 100644
index 0b02d97932..0000000000
--- a/examples/extmap-map.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/examples/extmap.js b/examples/extmap.js
deleted file mode 100644
index fc770a9c15..0000000000
--- a/examples/extmap.js
+++ /dev/null
@@ -1,13 +0,0 @@
- var map = new ol.Map({
- target: 'map',
- layers: [
- new ol.layer.Tile({
- source: new ol.source.OSM()
- })
- ],
- view: new ol.View({
- center: ol.proj.fromLonLat([37.41, 8.82]),
- zoom: 4
- })
- });
-
\ No newline at end of file
diff --git a/examples/resources/external-map-map.html b/examples/resources/external-map-map.html
new file mode 100644
index 0000000000..4d3ca1fc5b
--- /dev/null
+++ b/examples/resources/external-map-map.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
From d1560176bad648aec2151da8e4b904d49cef970e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maximilian=20Kr=C3=B6g?=
Date: Thu, 14 Oct 2021 23:51:50 +0200
Subject: [PATCH 06/24] Fix mouse interactions with tabindex in external window
---
src/ol/events/condition.js | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/ol/events/condition.js b/src/ol/events/condition.js
index bff7b81b81..56cdde0d41 100644
--- a/src/ol/events/condition.js
+++ b/src/ol/events/condition.js
@@ -83,7 +83,11 @@ export const altShiftKeysOnly = function (mapBrowserEvent) {
* @api
*/
export const focus = function (event) {
- return event.target.getTargetElement().contains(document.activeElement);
+ const targetElement = event.map.getTargetElement();
+ return targetElement.contains(
+ /** @type {Document} */ (targetElement.getRootNode({composed: true}))
+ .activeElement
+ );
};
/**
From c799cf0cfd5aeada3610c256aba864ec016d55fc Mon Sep 17 00:00:00 2001
From: andrewcoder002 <92372311+andrewcoder002@users.noreply.github.com>
Date: Fri, 15 Oct 2021 14:36:45 +0200
Subject: [PATCH 07/24] Update external-map-map.html
Handle situation when user reloads external map window
---
examples/resources/external-map-map.html | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/examples/resources/external-map-map.html b/examples/resources/external-map-map.html
index 4d3ca1fc5b..179770b800 100644
--- a/examples/resources/external-map-map.html
+++ b/examples/resources/external-map-map.html
@@ -13,6 +13,10 @@
+