Позиционирование окна без полей в нейтралино.js

Есть ли способ разместить окно без полей в файле нейтралино.config.json?

      like : "borderless": { ...args }

или любыми другими способами? Теперь он просто начинается где-то случайно и не может быть перемещен

3 ответа

Вы можете позвонить в свой javascript. (0,0) - это (крайний левый, верхний) экрана. Вы можете найти другие оконные функции по адресу https://neutralino.js.org/docs/api/window.

В продолжение вашего вопроса и, как подсказывает инстинкт Клаусса А., вы можете позвонить Neutralino.window.setDraggableRegion('id-of-element') куда id-of-elementявляется, как следует из названия, идентификатором элемента в вашем html. Затем, когда вы щелкните и перетащите этот элемент, Neutralino автоматически вызовет Neutralino.window.move(x,y). setDraggableRegion()нет в документации, но вы можете увидеть его в учебнике, который они сделали на YouTube, и он все еще находится в коде.

Дело в том, что Neutralino делает это, отправляя сообщение на сервер, что добавляет немало задержки, вызывая прерывание перетаскивания. Вот соответствующий фрагмент кода в усовершенствованной версии файла нейтралино.js:

      ...
t.move = function(e, t) {
    return r.request({
        url: "window.move",
        type: r.RequestType.POST,
        isNativeMethod: !0,
        data: {
            x: e,
            y: t
        }
    })
}, t.setDraggableRegion = function(e) {
    return new Promise(((t, i) => {
        let r = document.getElementById(e),
            o = 0,
            u = 0;

        function s(e) {
            return n(this, void 0, void 0, (function*() {
                yield Neutralino.window.move(e.screenX - o, e.screenY - u)
            }))
        }
        r || i(`Unable to find dom element: #${e}`), r.addEventListener("mousedown", (e => {
            o = e.clientX, u = e.clientY, r.addEventListener("mousemove", s)
        })), r.addEventListener("mouseup", (() => {
            r.removeEventListener("mousemove", s)
        })), t()
    }))
}
...

Я подозревал, что эта формулировка увеличивает задержку, поскольку function*является генератором и поэтому по своей сути ненадежен (необходима цитата). Я переписал его на простом javascript и немного уменьшил отставание. Он все еще заикается, только не так сильно.

      var dragging = false, posX, posY;
var draggableElement = document.getElementById('id-of-element');

draggableElement.onmousedown = function (e) {
    posX = e.pageX, posY = e.pageY;
    dragging = true;
}

draggableElement.onmouseup = function (e) {
    dragging = false;
}

document.onmousemove = function (e) {
    if (dragging) Neutralino.window.move(e.screenX - posX, e.screenY - posY);
}

Надеюсь, это поможет. Я копался во всем этом, потому что строка заголовка (также известная как строка заголовка) окна отличается от цветовой темы моей системы. Я подумал: «Может быть, я создам свою собственную строку заголовка в HTML со стилем CSS, соответствующим моему приложению». Но из-за проблем с заиканием я считаю, что лучше иметь перетаскиваемую по умолчанию строку заголовка, которая ничего не соответствует. Я все еще копаюсь в коде Neutralino C ++, чтобы посмотреть, могу ли я его изменить и добавить неклиентский обработчик сообщений рендеринга (в Windows), чтобы окрасить строку заголовка так же, как мое приложение, и по-прежнему иметь приятное плавное перетаскивание. Таким образом, он будет выглядеть «без полей», но при этом его можно будет перемещать.

Я с той же проблемой. Мой наивный инстинкт подсказывает мне, что, вероятно, это может быть способ создать настраиваемую панель элементов и использовать функцию при щелчке и перетаскивании для перемещения окна.

Переместить Windows в Neutralino довольно просто.

Вы можете использовать Neutralino.windowAPI для перемещения окон.

Пример:

      Neutralino.window.move(x, y);

здесь xа также yКоординаты, по которым будет перемещаться наше окно.

Обратите внимание, что это перемещает окно из верхнего левого угла окна.

Я сделал этот шаблон Neutralino — приложение NeutralinoJS с настраиваемой панелью заголовков , который может быть полезен, если вы создаете настраиваемую панель заголовка для своего приложения.

Другие вопросы по тегам