Здравствуйте, c-smile, Вы писали:
c> Вот что означает прокрутка колеса на один оборот ?
c> Варианты:
c> 1. Весь scrollable content c начала до конца, т.е. scroll step = doc size * wheel rotation / 360 c> 2. На некое фиксированное кол-во пикселей , т.е. scroll step = view size * wheel rotation / 360
Начнем с того, как выполнить "прокрутку колеса на один оборот"? Я вот не встречал мышей, которые это позволяют. Все позволяют прокрутить на ход пальца, и это реализует вариант 2. А для варианта 1 производители уже придумали колесо с инерцией. Выбери такую мышь и наслаждайся.
Hardware eventually fails. Software eventually works. ::: avalon/1.0.442
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, c-smile, Вы писали:
c>> Вот что означает прокрутка колеса на один оборот ?
c>> Варианты:
c>> 1. Весь scrollable content c начала до конца, т.е. scroll step = doc size * wheel rotation / 360 c>> 2. На некое фиксированное кол-во пикселей , т.е. scroll step = view size * wheel rotation / 360
W>Начнем с того, как выполнить "прокрутку колеса на один оборот"? Я вот не встречал мышей, которые это позволяют. Все позволяют прокрутить на ход пальца, и это реализует вариант 2. А для варианта 1 производители уже придумали колесо с инерцией. Выбери такую мышь и наслаждайся.
Я не это имею ввиду.
Скажем ты повернул колесо на 30 градусов и view проскролировалось на 30/360 = 1/12 от высоты документа.
Может быть какой понижающий коэффициент, но главное пропорциональный длине документа, а не view.
Здравствуйте, c-smile, Вы писали:
c> Скажем ты повернул колесо на 30 градусов и view проскролировалось на 30/360 = 1/12 от высоты документа.
Насколько мне известно, цифру 30 взять неоткуда. Нет понятия "оборот", есть только "шаг" и все.
c> Может быть какой понижающий коэффициент, но главное пропорциональный длине документа, а не view.
Сомнительная затея. Бываю такие документы, что один шаг будет больше всего view.
Hardware eventually fails. Software eventually works. ::: avalon/1.0.442
SPI_GETWHEELSCROLLLINES
Retrieves the number of lines to scroll when the vertical mouse wheel is moved. The pvParam parameter must point to a UINT variable that receives the number of lines. The default value is 3.
SPI_GETWHEELSCROLLCHARS
Retrieves the number of characters to scroll when the horizontal mouse wheel is moved. The pvParam parameter must point to a UINT variable that receives the number of lines. The default value is 3.
Ну м учитывать скорость вращения (the distance the wheel is rotated), см. мой ответ wildwind.
wParam
The high-order word indicates the distance the wheel is rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user.
Есть некий минимальный шаг. Например 15 пикселей на один щелчок. Если следующий щелчок пришел через небольшой промежуток времени и в том же направлении, что и предыдущий щелчок, то этот шаг временно увеличивается, чтобы можно было быстрой прокруткой колеса промотать побольше, в общем ускорение прокрутки. Имхо, это самое удобное.
И ещё очень большая просьба. Если у вас есть поддержка OS X, разберитесь, как там работает trackpad и сделайте, чтобы прокрутка работала аналогично Safari (и вообще родным скроллам). Столько браузеров поддерживают его криво, по сути только из-за этого не могу ими пользоваться, пусть в мире станет немного лучше.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD> W>Насколько мне известно, цифру 30 взять неоткуда. Нет понятия "оборот", есть только "шаг" и все.
PD> Есть дистанция
Ну а я о чем? Есть количество шагов, есть абстрактный коэффициент, но соотнести это с полным оборотом нельзя.
В линуксовом API скролл вообще серией кликов передается.
Hardware eventually fails. Software eventually works. ::: avalon/1.0.442
Здравствуйте, c-smile, Вы писали:
CS>Скажем ты повернул колесо на 30 градусов и view проскролировалось на 30/360 = 1/12 от высоты документа. CS>Может быть какой понижающий коэффициент, но главное пропорциональный длине документа, а не view.
Обычно скорость прокрутки фиксированная, а не пропорциональная длине документа или видимой области. В системных настройках Windows это по умолчанию три строки/символа за шаг. Если сделать шаг зависимым от длины документа, то колесом будет удобней пользоваться для навигации и невозможно для чтения.
Касательно градусов, у меня нет интуитивного представления о радиусе колеса и я не знаю угловой размер хода пальца. Плюс, есть сенсорные колёса, к которым это понятие не применимо.
Здравствуйте, c-smile, Вы писали:
CS>Вот что означает прокрутка колеса на один оборот ?
В корне неверный вопрос — отсюда у тебя и в корне неверный ответ.
Правильный вопрос: на сколько нужно смещать страницу при прокрутке колеса на 1 градус?
Другими словами, колесо прокрутки НЕ ИМЕЕТ ОБОРОТОВ, ибо никто и никогда их не считал. Значение имеет только "среднестатистический мазок" указательным пальцем — его должно хватать на 1-2 страницы текста (ставится по вкусу).
Здравствуйте, btn1, Вы писали:
B>В корне неверный вопрос — отсюда у тебя и в корне неверный ответ. B>Правильный вопрос: на сколько нужно смещать страницу при прокрутке колеса на 1 градус?
Здравствуйте, c-smile, Вы писали:
CS>Я не это имею ввиду.
CS>Скажем ты повернул колесо на 30 градусов и view проскролировалось на 30/360 = 1/12 от высоты документа. CS>Может быть какой понижающий коэффициент, но главное пропорциональный длине документа, а не view.
дело в том что, драйвер мыши один а сами мыши разные, одна на полный оборот колеса дает 121 импульсов датчика, другая 133, третья 84.
Здравствуйте, c-smile, Вы писали:
CS>Вот что означает прокрутка колеса на один оборот ?
CS>Варианты:
CS>1. Весь scrollable content c начала до конца, т.е. scroll step = doc size * wheel rotation / 360 CS>2. На некое фиксированное кол-во пикселей , т.е. scroll step = view size * wheel rotation / 360
CS>Ловлю себя на мысли что чаще хочется №1. Уж больно пальцем дергать часто приходится. CS>Но все делают №2...
Не для того колесо крутят, чтобы быстро навигироваться в любое место документа.
Для подобной навигации тянут ползунок, ну или нажимают на колесо и двигаю мышь.
Колесо крутят, когда читают документ.
В случае №1 читать большой документ так не получится.
Здравствуйте, Ops, Вы писали:
Ops>Здравствуйте, c-smile, Вы писали:
CS>>Ловлю себя на мысли что чаще хочется №1. Уж больно пальцем дергать часто приходится. CS>>Но все делают №2...
Ops>Если делать 1, то в больших документах 1 щелчок колеса будет больше видимой области.
Это частности. Можно cap поставить на размер view если надо.
Ну вот например touch скроллирование (a.k.a. kinetic) , сильнее/дальше дергаешь — скроллируется заведомо больше view.
Почему с колесом не так.
Здравствуйте, c-smile, Вы писали:
c> Ну вот например touch скроллирование (a.k.a. kinetic) , сильнее/дальше дергаешь — скроллируется заведомо больше view. c> Почему с колесом не так.
Так, если колесо с инерцией. Тач и колесо с инерцией поддерживают оба сценария — и далекую, и близкую прокрутку. А простое колесо — только один. Аппаратное ограничение, смирись.
Hardware eventually fails. Software eventually works. ::: avalon/1.0.442
Здравствуйте, c-smile, Вы писали:
CS>Это частности. Можно cap поставить на размер view если надо.
Это уже костыль будет, пропадет единообразие.
CS>Ну вот например touch скроллирование (a.k.a. kinetic) , сильнее/дальше дергаешь — скроллируется заведомо больше view. CS>Почему с колесом не так.
У типичного колеса ход маленький, сложно найти компромисс между скоростью и точностью, решили в пользу точности.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Я бы сказал, вращение колеса на 1 шелчок/тик подобно прокрутке документа скроллбаром на 1 линию (нажатие на нарисованную стрелочку скроллбара, сообщ. SB_LINEUP/DOWN win32).
Понятия "оборот" там нет, и я думаю, юзер при работе колесом никак не оперирует оболротами, не представляет их себе мысленно. Есть только щелчки, а колесо — не колесо, а бесконечный линейный ползунок.
Здравствуйте, c-smile, Вы писали:
CS>Ловлю себя на мысли что чаще хочется №1. Уж больно пальцем дергать часто приходится.
Пожалуйста, не надо. Из-за твоей инерционной прокрутки уже приходится херову прорву TIS'а писать, чтобы вернуть все к простому поведению, которого хотят юзеры (и громко выражают недовольство). А если еще новые эксперименты добавятся... Хотя, так и так сейчас прокрутку приходится самому писать. Хуже уже быть не может.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, c-smile, Вы писали:
CS>>Ловлю себя на мысли что чаще хочется №1. Уж больно пальцем дергать часто приходится.
А>Пожалуйста, не надо. Из-за твоей инерционной прокрутки уже приходится херову прорву TIS'а писать, чтобы вернуть все к простому поведению, которого хотят юзеры (и громко выражают недовольство). А если еще новые эксперименты добавятся... Хотя, так и так сейчас прокрутку приходится самому писать. Хуже уже быть не может.
Если TIS это tiscript в Sciter то в нем есть scroll-manner() в котором задается как кинетический скрол так и отменяется оный.
Мвтчасть или хотя бы примеры в sdk\samples\scrollbars-n-scrolling тоже полезно глянуть.