Неожиданное поведение кнопки закрытия окна

Добрый день.

https://snippet.webix.com/s996lu3d
Хочется более привычного поведения, например, нажимаю я иконку закрытия окна, кнопку мыши пока не отпустил и тут понимаю, что закрываю я окошко зря. В обычной ситуации (при работе с окнами OS) я отвожу мышь в сторону и там отпускаю кнопку, но не в этом случае - тут система как бы намекает, что если у тебя в закрываемом окне есть важные данные, которые ты не сохранил - тренируй память и запоминай, а времени у тебя ровно до того момента, пока не дрогнет палец на кнопке.
Есть ли возможность реализовать поведение, близкое к иконкам закрытия OS ?

День добрый

Текущее поведение не идеально, мы добавим это поведение в список возможных улучшений

В целом же, более дружественным решением было бы проверять данные - сохранены они или нет при закрытии окна, и если данные не сохранены запрашивать подтверждение на закрытие (webix.confirm)

https://snippet.webix.com/akp7848i
в конфиге кнопки надо проставить nodrag:true

@intregal, странно, у меня ваш пример не работает, получилось сделать так (добавил id my_icon к иконке):

// При нажатии иконки закрытия окна - отключить перетаскивание
$$(“my_icon”).getInputNode().onmouseover = function () {
$$(“my_win”).define(“move”, false);
};

// При уводе мышь с иконки закрытия окна - включить перетаскивание
$$(“my_icon”).getInputNode().onmouseout = function () {
$$(“my_win”).define(“move”, true);
};

Зато мой вариант не работает в снипете :slight_smile:

@Sve сниппет не работает или рабочая имплементация не получается?
если второе, то повторите все в точности.

@intregal, да, у меня установка свойств происходит уже после того, как окно сформировано, но ваш вариант изящнее.

@intregal, именно снипет не рабоатет, в реальности всё хорошо:
https://snippet.webix.com/2g9z8bvp

ваш сниппет именно и не может работать.
т.к. вызов элемента происходит до его инициализации.
попробуйте мою имплементацию:

пропишите этот код в самом начале

(function () {
    var preventDrag = false;
    webix.event(document.body, webix.env.mouse.down, function (e) {
        if (!e.button) {//left button
            var view = $$(e);
            preventDrag = (view && view.config.nodrag);
        }
    }, { capture: true });
    webix.event(document.body, webix.env.mouse.up, function (e) {
        preventDrag = false;
    }, { capture: true });
    webix.event(document.body, webix.env.mouse.move, function (e) {
        if (preventDrag) {
            webix.html.preventEvent(e);
            e.stopImmediatePropagation && e.stopImmediatePropagation()
        }
    }, { capture: true });
}());

и используйте nodrag:true в конфиге кнопки