OberonCore
https://forum.oberoncore.ru/

#041 Поправка в HostMechanisms
https://forum.oberoncore.ru/viewtopic.php?f=134&t=6684
Страница 1 из 1

Автор:  adimetrius [ Четверг, 26 Ноябрь, 2020 13:50 ]
Заголовок сообщения:  #041 Поправка в HostMechanisms

Коллеги, если в (Linux)HostMechanisms.TrackToDrop вместо
Код:
      VAR m: SET;x1, y1: INTEGER; isDown: BOOLEAN;
   BEGIN
      REPEAT
         host.Input(x1, y1, m, isDown);
         host.MarkRect(x1-rx, y1-ry, x1-rx+w, y1-ry+h, 0, Ports.dim50, Ports.show);      
         host.MarkRect(x1-rx, y1-ry, x1-rx+w, y1-ry+h, 0, Ports.dim50, Ports.hide);
      UNTIL ~isDown;

сделать

Цитата:
VAR m: SET;x1, y1: INTEGER; isDown: BOOLEAN;
b, old: RECORD l, t, r, b: INTEGER END;
BEGIN
REPEAT
host.Input(x1, y1, m, isDown);
b.l := x1-rx; b.t := y1-ry; b.r := x1-rx+w; b.b := y1-ry+h;
IF (b.l # old.l) OR (b.t # old.t) OR (b.r # old.r) OR (b.b # old.b) THEN
host.MarkRect(old.l, old.t, old.r, old.b, 0, Ports.dim50, Ports.hide);
host.MarkRect(b.l, b.t, b.r, b.b, 0, Ports.dim50, Ports.show);
old := b
END

UNTIL ~isDown;


то при перетаскивании мышью в контейнерах вместо Изображение получится Изображение

Предлагаю внести поправку.

Автор:  Иван Денисов [ Четверг, 26 Ноябрь, 2020 16:47 ]
Заголовок сообщения:  Re: Поправка в HostMechanisms

Нет возражений.

Автор:  Иван Денисов [ Среда, 02 Декабрь, 2020 19:15 ]
Заголовок сообщения:  Re: #041 Поправка в HostMechanisms

Немного доработал, чтобы после show всегда был hide, и закоммитил.

Заодно другим коммитом поправил положение главного окна. А то в Mint оно открывалось посередине, было неудобно.

Автор:  adimetrius [ Четверг, 03 Февраль, 2022 19:21 ]
Заголовок сообщения:  Re: #041 Поправка в HostMechanisms

Поправка к поправке: надо вот так, чтобы исключить использование неопределенного значения old:
Код:
      shown := FALSE;
      REPEAT
         host.Input(x1, y1, m, isDown);
         b.l := x1 - rx; b.t := y1 - ry; b.r := x1 - rx + w; b.b := y1 - ry + h;
         moved := shown & ((b.l # old.l) OR (b.t # old.t) OR (b.r # old.r) OR (b.b # old.b));
         IF shown THEN host.MarkRect(old.l, old.t, old.r, old.b, 0, Ports.dim50, Ports.hide) END;
         IF isDown THEN host.MarkRect(b.l, b.t, b.r, b.b, 0, Ports.dim50, Ports.show);
            old := b; shown := TRUE
         END
      UNTIL ~isDown;

Автор:  Иван Денисов [ Воскресенье, 13 Февраль, 2022 21:17 ]
Заголовок сообщения:  Re: #041 Поправка в HostMechanisms

Спасибо, Антон, это исправло существенный недочёт при редактировании диалогов, когда появлялся серый фон.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/