mirror of
https://github.com/spacedeck/spacedeck-open.git
synced 2025-12-16 01:47:30 +01:00
touch (tablet): fix deselect when tapping space; add edit text button
This commit is contained in:
@@ -322,6 +322,7 @@
|
|||||||
"follow_present": "Follow",
|
"follow_present": "Follow",
|
||||||
"mute_present": "Unfollow",
|
"mute_present": "Unfollow",
|
||||||
"follow_present_help": "If someone else is presenting this Space, the other members automatically follow the presentation. Switch following on or off with this button.",
|
"follow_present_help": "If someone else is presenting this Space, the other members automatically follow the presentation. Switch following on or off with this button.",
|
||||||
"export": "export",
|
"export": "Export",
|
||||||
"media": "Media"
|
"media": "Media",
|
||||||
}
|
"tool_edit_text": "Edit Text"
|
||||||
|
}
|
||||||
|
|||||||
@@ -1923,10 +1923,7 @@ var SpacedeckSections = {
|
|||||||
}.bind(this));
|
}.bind(this));
|
||||||
},
|
},
|
||||||
|
|
||||||
delayed_edit_artifact: function(evt) {
|
delayed_edit_artifact: function() {
|
||||||
evt.stopPropagation();
|
|
||||||
evt.preventDefault();
|
|
||||||
|
|
||||||
var a = this.selected_artifacts()[0];
|
var a = this.selected_artifacts()[0];
|
||||||
|
|
||||||
var el = $("#ios-focuser-"+a._id);
|
var el = $("#ios-focuser-"+a._id);
|
||||||
@@ -2087,8 +2084,6 @@ var SpacedeckSections = {
|
|||||||
if (a.description!=dom.innerHTML) {
|
if (a.description!=dom.innerHTML) {
|
||||||
a.description = dom.innerHTML;
|
a.description = dom.innerHTML;
|
||||||
|
|
||||||
console.log("new DOM:",dom.innerHTML);
|
|
||||||
|
|
||||||
this.update_board_artifact_viewmodel(a);
|
this.update_board_artifact_viewmodel(a);
|
||||||
this.queue_artifact_for_save(a);
|
this.queue_artifact_for_save(a);
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
function setup_whiteboard_directives() {
|
function setup_whiteboard_directives() {
|
||||||
var mode_touch = false;
|
var mode_touch = false;
|
||||||
|
|
||||||
if ('ontouchstart' in window) {
|
if ('ontouchstart' in window) {
|
||||||
mode_touch = true;
|
mode_touch = true;
|
||||||
var edown = "touchstart";
|
var edown = "touchstart";
|
||||||
@@ -38,7 +38,7 @@ function setup_whiteboard_directives() {
|
|||||||
$(el).bind("mousedown", this.handle_mouse_down_space.bind(this));
|
$(el).bind("mousedown", this.handle_mouse_down_space.bind(this));
|
||||||
$(el).bind("mousemove", this.handle_mouse_move.bind(this));
|
$(el).bind("mousemove", this.handle_mouse_move.bind(this));
|
||||||
$(el).bind("mouseup", this.handle_mouse_up_space.bind(this));
|
$(el).bind("mouseup", this.handle_mouse_up_space.bind(this));
|
||||||
|
|
||||||
$(el).bind("wheel", this.handle_wheel_space.bind(this));
|
$(el).bind("wheel", this.handle_wheel_space.bind(this));
|
||||||
|
|
||||||
$(document.body).bind("mouseleave", this.handle_mouse_leave.bind(this));
|
$(document.body).bind("mouseleave", this.handle_mouse_leave.bind(this));
|
||||||
@@ -99,7 +99,7 @@ function setup_whiteboard_directives() {
|
|||||||
this.handle_mouse_down_space(evt);
|
this.handle_mouse_down_space(evt);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($scope.active_tool == "note") {
|
if ($scope.active_tool == "note") {
|
||||||
this.handle_mouse_down_space(evt, true);
|
this.handle_mouse_down_space(evt, true);
|
||||||
return;
|
return;
|
||||||
@@ -154,7 +154,7 @@ function setup_whiteboard_directives() {
|
|||||||
|
|
||||||
var a = $scope.find_artifact_by_id(evt.currentTarget.id.replace("artifact-",""));
|
var a = $scope.find_artifact_by_id(evt.currentTarget.id.replace("artifact-",""));
|
||||||
if (!a) return;
|
if (!a) return;
|
||||||
|
|
||||||
if (a.payload_uri) {
|
if (a.payload_uri) {
|
||||||
$scope.download_selected_artifacts();
|
$scope.download_selected_artifacts();
|
||||||
}
|
}
|
||||||
@@ -200,10 +200,10 @@ function setup_whiteboard_directives() {
|
|||||||
var $scope = this.vm.$root;
|
var $scope = this.vm.$root;
|
||||||
|
|
||||||
if (!evt.ctrlKey && !evt.shiftKey) return;
|
if (!evt.ctrlKey && !evt.shiftKey) return;
|
||||||
|
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
evt.stopPropagation();
|
evt.stopPropagation();
|
||||||
|
|
||||||
var amount = 1;
|
var amount = 1;
|
||||||
var dy = evt.originalEvent.deltaY;
|
var dy = evt.originalEvent.deltaY;
|
||||||
if (dy>0) {
|
if (dy>0) {
|
||||||
@@ -222,7 +222,7 @@ function setup_whiteboard_directives() {
|
|||||||
if (!force && evt.which != 2) {
|
if (!force && evt.which != 2) {
|
||||||
if (evt.target != evt.currentTarget && !_.include(["wrapper"],evt.target.className)) return;
|
if (evt.target != evt.currentTarget && !_.include(["wrapper"],evt.target.className)) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var $scope = this.vm.$root;
|
var $scope = this.vm.$root;
|
||||||
|
|
||||||
$scope.opened_dialog="none";
|
$scope.opened_dialog="none";
|
||||||
@@ -234,7 +234,7 @@ function setup_whiteboard_directives() {
|
|||||||
if ((mode_touch && $scope.active_tool=="pointer") || evt.which == 2 || evt.buttons == 4) {
|
if ((mode_touch && $scope.active_tool=="pointer") || evt.which == 2 || evt.buttons == 4) {
|
||||||
$scope.active_tool = "pan";
|
$scope.active_tool = "pan";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($scope.active_tool=="note") {
|
if ($scope.active_tool=="note") {
|
||||||
this.deselect();
|
this.deselect();
|
||||||
this.mouse_state = "transform";
|
this.mouse_state = "transform";
|
||||||
@@ -285,6 +285,7 @@ function setup_whiteboard_directives() {
|
|||||||
$scope.start_adding_placeholder(evt);
|
$scope.start_adding_placeholder(evt);
|
||||||
return;
|
return;
|
||||||
} else if ($scope.active_tool=="pan") {
|
} else if ($scope.active_tool=="pan") {
|
||||||
|
this.deselect();
|
||||||
this.start_pan(evt);
|
this.start_pan(evt);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -305,7 +306,7 @@ function setup_whiteboard_directives() {
|
|||||||
this.old_panx = el.scrollLeft;
|
this.old_panx = el.scrollLeft;
|
||||||
this.old_pany = el.scrollTop;
|
this.old_pany = el.scrollTop;
|
||||||
}
|
}
|
||||||
|
|
||||||
var cursor = this.cursor_point_to_space(evt);
|
var cursor = this.cursor_point_to_space(evt);
|
||||||
$scope.mouse_ox = cursor.x;
|
$scope.mouse_ox = cursor.x;
|
||||||
$scope.mouse_oy = cursor.y;
|
$scope.mouse_oy = cursor.y;
|
||||||
@@ -314,7 +315,7 @@ function setup_whiteboard_directives() {
|
|||||||
|
|
||||||
deselect: function() {
|
deselect: function() {
|
||||||
var $scope = this.vm.$root;
|
var $scope = this.vm.$root;
|
||||||
|
|
||||||
$scope.deselect();
|
$scope.deselect();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -342,7 +343,7 @@ function setup_whiteboard_directives() {
|
|||||||
|
|
||||||
rects_intersecting: function(r1,r2) {
|
rects_intersecting: function(r1,r2) {
|
||||||
if (!r1 || !r2) return false;
|
if (!r1 || !r2) return false;
|
||||||
|
|
||||||
if ( (r1.x+r1.w < r2.x)
|
if ( (r1.x+r1.w < r2.x)
|
||||||
|| (r1.x > r2.x+r2.w)
|
|| (r1.x > r2.x+r2.w)
|
||||||
|| (r1.y+r1.h < r2.y)
|
|| (r1.y+r1.h < r2.y)
|
||||||
@@ -352,7 +353,7 @@ function setup_whiteboard_directives() {
|
|||||||
|
|
||||||
artifacts_in_rect: function(rect) {
|
artifacts_in_rect: function(rect) {
|
||||||
if (!rect) return [];
|
if (!rect) return [];
|
||||||
|
|
||||||
var $scope = this.vm.$root;
|
var $scope = this.vm.$root;
|
||||||
|
|
||||||
return _.filter($scope.active_space_artifacts, function(a) {
|
return _.filter($scope.active_space_artifacts, function(a) {
|
||||||
@@ -688,7 +689,7 @@ function setup_whiteboard_directives() {
|
|||||||
var $scope = this.vm.$root;
|
var $scope = this.vm.$root;
|
||||||
|
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
|
|
||||||
if (this.mouse_state == "lasso") {
|
if (this.mouse_state == "lasso") {
|
||||||
var lasso_rect = this.abs_rect(this.lasso);
|
var lasso_rect = this.abs_rect(this.lasso);
|
||||||
|
|
||||||
@@ -696,7 +697,7 @@ function setup_whiteboard_directives() {
|
|||||||
var arts = this.artifacts_in_rect(lasso_rect);
|
var arts = this.artifacts_in_rect(lasso_rect);
|
||||||
this.multi_select(arts);
|
this.multi_select(arts);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (this._no_artifact_toolbar_this_round) {
|
if (this._no_artifact_toolbar_this_round) {
|
||||||
this._no_artifact_toolbar_this_round = false;
|
this._no_artifact_toolbar_this_round = false;
|
||||||
} else {
|
} else {
|
||||||
@@ -708,7 +709,7 @@ function setup_whiteboard_directives() {
|
|||||||
}
|
}
|
||||||
else if (_.include(["transform","move","vector_transform","scribble"],this.mouse_state)) {
|
else if (_.include(["transform","move","vector_transform","scribble"],this.mouse_state)) {
|
||||||
var ars = $scope.selected_artifacts();
|
var ars = $scope.selected_artifacts();
|
||||||
|
|
||||||
for (var i=0; i<ars.length; i++) {
|
for (var i=0; i<ars.length; i++) {
|
||||||
|
|
||||||
if (_.include(["text","placeholder"],$scope.artifact_major_type(ars[i]))) {
|
if (_.include(["text","placeholder"],$scope.artifact_major_type(ars[i]))) {
|
||||||
@@ -794,7 +795,7 @@ function setup_whiteboard_directives() {
|
|||||||
|
|
||||||
$scope.websocket_send(cursor_msg);
|
$scope.websocket_send(cursor_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// side effects ftw!
|
// side effects ftw!
|
||||||
$scope.snap_ruler_x = -1000;
|
$scope.snap_ruler_x = -1000;
|
||||||
$scope.snap_ruler_y = -1000;
|
$scope.snap_ruler_y = -1000;
|
||||||
@@ -818,7 +819,7 @@ function setup_whiteboard_directives() {
|
|||||||
|
|
||||||
if (this.mouse_state == "move") {
|
if (this.mouse_state == "move") {
|
||||||
$scope.hide_toolbar_props();
|
$scope.hide_toolbar_props();
|
||||||
|
|
||||||
var snap_dx = 0;
|
var snap_dx = 0;
|
||||||
var snap_dy = 0;
|
var snap_dy = 0;
|
||||||
|
|
||||||
@@ -878,7 +879,7 @@ function setup_whiteboard_directives() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$scope.hide_toolbar_props();
|
$scope.hide_toolbar_props();
|
||||||
|
|
||||||
var ew = (edges.x2-edges.x1);
|
var ew = (edges.x2-edges.x1);
|
||||||
var eh = (edges.y2-edges.y1);
|
var eh = (edges.y2-edges.y1);
|
||||||
|
|
||||||
@@ -924,7 +925,7 @@ function setup_whiteboard_directives() {
|
|||||||
|
|
||||||
} else if (this.mouse_state == "vector_transform") {
|
} else if (this.mouse_state == "vector_transform") {
|
||||||
$scope.hide_toolbar_props();
|
$scope.hide_toolbar_props();
|
||||||
|
|
||||||
var _this = this;
|
var _this = this;
|
||||||
$scope.update_selected_artifacts(function(a) {
|
$scope.update_selected_artifacts(function(a) {
|
||||||
var old_a = $scope.find_artifact_before_transaction(a);
|
var old_a = $scope.find_artifact_before_transaction(a);
|
||||||
|
|||||||
@@ -85,13 +85,13 @@
|
|||||||
v-bind:class="{text-editing:(editing_artifact_id==a._id && (a.view.major_type=='text' || a.view.major_type=='shape'))}"
|
v-bind:class="{text-editing:(editing_artifact_id==a._id && (a.view.major_type=='text' || a.view.major_type=='shape'))}"
|
||||||
id="artifact-{{a._id}}">
|
id="artifact-{{a._id}}">
|
||||||
|
|
||||||
|
|
||||||
<div v-if="a.view && a.view.major_type" style="height:100%; width:100%" v-bind:title="(a.editor_name || (a.user && a.user.nickname) || '')">
|
<div v-if="a.view && a.view.major_type" style="height:100%; width:100%" v-bind:title="(a.editor_name || (a.user && a.user.nickname) || '')">
|
||||||
<span v-if="a.locked && is_selected(a)" class="link-wrapper">
|
<span v-if="a.locked && is_selected(a)" class="link-wrapper">
|
||||||
<span class="btn btn-sm btn-icon btn-round btn-primary">
|
<span class="btn btn-sm btn-icon btn-round btn-primary">
|
||||||
<span class="icon icon-lock-closed"></span>
|
<span class="icon icon-lock-closed"></span>
|
||||||
</span>
|
|
||||||
</span>
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
<!-- text -->
|
<!-- text -->
|
||||||
<div v-if="a.view.major_type == 'text'" class="text" v-bind:style="a.view.inner_style">
|
<div v-if="a.view.major_type == 'text'" class="text" v-bind:style="a.view.inner_style">
|
||||||
<div class="text-table">
|
<div class="text-table">
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
<button class="btn btn-divider"></button>
|
<button class="btn btn-divider"></button>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<div class="dropdown top light right" v-bind:class="{open:opened_dialog=='text-styles'}">
|
<div class="dropdown top light right" v-bind:class="{open:opened_dialog=='text-styles'}">
|
||||||
<div class="btn-collapse in">
|
<div class="btn-collapse in">
|
||||||
<button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('text-styles')" v-bind:class="{open : opened_dialog=='text-styles'}" title="<%=__("tool_styles")%>">
|
<button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('text-styles')" v-bind:class="{open : opened_dialog=='text-styles'}" title="<%=__("tool_styles")%>">
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
<%- include("./text-styles.html") %>
|
<%- include("./text-styles.html") %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="dropdown top light right" v-bind:class="{open:opened_dialog=='type-align'}">
|
<div class="dropdown top light right" v-bind:class="{open:opened_dialog=='type-align'}">
|
||||||
<div class="btn-collapse" v-bind:class="{in:selection_metrics.contains_text}">
|
<div class="btn-collapse" v-bind:class="{in:selection_metrics.contains_text}">
|
||||||
<button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('type-align')" v-bind:class="{open : opened_dialog=='type-align'}" title="<%=__("tool_align")%>">
|
<button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('type-align')" v-bind:class="{open : opened_dialog=='type-align'}" title="<%=__("tool_align")%>">
|
||||||
@@ -80,9 +80,9 @@
|
|||||||
<%- include("./layout.html") %>
|
<%- include("./layout.html") %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="dropdown top light right" v-bind:class="{open:opened_dialog=='text-settings'}">
|
<div class="dropdown top light right" v-bind:class="{open:opened_dialog=='text-settings'}">
|
||||||
|
|
||||||
<div class="btn-collapse in">
|
<div class="btn-collapse in">
|
||||||
<button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('text-settings')" v-bind:class="{open : opened_dialog=='text-settings'}" title="<%=__("tool_font")%>">
|
<button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('text-settings')" v-bind:class="{open : opened_dialog=='text-settings'}" title="<%=__("tool_font")%>">
|
||||||
<span class="icon icon-text-typeface"></span>
|
<span class="icon icon-text-typeface"></span>
|
||||||
@@ -97,6 +97,17 @@
|
|||||||
|
|
||||||
<button class="btn btn-divider"></button>
|
<button class="btn btn-divider"></button>
|
||||||
|
|
||||||
|
<div class="dropdown bottom light center">
|
||||||
|
<div class="btn-collapse" v-bind:class="{in:selection_metrics.contains_text}">
|
||||||
|
<button
|
||||||
|
class="btn btn-icon-labeled btn-transparent"
|
||||||
|
v-on:click="delayed_edit_artifact()">
|
||||||
|
<span class="icon icon-pencil"></span>
|
||||||
|
<span class="icon-label"><%=__("tool_edit_text")%></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="dropdown top light right" v-bind:class="{open:opened_dialog=='object-options'}">
|
<div class="dropdown top light right" v-bind:class="{open:opened_dialog=='object-options'}">
|
||||||
<button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('object-options')" v-bind:class="{open : opened_dialog=='object-options'}">
|
<button class="btn btn-transparent btn-icon-labeled" v-on:click="open_dialog('object-options')" v-bind:class="{open : opened_dialog=='object-options'}">
|
||||||
<span class="icon icon-cogwheel"></span>
|
<span class="icon icon-cogwheel"></span>
|
||||||
@@ -107,6 +118,6 @@
|
|||||||
<%- include("./object-options.html") %>
|
<%- include("./object-options.html") %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user