V8タブモードで外枠のみの秀丸No.04339
A1 さん 09/10/30 20:26
 
A1 です。お世話になっています。

V8β22 において、タブモード (V8) 時に以下のコードを実行すると、
ウィンドウの外枠だけ(タイトルバーとメニューのみ)描かれた
秀丸が立ち上がります(クライアント領域が描画されません)。

--↓ tabtest.mac -------------------------------------------
    openfile "/n/h/i";  // 非表示・タブ分離
    insert "編集中テキスト";
    showwindow 1;
    // showwindow 1;    // V8β対策
    title "ウィンドウタイトル"; title -1;
    endmacro;
--↑ tabtest.mac -------------------------------------------

この状態で文字を入力しても画面は更新されず、ウィンドウを閉じようとすると、
そのタイミングで(入力された文字も)再描画され、保存を尋ねるダイアログが出ま
す。

メニュー操作は有効ですが、操作の種類により再描画されたりされなかったりします
(後述)。

マクロ 4 行目の "showwindow 1" を有効にすると(2 回繰り返すと)問題なく描画
されます。

「動作環境→トラブル対策→その他のトラブル対策」で
「タブモードを V7.xx 以下の方式にする」を選んだ場合は発生しません。
また openfile の引数を変えてタブを分離しない場合にも当該タブは正しく描画され
ます。

対策としては showwindow を繰り返すだけで回避できるのですが、
あまり気持ちの良いものではないです。 (^^;

御検討をお願いします。

                                                                    (A1)

------------------------------------------------------------

・試用環境

    (1) V8.0β21 整数版     @ Vista 32SP1
    (2) V8.0β21 整数版     @ Vista 64SP1
    (3) V8.0β21 整数版64   @ Vista 64SP1
    (4) V8.0β22 整数版     @ Vista 32SP1

自作マクロ※では β8の頃に既に症状が出ていました。

    ※ステルス状態で起動して中身が揃ってから見せるというものです。

メイン環境が Vista64 のため、64bit版のβが出るまで様子見していましたが、
OS はあまり関係なかったようです(メニュー操作等は (4) で確認しました)。

・再描画されるメニュー操作の例

    「ウィンドウ▼」
        「縦に並べる」
        「横に並べる」
        「重ねて表示」
        「並べて表示」
    「表示▼」
        「タブモード」

・再描画されないメニュー操作の例

    「ウィンドウ▼」
        「全部最小化」
        「ウインドウ分割上下」
    「表示▼」
        「ファンクションキー」
        「ツールバー」
        「ステータスバー」
        「行番号」
        「ルーラー」


[ ]
RE:04339 V8タブモードで外枠のみの秀丸No.04353
秀丸担当 さん 09/11/02 12:10
 

>V8β22 において、タブモード (V8) 時に以下のコードを実行すると、
>ウィンドウの外枠だけ(タイトルバーとメニューのみ)描かれた
>秀丸が立ち上がります(クライアント領域が描画されません)。

マクロの通りにして再現させることができました。
報告ありがとうございます。
助かりました。
β23で修正させていただきます。

[ ]
RE:04353 V8タブモードで外枠のみの秀丸No.04362
A1 さん 09/11/02 20:02
 
>β23で修正させていただきます。

宜しくお願いします。

[ ]
RE:04353 V8タブモードでの描画No.04433
A1 さん 09/11/10 17:47
 
>β23で修正させていただきます。

A1 です。報告が遅れました。(β24 …)

V8β23,24 に於いて、エントリの最初に提示したコードは期待通りの動作となりまし
たが、
報告のきっかけになった自作マクロにおいて、不具合が出たために問題箇所を絞り込
んでいました。

結論から言うと、V8 タブモードにて「ステルス秀丸」をタブ分離で立ち上げた場合に

    (a) ステルス状態での文字サイズの変更(とそれに伴う再計算※)が表示
        (showwindow 1)まで一部反映されない。
        マクロによるパラメータ取得にも影響している。

            ※折り返しの設定を「ウィンドウ幅に合わせる」とした状態における
            折り返し文字数の再計算のこと(今回これしか見てません m(__)m)

    (b) 1 回目の showwindow 後でも、反映されない要素が残る(描画が乱れる)。
    (c) 「showwindow 1」を 2 回繰り返すと何故か正しく計算・描画される。

というものです。別の不具合というよりも、隠れていたものが露出したという印象で
す。

回避策は前回同様、「 showwindow を繰り返す」です。 (^^;

御検討をお願いします。

                                                                   (A1)

-- 拙い実験結果(長いです) ------------------------------------------------
----------

・試用環境

    (1) V8.0β24 整数版     @ Vista 32SP1   Desktop: 1440x900   ←断らない限
り、こちら
    (2) V8.0β24 整数版64   @ Vista 64SP1   Desktop: 1920x1200

●ステルス状態からゆっくり表示

以下のコードは、ステルス状態で開始した秀丸でウインドウサイズを設定し、
数秒の間に(showwindow を繰りかえして)表示するというものです。

    --↓ tabtest2.mac -------------------------------------------
    openfile "/n/h/i";  // 非表示・タブ分離
    // ファイルタイプ別の設定
    config "xShowLineNo:- xRuler:+ xAutoAdjustOrikaeshi:1 xOutline:-";  //
ウィンドウ幅に合わせる
    // フォント
    config "xFont:(MS ゴシック) xFontSize:20";
    configcolor "[0][0]:0xFF8000 [0][1]:0x000000";  // (見易くする為)黒バック
    setwindowsize 122, 20;  // 幅と高さ

    // *********************
    sleep 1000;     // この間は表示されない
    insert "折り返し(showwindow 前): "+str(width)+"\n";
    sleep 1000;

    showwindow 1;
    sleep 1000;
    insert "折り返し(showwindow 1 回目): "+str(width)+"\n";
    sleep 1000;

    showwindow 1;   // V8β
    sleep 1000;
    insert "折り返し(showwindow 2 回目): "+str(width)+"\n";
    sleep 1000;

    endmacro;
    --↑ tabtest2.mac -------------------------------------------

V8タブモードにて実行し、動作を眺めると、1 回目の showwindow 1 では描画が不完
全で、
(前回の tabtest.mac 同様)2 回目の showwindow 1 でやっと揃うという挙動です。

実行結果は次のようになります。([] 内は環境 (2) の結果)

    --↓ --------------------------------------------------------
    折り返し(showwindow 前): 105        [141]       (…NG)
    折り返し(showwindow 1 回目): 105    [141]       (…NG)
    折り返し(showwindow 2 回目): 121    [121]       (…OK)
    --↑ --------------------------------------------------------

表示されるのは(キーワード width で取得する)折り返し文字数ですが、
 2 回目の showwindow 1 で意図通りの文字数になる(描画も問題ない)ものの、
直前まで折り返し文字数が過少に※なっています。

    ※(1),(2) 両環境において、V7 タブモードでは 3 つとも 121 と出ます。

2 回目の showwindow 1 から 4 行分をコメントアウトすると、
マクロ終了時点での秀丸ウィンドウはこんな状態になります。

    1.  タイトル・メニュー・ツールバー・タブ・垂直スクロールバー
        (≒上の方のアイテム)は描画されている。

    2.  ファンクションキー・ステータスバー・水平スクロールバー
        (≒下の方のアイテム)は描画されていない。

    3.  テキスト部分の幅が(表示のみでなくマクロ側から見ても)設定※と合って
ない。
        その分描画領域が欠ける(タブを閉じる [×] ボタンもずれている)。

            ※行番号等は省いてあるので setwindowsize で
            指定した分の大半が使われるはず

コメントアウトを戻して 5 行目のフォントサイズの指定を(少し小さめに)
"xFontSize:15" とすると、実行結果は

    --↓ --------------------------------------------------------
    折り返し(showwindow 前): 131                    (…NG)
    折り返し(showwindow 1 回目): 131                (…NG)
    折り返し(showwindow 2 回目): 121                (…OK)
    --↑ --------------------------------------------------------

となります。今度は折り返し文字数が過大です。

このことから、

    デフォルトのウィンドウ幅から、フォントの大小に応じて折り返し文字数を加減
していたが、
    setwindowsize の時点で再計算されず 1 回目の showwindow の後まで残ってし
まった。

かのように思えるのですが、どうでしょうか?

●一旦表示→ステルス状態での折り返し再計算

次に tabtest2.mac の 9 行目以降を変更して、tabtest3.mac とします。
一旦ウィンドウを表示してから、再びステルスに戻って文字サイズを変更するという
ものです。

    --↓ tabtest3.mac (部分) ------------------------------------
    // *********************
    insert "折り返し(showwindow 前): "+str(width)+"\n";

    showwindow 1;
    // showwindow 1;    // V8β
    insert "折り返し(showwindow 後): "+str(width)+"\n";

    showwindow 0;
    config "xFontSize:15";
    insert "折り返し(FontSize=15): "+str(width)+"\n";
    config "xFontSize:20";
    insert "折り返し(FontSize=20): "+str(width)+"\n";

    showwindow 1;
    endmacro;
    --↑ tabtest3.mac (部分) ------------------------------------

これを実行すると、([] 内は環境 (2))

    --↓ --------------------------------------------------------
    折り返し(showwindow 前): 105    [141]           (…NG)
    折り返し(showwindow 後): 105    [141]           (…NG)
    折り返し(FontSize=15): 131      [176]           (…NG)
    折り返し(FontSize=20): 105      [141]           (…NG)
    --↑ --------------------------------------------------------

となります。やはり文字数が合いません。
「// V8β」と付されている 2 回目の showwindow 1 を有効にすると

    --↓ --------------------------------------------------------
    折り返し(showwindow 前): 105                    (…NG)
    折り返し(showwindow 後): 121                    (…OK)
    折り返し(FontSize=15): 152                      (…OK)
    折り返し(FontSize=20): 121                      (…OK)
    --↑ --------------------------------------------------------

となります。showwindow 1 を 2 度繰り返すことで(再びステルスに戻っても)
以降の文字数は正しく計算されています。


[ ]
RE:04433 V8タブモードでの描画No.04436
秀丸担当 さん 09/11/11 09:36
 

>    (a) ステルス状態での文字サイズの変更(とそれに伴う再計算※)が表示
>        (showwindow 1)まで一部反映されない。
>        マクロによるパラメータ取得にも影響している。
>
>            ※折り返しの設定を「ウィンドウ幅に合わせる」とした状態における
>            折り返し文字数の再計算のこと(今回これしか見てません m(__)m)
>
>    (b) 1 回目の showwindow 後でも、反映されない要素が残る(描画が乱れる)。
>    (c) 「showwindow 1」を 2 回繰り返すと何故か正しく計算・描画される。

詳細なご報告ありがとうございます。
全く同じように再現させることができました。
確かに非表示状態のsetwindowsizeが反映されていませんでした。
β25でまた修正させていただきます。

[ ]
RE:04436 V8タブモードでの描画No.04466
A1 さん 09/11/13 17:31
 
>確かに非表示状態のsetwindowsizeが反映されていませんでした。

β25 にて期待通りの動作になることを確認しました(32/64bit 共)。

「秀ジタル時計」 (syn さん作) の似せ物を作っていた時 (^^; に
表示が上手くいかないのが報告のキッカケでしたが、これで動くようになりました。

対応ありがとうございました。

                                                            (A1)


[ ]
RE:04339 V8タブモードでステルスから最大No.04562
A1 さん 09/11/24 19:48
 
A1 です。たびたびすみません。V8タブモード絡みです。
今度は最大化 (showwindow 3) です。
やはりステルスからは showwindow が 2 回要るようです。 (^^;

ご検討をお願いします。

                                                (A1)

-----------------------------------------------------------

・試用環境

    V8.0β26 整数版     @ Vista 32SP1   Desktop: 1440x900

    ※64bit版も似た挙動ですが、きちんと確認していません
    ※A1 の環境だけでしたら、ごめんなさい

●(A) β25,26 にて、非表示の状態からいきなり最大化しようとして
以下のコードを実行すると、描画がおかしく※なります。

    ※タイトルバーとメニューのみ最大化(何故かキャプションは描かれない)して
    その下に通常サイズのクライアント領域(タブ含む)という状態。

    --↓ tabtest4.mac -------------------------------------------
    openfile "/h/i";    // 分離しなければ正常に表示
    showwindow 3;       // ここでは崩れる
    // showwindow 3;    // ここで揃う
    endmacro;
    --↑ tabtest4.mac -------------------------------------------

2 回目の showwindow を有効にすると正常になります。

●(B) [動作環境>高度なウィンドウ>最大化時にキャプションとメニューを消す] を
有効にして実行すると、(本来残る)タブまで消えてしまう、というより
エディット部分自体がデスクトップ領域をはみ出して※しまいます。

    ※マクロ終了後にそのウィンドウで文字を打ったり
    改行したりすると、上の行が切れて表示される。
    (A) の場合とは異なり、「通常サイズ」ではない
    (付随するスクロールバーも最大化されている)。

これも 2 回目の showwindow を有効にすると正常になります。


[ ]
RE:04562 V8タブモードでステルスから最大No.04569
秀丸担当 さん 09/11/25 13:02
 

>●(A) β25,26 にて、非表示の状態からいきなり最大化しようとして
>以下のコードを実行すると、描画がおかしく※なります。

ありがとございます。
マクロで再現させることができました。
β27で修正させていただきます。

>●(B) [動作環境>高度なウィンドウ>最大化時にキャプションとメニューを消す] を
>有効にして実行すると、(本来残る)タブまで消えてしまう、というより
>エディット部分自体がデスクトップ領域をはみ出して※しまいます。

タブが消えることが再現できました。
エディット部分がはみ出すというのはよくわかりませんでしたが、おそらく同じ
修正で直ると思います。
これもβ27で修正させていただきます。

[ ]
RE:04569 V8タブモードでステルスから最大No.04580
A1 さん 09/11/25 21:04
 
A1です。説明が不足していました。

>エディット部分がはみ出すというのはよくわかりませんでしたが、おそらく同じ
>修正で直ると思います。

(B) の条件で以下のコードを実行すると、先頭の行が欠けます。

    --↓ tabtest5.mac -------------------------------------------
    openfile "/h/i";
    config "xRuler:-";
    showwindow 3;
    // showwindow 3;
    insert "Line1\nLine2\nLine3\nLine4";    // 上部が欠ける
    endmacro;
    --↑ tabtest5.mac -------------------------------------------

config 文でのルーラー表示を変更すると

    "xRuler:-": "Line2" の下半分から見える
    "xRuler:+": "Line1" の下半分から見える(ルーラーの高さ分違う?)

となります。

どうも「タブが消えて残りの要素で全画面化した」というより、
「座標原点が画面外にズレてしまっている」印象です。

この挙動について「エディット部分がはみ出す」という表現を
していましたが、これでは言葉が足りませんでした。
すみませんでした。

>これもβ27で修正させていただきます。

よろしくお願いします。

                                                            (A1)

[ ]
RE:04580 V8タブモードでステルスから最大No.04681
A1 さん 09/12/02 16:48
 
A1です。報告が遅れました。

>>これもβ27で修正させていただきます。
>よろしくお願いします。

β27にて期待の動作になることを確認しました。
ありがとうございました。
                                                          (A1)

[ ]