[#31] Re: GoSnap

@Krashan, post #30

Natomiast zachodzi takie zjawisko: GoSnap oblicza sobie gdzie znalazłaby się górna krawędź okna, gdyby dało się je przeskalować. W tym przypadku jest to połowa wysokości ekranu, więc tam zostaje przesunięte okno.

E, no to do poprawy, powinno być na dole.
[#32] Re: GoSnap

@Krashan, post #30

Mam ekran 1600x1200 w emulatorze, dałem 30 pikseli i jest poprawa.

Zastanawiam się jeszcze, i coraz bardziej skłaniam ku temu, czy zamiast wartości marginesu w pikselach nie zrobić parametru procentowego, np. domyślnie 3% wysokości i szerokości ekranu. Albo dodać dodatkowo parametr procentowy, ale z wyższym priorytetem niż pikselowy. Rozdzielczość amigowych systemów ma naprawdę dużą rozbieżność, od 640x200 do FullHD i więcej, ciężko dobrze ustawić defaultową wartość.
[#33] Re: GoSnap

@vojo, post #32

Można też jeszcze pomyśleć o podziale ekranu na więcej stref niż 4. Na ekranie np. full HD można otworzyć np. parę edytorów, multiviewa z jakimś autodocem, shella, jakiś debug... "Siatka" do wyboru powiedzmy do 4x4 maksymalnie. I wtedy - ja bym tak to widział - jeżeli puszczając dragowane okno przytrzymasz jakiś hotkey, to okno jest wpasowywane w to oczko siatki, nad którym jest wskaźnik myszy. A jeżeli ma ograniczenia skalowania, to niech będzie np. wycentowane w tym elemencie siatki. Możnaby sobie szybko wykafelkować ekran wedle uznania.

Wiem, że to trochę zmienia ideę programu, ot taka luźna uwaga od użytkownika intensywnie używającego kilku co najmniej okien, na sporym ekranie (nawet na Amidze 1200 mam 1280x720).
[#34] Re: GoSnap

@Krashan, post #33

Można też jeszcze pomyśleć o podziale ekranu na więcej stref niż 4.

Też o tym myślałem, zwłaszcza że amigowe okienka nie potrzebują dużo miejsca, i na dużych ekranach jest pole do manewru. Czas pokaże... ;)
[#35] Re: GoSnap

@vojo, post #34

Jako źródło inspiracji możesz obadać windowsowe PowerToys a w szczególności Fancy Zones. Samodzielnie definiowane strefy, snapowanie do stref w momencie jak trzymasz shift przez co nie jesteś ograniczony do narożników, możliwość ustawienia okna na 2 lub 4 przyległych strefach jak upuścisz okno na granicach stref... Trochę Ci to skomplikuje, ale lepszego rozwiązania nie ma ;)
1
[#36] Re: GoSnap

@teh_KaiN, post #35

https://github.com/RasmusEdgar/dintwm

Dla inspiracji możesz jeszcze poszperać po kodzie do amigowego tiling managera. Działa całkiem fajnie.
[#37] Re: GoSnap

@vojo, post #1

v0.15:
  • nowy tool type SNAP_MARGINPCT - określenie marginesu przyciągania jako procent szerokości / wysokości ekranu, zakres 1-15, domyślnie 3%. Nowy parametr przesłania dotychczasowy SNAP_MARGIN, jesli będą oba.
  • jeśli nie zostanie zdefiniowany obszar przyciągania parametrami, to defaultowe będą 3% szerokosci i wysokości ekranu
  • poprawki w pozycjonowanie okien nieskalowalnych - przesunięcie do narożnika spozycjonuje okno w narożniku, a przesunięcie do krawędzi wyśrodkuje okno przy danej krawędzi.
3
[#38] Re: GoSnap

@ppill, post #36

Ja do tego używam też programiku typu Commodity ZapperNG
[#39] Re: GoSnap

@vojo, post #1

Wersja 0.16 do pobrania ze strony https://bitplan.itch.io/gosnap

Poprawia (mam nadzieję) największa bolączka, tzn detekcję przesunięcia okna do krawędzi.
Okazało się że na części systemów GoSnap po otrzymaniu eventu z commodity sprawdzał pozycję okna ZANIM intuition zdążyło zaktualizować nową pozycję okna na systemowej liście okien. Efekt był taki, że detekcja nie działała wcale, lub dość losowo - zgłaszał to m. in. Krashan, a ja długo nie umiałem tego odtworzyć. I wcale to nie zależy od wydajności maszyny, w końcu odtworzyłem to na mojej najszybszej Amidze z 060 i ZZ9000. Na wolniejszych (ACA 030/55 z AGA) działało OK więc dalej do końca nie rozumiem przyczyny, to już pewnie zahacza o jakies wewnętrzne algorytmy i priorytety intuition.

W każdym razie po wprowadzeniu małego opóźnienia przed sprawdzeniem nowej pozycji okna zaczęło działać na wszystkim co miałem pod ręką, więc mam nadzieję ze problem został usunięty...
[#40] Re: GoSnap

@vojo, post #39

Z tego co wiem, Commodity ma priorytet wyższy niż Intuition, który jest z kolei wyższy niż Console.

Oznacza to, że Commodity modyfikuje wydarzenia z wejścia i dopiero po modyfikacji trafiają one do Intuition.

Wiem, że istnieje taka klasa InputEvent jak IECLASS_CHANGEWINDOW, która na pewno jest wysyłana dopiero po zmianie położenia okna. Nie wiem tylko gdzie wiadomości tej klasy są generowane (czy wpadają od razu do handlerów Input.device, czy generuje je handler Intuition).

W teorii jakby udało Ci się obsłużyć IECLASS_CHANGEWINDOW, wiedziałbyś kiedy następuje zmiana położenia okna i mógłbyś pobrać położenie po tej zmianie.

Zaznaczam, że nie mam tu doświadczenia z Commodities (tylko troszkę z Input.device), ale może ta informacja będzie pomocna.

Poniżej ilustracja sieci Commodities z RKRM:



Ostatnia aktualizacja: 03.07.2025 14:11:38 przez Hexmage960
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem