Search
Categories
Articles
Rainmeter関連
ファイル置き場
お知り合いなど

スポンサーサイト

--.--.-- | スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Rainmeter-dev] issue 111

2009.09.27 | Rainmeter-dev // Issue/マルチモニタ関連

2 Comments

r229で入れた変更がどうやらバグを生んでいたようで、バタバタですが取り急ぎその部分の変更を取り消しました。
WebParserでの単純な勘違いによるコピペミスもそうですけど、なんだか変更するたびにどこかバグを埋め込んでる感じでダメダメですね……。
[Measure]の置き換えの挙動修正も、今まで動いてたものが動かなくなることもあって、もう少し後方互換性を考慮した形での修正も含めてからにしたほうがよかったなぁと……)

今回のバグは、自分の環境の設定では起こらないものでした……。

/*
** OnMove
**
** Stores the new place of the window so that it can be written in the config file.
**
*/
LRESULT CMeterWindow::OnMove(WPARAM wParam, LPARAM lParam) 
{
    // Store the new window position
    m_ScreenX = (SHORT)LOWORD(lParam);
    m_ScreenY = (SHORT)HIWORD(lParam);
/*
    if(m_Dragging)
    {
        OutputDebugString (_T("OnMove Dragging\n"));
    }
    else
    {
        OutputDebugString(_T("OnMove No Dragging\n"));
    }
*/
 
    if (m_SavePosition && m_Dragging)
    {
        //TODO: Recaculate WindowX/Y based on position flags
        //m_WindowX = m_ScreenX;
        //m_WindowY = m_ScreenY;
        ScreenToWindow();
        WriteConfig();
    }
    m_Dragging = false;
 
    return 0;
}

OnMove()はWM_MOVEが送られてきたとき、すなわちウィンドウの移動後に処理されます。
この「ウィンドウの移動後」というタイミングが、「ドラッグ中にウィンドウの内容を表示する」という設定をオンにしているかオフにしているかで変わるようで……。
(この設定はXPだと「画面のプロパティ」-「デザイン」-「効果...」にあります)

オフ(うちの環境)だと、ドラッグ中にはまったく送られてこず、ボタンを離すとWM_MOVEが送られてきます。
オンだと、ドラッグしてウィンドウを動かしている最中でも、たぶんその説明の通り、ウィンドウの内容を表示するために何度もWM_MOVEが送られてきます。オフのほうだけを確認して、てっきり「ドラッグ中には送られてこないんだ」と勘違いしてました。

赤字の "m_Dragging = false;" は、ドラッグが終わってもm_Draggingがそのままtrueを維持し続ける変な状態を修正しようと入れたのですが(コード上はOnLeftButtonDown()でm_Draggingがtrueにされ、OnLeftButtonUp()でfalseにリセットするようになっているけれど、ボタン押下からドラッグに遷移すると、ドラッグが終わってもOnLeftButtonUp()が呼ばれないので、リセットされずtrueのままになっている)、WM_MOVEが1度しか飛んでこないか、何度も飛んでくるかで話が全然違ってきます。

オフだと、ドラッグが終わってからWM_MOVEが飛んでくるので、ドラッグ終了位置を書きだしてm_Draggingをクリアして終わります。
オンだと、ドラッグ中に飛んでくる最初のWM_MOVEで現在値を書き出してm_Draggingをクリアしてしまい、その後のドラッグが終わったときのWM_MOVEでドラッグ終了位置を書き出せずに終わってしまいます。結果、refreshなどをすると、ドラッグ終了位置から最初に書き出した位置にジャンプしてしまうような(位置が全くセーブされていないような)挙動になります。

環境依存な問題ならまだしも、基本的なシステム設定の違いでこういうバグを埋め込んじゃうのはいただけないですね……。反省。
正直なところ、trueを維持していようが、動作としては特に問題なさそうではあったので、そのままにしておいてもよかったわけで(特に1.1正式版リリース間近なのに)、最近のポカミスラッシュとかいろいろ含めて結構凹み中ですorz

« [Rainmeter] MeasureNetはbits/s? それともBytes/s? いろいろと修正中 »

- Comments
2 Comments

凹むことなんかないですよ
みんな頼りにしてるんですから。

目先の新機能の実装にばかり気を取られているメンバーの中で、spxさんのように堅実にバグ取りに着手するところはプログラマの鏡だと思いますし、オープンソースプロジェクトには欠かせない大切な人材だと私は思っています。

どうか嫌気を差さずにガンバッてください!!

by kenz0 | 09 28, 2009 - URL [ edit ]

>kenz0さん
ありがとうございます。その言葉が励みになります。
やはり、英語でやり取りをする負荷が馬鹿にならない状況で、あまりフォーラムには書きこめてないんですよね……。そういう部分もあって、いろいろと考えちゃった部分もあります。

とりあえずは、まずは今までのように考えなどをブログにまとめていこうかなと思っています。

by furu | 09 29, 2009 - URL [ edit ]

管理者にだけ表示を許可する
- Trackbacks
0 Trackbacks


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。