diff --git a/index.html b/index.html
index 95ec6ae..56dfa6d 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,7 @@
miniPaint - image editor
-
+
diff --git a/src/css/layout.css b/src/css/layout.css
index 80c924d..6b6eb7e 100644
--- a/src/css/layout.css
+++ b/src/css/layout.css
@@ -1,9 +1,13 @@
.wrapper{
display: -ms-grid;
display: grid;
- height: calc(100vh - 30px);
margin: 0;
- position: relative;
+ position: fixed; /* dont change it, vh does not work on mobiles with bottom footer */
+ top: 30px;
+ right: 0;
+ left: 0;
+ bottom: 5px;
+ height: auto;
overflow: hidden;
-ms-grid-rows: auto 1fr;
@@ -624,6 +628,9 @@ canvas{
body{
padding-top:50px;
}
+ .wrapper{
+ top: 50px;
+ }
}
@media screen and (max-width:550px){
.canvas_wrapper{
diff --git a/src/css/popup.css b/src/css/popup.css
index c0e68b3..23ccfef 100644
--- a/src/css/popup.css
+++ b/src/css/popup.css
@@ -161,6 +161,9 @@
}
@media screen and (max-width:500px){
+ #popup {
+ max-height: calc(80vh - 20px); /* mobile phones has bottom menu */
+ }
#popup tr{
display: block;
margin-bottom: 10px;
diff --git a/src/css/reset.css b/src/css/reset.css
index a6ad683..439d98f 100644
--- a/src/css/reset.css
+++ b/src/css/reset.css
@@ -1,7 +1,3 @@
-*{
- box-sizing: border-box;
- background-repeat: no-repeat;
-}
:root {
/* original - default */
--background: radial-gradient(circle, #aaa 0%, #4d5355 100%);
@@ -41,9 +37,6 @@
--scrollbar-thumb-color: #2f3739;
--mobile-menu-toggle-filter: invert(1);
}
-html {
- font-size: 10px; /* Base is 10px for easy REM calculation */
-}
body.theme-light{
/* light */
--background: #f9f9fa;
@@ -112,6 +105,14 @@ body.theme-green{
--scrollbar-thumb-color: #80937d;
--mobile-menu-toggle-filter: invert(1);
}
+
+*{
+ box-sizing: border-box;
+ background-repeat: no-repeat;
+}
+html {
+ font-size: 10px; /* Base is 10px for easy REM calculation */
+}
body{
margin: 0px;
padding: 0px;
diff --git a/src/js/core/base-gui.js b/src/js/core/base-gui.js
index 9da1cf7..a775516 100644
--- a/src/js/core/base-gui.js
+++ b/src/js/core/base-gui.js
@@ -270,11 +270,8 @@ class Base_gui_class {
if (auto_size == false) {
//screen size is smaller then 400x300
- config.WIDTH = parseInt(page_w) - 5;
+ config.WIDTH = parseInt(page_w) - 15;
config.HEIGHT = parseInt(page_h) - 10;
- if (page_w < 585) {
- config.HEIGHT = config.HEIGHT - 15;
- }
}
}
}
diff --git a/src/js/core/base-tools.js b/src/js/core/base-tools.js
index 0e2a6ff..c300dc9 100644
--- a/src/js/core/base-tools.js
+++ b/src/js/core/base-tools.js
@@ -139,7 +139,7 @@ class Base_tools_class {
if (event.changedTouches) {
//using touch events
- event = event.changedTouches[0]; //@todo - also use others?
+ event = event.changedTouches[0];
}
var mouse_x = event.pageX - this.Base_gui.canvas_offset.x;
diff --git a/src/js/core/gui/gui-preview.js b/src/js/core/gui/gui-preview.js
index 091b30b..98202a8 100644
--- a/src/js/core/gui/gui-preview.js
+++ b/src/js/core/gui/gui-preview.js
@@ -40,6 +40,8 @@ class GUI_preview_class {
// preview mini window size on right sidebar
this.PREVIEW_SIZE = {w: 176, h: 100};
+ this.canvas_offset = {x: 0, y: 0};
+
this.zoom_data = {
x: 0,
y: 0,
@@ -65,6 +67,7 @@ class GUI_preview_class {
set_events() {
var _this = this;
+ var is_touch = false;
document.addEventListener('mousedown', function (e) {
_this.mouse_pressed = true;
@@ -72,6 +75,12 @@ class GUI_preview_class {
document.addEventListener('mouseup', function (e) {
_this.mouse_pressed = false;
}, false);
+ document.addEventListener('touchstart', function (e) {
+ _this.mouse_pressed = true;
+ }, false);
+ document.addEventListener('touchend', function (e) {
+ _this.mouse_pressed = false;
+ }, false);
document.getElementById('zoom_range').addEventListener('input', function (e) {
_this.set_center_zoom();
_this.zoom(this.value);
@@ -113,15 +122,36 @@ class GUI_preview_class {
config.need_render = true;
}, false);
document.getElementById("canvas_preview").addEventListener('mousedown', function (e) {
- //change zoom offset
+ if(is_touch)
+ return;
_this.set_zoom_position(e);
}, false);
document.getElementById("canvas_preview").addEventListener('mousemove', function (e) {
- //change zoom offset
+ if(is_touch)
+ return;
if (_this.mouse_pressed == false)
return;
_this.set_zoom_position(e);
}, false);
+
+ document.getElementById("canvas_preview").addEventListener('touchstart', function (e) {
+ is_touch = true;
+
+ //calc canvas position offset
+ var bodyRect = document.body.getBoundingClientRect();
+ var canvas_el = document.getElementById("canvas_preview").getBoundingClientRect();
+ _this.canvas_offset.x = canvas_el.left - bodyRect.left;
+ _this.canvas_offset.y = canvas_el.top - bodyRect.top;
+
+ //change zoom offset
+ _this.set_zoom_position(e);
+ });
+ document.getElementById("canvas_preview").addEventListener('touchmove', function (e) {
+ //change zoom offset
+ if (_this.mouse_pressed == false)
+ return;
+ _this.set_zoom_position(e);
+ });
}
prepare_canvas() {
@@ -271,14 +301,24 @@ class GUI_preview_class {
this.zoom_data.y = config.visible_height / 2;
}
- set_zoom_position(e) {
+ set_zoom_position(event) {
+ var mouse_x = event.offsetX;
+ var mouse_y = event.offsetY;
+ if (event.changedTouches) {
+ //touch events
+ event = event.changedTouches[0];
+
+ mouse_x = event.pageX - this.canvas_offset.x;
+ mouse_y = event.pageY - this.canvas_offset.y;
+ }
+
var visible_w = config.visible_width / config.ZOOM;
var visible_h = config.visible_height / config.ZOOM;
var mini_w = this.PREVIEW_SIZE.w * visible_w / config.WIDTH;
var mini_h = this.PREVIEW_SIZE.h * visible_h / config.HEIGHT;
- var change_x = (e.offsetX - mini_w / 2) / this.PREVIEW_SIZE.w * config.WIDTH;
- var change_y = (e.offsetY - mini_h / 2) / this.PREVIEW_SIZE.h * config.HEIGHT;
+ var change_x = (mouse_x - mini_w / 2) / this.PREVIEW_SIZE.w * config.WIDTH;
+ var change_y = (mouse_y - mini_h / 2) / this.PREVIEW_SIZE.h * config.HEIGHT;
var zoom_data = this.zoom_data;
zoom_data.move_pos = {};
diff --git a/src/js/libs/popup.js b/src/js/libs/popup.js
index 3d6cf06..6d51daa 100644
--- a/src/js/libs/popup.js
+++ b/src/js/libs/popup.js
@@ -169,7 +169,7 @@ class Dialog_class {
return;
event.preventDefault();
_this.resize_clicked.x = event.pageX;
- _this.resize_clicked.y = event.pageY;s
+ _this.resize_clicked.y = event.pageY;
var target = document.querySelector('#popup');
_this.element_offset.x = target.offsetTop;