1

Téma: Nezadouci posuny kurozu mysi

odhalil jsem nepodstatnou chybku, ze pri operaci Netlist | View Links se kurzor presune nad plochu programu i v pripade, ze okno programu neni prave aktivni. Na zadny dalsi pripad jsem zatim nenarazil, kdyztak dam jeste vedet.
Postup, jak to nasimulovat, je napriklad pomoci klavesnice provest nejakou casove narocnejsi operaci (u vetsi desky napriklad pomoci Dimensions | Check Violations a mezitim co se bude tato operace provadet, naklapat jeste operaci View Links a prepnout se na jine okno. Kurzor se po dokonceni operaci presune nad menu neaktivniho programu.

Zaroven jsem se jeste chtel zeptat, jestli je v soucasnosti moznost zabranit Layout i Schematu, aby mi jakkoliv hybal s pozici kurzoru (pri brouzdani v menu, pri vylevani, apod.) v nastaveni obou programu jsem to v Options nenasel a obcas to docela vadi zejmena v Layoutu v pripadech, kdy cekam az se dokonci jedna operace a mezitim si kurzor chci pripravit na dalsi misto.

2

Re: Nezadouci posuny kurozu mysi

kolin napsal:

... kurzor se presune nad plochu programu i v pripade, ze okno programu neni prave aktivni.

Nijak nechci tvrdit, že takhle je to naprogramované úmyslně, ale na posuv cursoru po ukončení operace Layoutu jsem se díval jako na vedlejší efekt, který může uživateli ukázat, že v jeho (mezitím popřípadě skrytém) okně již skončila dosud běžící operace, třeba autorouter.  Chování programu by se asi změnit dalo, ovšem s tím, že by cursor na příslušné souřadnice musel skočit v okamžiku, kdy se okno aktivním opět stane.  V této verzi bych je však už nerad nějak měnil.

kolin napsal:

Zaroven jsem se jeste chtel zeptat, jestli je v soucasnosti moznost zabranit Layout i Schematu, aby mi jakkoliv hybal s pozici kurzoru ... cekam, az se dokonci jedna operace, a mezitim si kurzor chci pripravit na dalsi misto.

Tohle je trochu horší, protože ačkoliv uznávám, že jde o nedostatek, jeho odstranění by pravděpodobně vyžadovalo individuálně ošetřit desítky případů.  Celkem snadno by se dalo zařídit, aby práce v systému menu vůbec neovlivňovala polohu myši.  Horší je to s operacemi v hlavní smyčce.  Tam by totiž bylo třeba u všech příkazů zjistit jednotlivě, zda mají za účel pohnout cursorem.  Zhruba řečeno, takové příkazy samozřejmě musejí přebít polohu myši, kterou uživatel mezitím případně posunul; na druhé straně však obvykle trvají jen okamžik, a pokud uživatel ví, co dělá, nastavení nové polohy myši tím příkazem bylo jeho cílem.  Potíž je s příkazy, které trvají déle (např. autorouter, rozlévání mědi, operace s blokem) a zároveň jejich primárním účelem není posouvat cursor.  Jde totiž o to, že v dosavadní logice programu i tyto příkazy mohou vyvolat posun cursoru -- například tím, že v okolí výchozí polohy cursoru vygenerovaly prvek, k němuž by měl cursor následně přiskočit, anebo jej naopak smazaly, takže by se cursor měl vrátit do rastru.

Z těch důvodů si nějaké principiální řešení nechávám až do dalších verzí.  Možná by se dalo uvažovat o jakémsi provisoriu (např. pokud se během provádění příkazu zapnuly "přesýpací hodiny", vzít v úvahu polohu myši nastavenou uživatelem), ale všechno je to poměrně složité s rizikem vnesení nežádoucích vedlejších účinků -- těmi ostatně může být již to, že se změní chování, na něž jsou uživatelé zvyklí.

3

Re: Nezadouci posuny kurozu mysi

Petr Horský napsal:

[...jeho odstranění by pravděpodobně vyžadovalo individuálně ošetřit desítky případů. ... Horší je to s operacemi v hlavní smyčce.  Tam by totiž bylo třeba u všech příkazů zjistit jednotlivě, zda mají za účel pohnout cursorem.

Tipuji, ze tohle by byla prace na par minut, stylem strojoveho hledani prikazu pro nastavovani polohy kurzoru a pred kazdy takovy prikaz, kde je to spise nezadouci, vlozit podminku, jestli je to v nastaveni programu povoleno. Pokud ne, kurzorem se nepohne.
Kolik takovych rozhodnuti tam odhadem muze byt? Funkci, ktere hybou kurzorem prece tolik neni?

Petr Horský napsal:

Z těch důvodů si nějaké principiální řešení nechávám až do dalších verzí.  Možná by se dalo uvažovat o jakémsi provisoriu (např. pokud se během provádění příkazu zapnuly "přesýpací hodiny", vzít v úvahu polohu myši nastavenou uživatelem), ale všechno je to poměrně složité s rizikem vnesení nežádoucích vedlejších účinků -- těmi ostatně může být již to, že se změní chování, na něž jsou uživatelé zvyklí.

Mnoo, to mi prijde zbytecne slozite a navic, jestli to dobre chapu, by to vnaselo pro uzivatele jakousi nejistotu, kdy mu to s kurzorem cukne a kdy ne.
To, ze jsou uzivatele na neco zvykli, je preci resitelne pomoci prepinace, rozhodne o tom neuvazuji jako o veci, ktera se ma provzdy odstranit. A konec koncu, ciste teoreticky, se muze nastavovat jednotlive minimalne pro nektere akce - at si uzivatel sam vybere kdy je mu to prijemne..

4

Re: Nezadouci posuny kurozu mysi

kolin napsal:

Kolik takovych rozhodnuti tam odhadem muze byt? Funkci, ktere hybou kurzorem prece tolik neni?

Pokoušel jsem se to vysvětlit již výše, ale pro jistotu uvedu ještě příklad:

Má změna šířky (anebo vrstvy) segmentu pohnout cursorem?  Zdálo by se, že ne -- na pohled to spolu příliš nesouvisí.  Jenže co když na ten segment ukazovala myš, v důsledku toho k němu cursor (tj. velký kříž) přiskočil, avšak po změně šířky myš ukazuje už mimo segment?  (Analogicky tomu může být u změny vrstvy.)

Podobných nepřímých vazeb v programu skutečně jsou desítky, a ještě horší je, že není zrovna snadné je všechny odhalit.  Právě proto se mi moc nechce do toho zasahovat.

Jiná věc by byla vyhledat a individuálně ošetřit naopak příkazy, které mohou trvat dlouho.  Těch asi bude řádově méně.