mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-27 03:57:21 +00:00
Restore previous popup mechanism (no cancelling when focusing inputs) (#4305)
* remove cancelpopups from factory.js * remove handleFocusEvent from framed engine * remove cancelPopups from simple engine * Update popup.js
This commit is contained in:
parent
66b68f4a58
commit
d01b781283
@ -79,7 +79,6 @@ function FramedEngine(options) {
|
|||||||
// Add event listeners
|
// Add event listeners
|
||||||
$tw.utils.addEventListeners(this.domNode,[
|
$tw.utils.addEventListeners(this.domNode,[
|
||||||
{name: "click",handlerObject: this,handlerMethod: "handleClickEvent"},
|
{name: "click",handlerObject: this,handlerMethod: "handleClickEvent"},
|
||||||
{name: "focus",handlerObject: this,handlerMethod: "handleFocusEvent"},
|
|
||||||
{name: "input",handlerObject: this,handlerMethod: "handleInputEvent"},
|
{name: "input",handlerObject: this,handlerMethod: "handleInputEvent"},
|
||||||
{name: "keydown",handlerObject: this.widget,handlerMethod: "handleKeydownEvent"}
|
{name: "keydown",handlerObject: this.widget,handlerMethod: "handleKeydownEvent"}
|
||||||
]);
|
]);
|
||||||
@ -153,16 +152,6 @@ FramedEngine.prototype.focus = function() {
|
|||||||
this.domNode.select();
|
this.domNode.select();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
Handle the focus event
|
|
||||||
*/
|
|
||||||
FramedEngine.prototype.handleFocusEvent = function(event) {
|
|
||||||
if(this.widget.cancelPopups) {
|
|
||||||
this.widget.cancelPopups();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Handle a click
|
Handle a click
|
||||||
|
@ -122,7 +122,6 @@ SimpleEngine.prototype.handleInputEvent = function(event) {
|
|||||||
Handle a dom "focus" event
|
Handle a dom "focus" event
|
||||||
*/
|
*/
|
||||||
SimpleEngine.prototype.handleFocusEvent = function(event) {
|
SimpleEngine.prototype.handleFocusEvent = function(event) {
|
||||||
this.widget.cancelPopups();
|
|
||||||
if(this.widget.editFocusPopup) {
|
if(this.widget.editFocusPopup) {
|
||||||
$tw.popup.triggerPopup({
|
$tw.popup.triggerPopup({
|
||||||
domNode: this.domNode,
|
domNode: this.domNode,
|
||||||
|
@ -248,13 +248,6 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
Cancel Popups
|
|
||||||
*/
|
|
||||||
EditTextWidget.prototype.cancelPopups = function() {
|
|
||||||
$tw.popup.cancel(0,this.engine.domNode);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Handle a dom "keydown" event, which we'll bubble up to our container for the keyboard widgets benefit
|
Handle a dom "keydown" event, which we'll bubble up to our container for the keyboard widgets benefit
|
||||||
*/
|
*/
|
||||||
|
@ -149,46 +149,21 @@ Popup.prototype.show = function(options) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
Detect if a Popup contains an input field that has focus
|
|
||||||
Returns true or false
|
|
||||||
*/
|
|
||||||
Popup.prototype.detectInputWithinPopup = function(node) {
|
|
||||||
var withinPopup = false,
|
|
||||||
currNode = node;
|
|
||||||
for(var i=0; i<this.popups.length; i++) {
|
|
||||||
var popup = (this.popups[i] && this.popups[i].domNode) ? this.popups[i].domNode : null;
|
|
||||||
while(node && popup) {
|
|
||||||
if(node === popup || (node.classList && (node.classList.contains("tc-popup-keep") || (node !== currNode && node.classList.contains("tc-popup-handle"))))) {
|
|
||||||
withinPopup = true;
|
|
||||||
}
|
|
||||||
node = node.parentNode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return withinPopup;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Cancel all popups at or above a specified level or DOM node
|
Cancel all popups at or above a specified level or DOM node
|
||||||
level: popup level to cancel (0 cancels all popups)
|
level: popup level to cancel (0 cancels all popups)
|
||||||
*/
|
*/
|
||||||
Popup.prototype.cancel = function(level,focusedInputNode) {
|
Popup.prototype.cancel = function(level) {
|
||||||
var numPopups = this.popups.length;
|
var numPopups = this.popups.length;
|
||||||
level = Math.max(0,Math.min(level,numPopups));
|
level = Math.max(0,Math.min(level,numPopups));
|
||||||
for(var t=level; t<numPopups; t++) {
|
for(var t=level; t<numPopups; t++) {
|
||||||
var inputWithinPopup;
|
var popup = this.popups.pop();
|
||||||
if(focusedInputNode) {
|
if(popup.title) {
|
||||||
inputWithinPopup = this.detectInputWithinPopup(focusedInputNode);
|
if(popup.noStateReference) {
|
||||||
}
|
popup.wiki.deleteTiddler(popup.title);
|
||||||
if(!inputWithinPopup) {
|
} else {
|
||||||
var popup = this.popups.pop();
|
popup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);
|
||||||
if(popup.title) {
|
}
|
||||||
if(popup.noStateReference) {
|
|
||||||
popup.wiki.deleteTiddler(popup.title);
|
|
||||||
} else {
|
|
||||||
popup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(this.popups.length === 0) {
|
if(this.popups.length === 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user