Add support for datalist#385
Conversation
|
生成AIに頼った部分があり、まだ精査ができていない。 の部分を変更しないで、現在の延長上で対処する方向性も検討してから、こちらの方針の方が良いとなったら精査する。 |
|
元々ではあるのだが、Chromimumが出力する画面の拡大率のポップアップで+-ボタンを押したときも、右下の拡大率が連動しない。 |
|
マウスのホイール操作による拡大縮小に対応するために、CEF側のウィンドウメッセージをフックして、ホイール操作による拡大縮小であればChronosの親ウィンドウに投げ直すという処理をしていた。ただ、それだと不十分で、前述のように、CEFが表示する拡大率のポップアップの+-で拡大率を操作したとき、Chronosの表示する右下の拡大率が連動しない(Chronos側の処理が呼ばれないため)。このCEFが表示する拡大率のポップアップについては、イベントハンドラーなども用意されていない。そのため、Chronos側でポーリングしてCEFが保持している拡大率が変わっているかどうかを確認する方式をとることとした。ポーリング間隔を250msとしたので、拡大してから右下の拡大率に反映されるまで最大250msかかるが、通常の使用では問題がないはずである。 メッセージをフックする方式では影響範囲が大きいが(潜在的に全ての操作に関わる)、こちらの方式の方が影響範囲が小さくて済む。そのため、メッセージをフックする方法はやめて、こちらの方式に統一する。 |
|
設定ファイルのDefaultZoomSizeが効かなくなっている。 |
The datalist does not work when using external_message_pump and multi_threaded_message_loop is false. We should modify multi_threaded_message_loop to true and do not use external_message_pump. When multi_threaded_message_loop is true, shortcut keys and mouse wheels become to not work. This patch adds some extra modification for them. * Transfer CEF's shortcut keys used by Chronos to Chronos * Sync to CEF's zoom magnification by polling.
330cbeb to
b47b31e
Compare
| m_nBrowserID = 0; | ||
| m_bDevToolsWnd = FALSE; | ||
| m_bFindNext = FALSE; | ||
| m_iZoomTimerID = 1367; |
There was a problem hiding this comment.
値はユニークなら何でも良い。マクロ定義の方が良いかも。
There was a problem hiding this comment.
マクロにした。
それによりメンバ変数を定義する意味がなくなったので、このメンバ変数は削除した。
| for (const auto& [key, value] : m_mapScaleToZoomSize) | ||
| { | ||
| double diff = value - dNewZoom; | ||
| if (diff < 0.0) diff = -diff; |
There was a problem hiding this comment.
It might be better diff = std::abs(diff) because -0.0 will be converted into +0.0.
| m_cefBrowser = browser; | ||
| m_nBrowserID = nBrowserId; | ||
| this->PostMessage(WM_SIZE); | ||
| SetTimer(m_iZoomTimerID, 250, NULL); |
There was a problem hiding this comment.
Use proper macro definition for 250 msec.
| { | ||
| if (value == m_dbZoomSize) | ||
| double diff = value - m_dbZoomSize; | ||
| if (diff < 0.0) { |
There was a problem hiding this comment.
diff = std::abs(diff); might be better.
There was a problem hiding this comment.
Instead of diff, delta might be meaningful for numeric operations.
再現しているようにみえる。 |
|
datalistの挙動で気になった些細な違いについてメモ
たんにベースとしているcefのバージョン違いの影響かもしれない。 |
3ef7bae to
b96c984
Compare
ネイティブ版でChronosDefault.confを編集して試されていますか? |
Which issue(s) this PR fixes:
#384
Related: #151
What this PR does / why we need it:
This is a patch to add support for datalist of HTML5.
The datalist does not work when using external_message_pump and multi_threaded_message_loop is false.
We should change multi_threaded_message_loop to true and do not use external_message_pump.
When multi_threaded_message_loop is true, shortcut keys and mouse wheels become to not work.
This patch adds some extra modification for them.
How to verify the fixed issue:
The steps to verify: