「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:2405
現在:1


[複数行あり]のTextFieldでウィンドウ再描画に不具合

ページOpenOffice.org FAQの登録ページ
投稿者K.Tsunoda
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2011-01-18 21:46:07 (火)
OSWindows XP(SP3)
依存するページIssue #116648
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

こんにちは。

Windows XP(SP3) & OOo 3.0.0 & IME2010

Calc の Dialog で「複数行あり」のTextField に【全角文字】を入力し、
MsgBox等のウィンドウ(メモ帳等の他アプリのウィンドウでも可)を
TextField を覆うように表示した後、そのウィンドウを消すと、
覆っていたウィンドウ部分の再描画が行われずに、TextField 内の
内容が消えてしまいます。

なお、カーソル位置等で確認できますが、データ自体は残っています。
BackSpace等でTextField内を1文字でも編集すれば再描画されて
消えていた内容が出て来ます。

なお、半角文字のみの場合には症状はでません。
[複数行なし]のTextFieldでは症状はでません。

これが OOo 3.0.0 固有の症状で既に修正済みなのか、最新バージョンでも
同じ症状がでるのか、また、Windows/IMEの環境依存も関係するものなのか、
情報をお持ちの方が居ましたら教えてください。

症状のキャプチャ画像とテスト用のCalcドキュメントを添付しましたので
できましたら、他環境・バージョンでの検証をお願いします。

DialogRepaintBug.gif

再現しませんでした

ike@九州 (2011-01-19 09:07:04 (水))

Vista
OOo 3.2.1
ハードウェアアクセラレーションを使う ON・OFF 両方で
再現しませんでした。

修正されてるのかも知れませんね

Re: 再現しませんでした

K.Tsunoda (2011-01-19 10:04:16 (水))

ありがとうございます。

なるほど、3.2.1 では大丈夫そうですか。

3.0.0 では確実に毎回症状がでてるので苦労してます。

アドイン開発を1年ぶりに昨日から再開してますが、バージョン依存の
新機能を使って、実行可能バージョンを限定しないように、敢えて 3.0.0
に留まって開発してる為、不自由な面も出て来ますね。

とりあえず、MsgBox等の自マクロで処理しているウィンドウへの対処方法
は見つけました。

背景色を「白」にしておいて、MsgBoxを閉じた直後に
  【 文字色を 「 →白→黒 」 】
と切り替えさせる事でユーザーの目を煩わせることなく再描画を促す事が
できました。

   With oDialog.getControl("TextField1").Model
     .TextColor = &HFFFFFF
     .TextColor = &H0
   End With


ただし、メモ帳やブラウザ等、他アプリのウィンドウが被さった後は
当然これでは対処できませんが・・・

他のバージョン等での情報も、もう少し待ってみます。

別PC XP_SP3、Ubuntu

ike@九州 (2011-01-19 10:36:20 (水))

OS 依存もあるかもと

XP_SP3
OOo 3.2.1

Ubuntu
OOo3.2.1

両方再現しました。
Vista は何度やっても再現しません

Win2000とVine_Linuxで再現

Kuma (2011-01-19 13:14:37 (水))

OOo3.2.1を
(1)Vine5.2 Linuxで試験して再現。
(2)Windows2000(pro)SP4で試験して再現。
でした。

OSなんでしょうかね

K.Tsunoda (2011-01-19 14:40:39 (水))

ike@九州さん、Kumaさん、ありがとうございます。

いまのところ、VistaだけOKのようですね。7はどうでしょう?

Vista以降がOKで、XP以前とLinux系がNGということなのかな。

OOo 自体ではなくて、OSとのメッセージの遣り取りが絡んでいる部分
とすると、改修は大変なんでしょうね。

Windows7 も OK でした

ike@九州 (2011-01-24 16:51:30 (月))

知人の Windows7 で再現しませんでした

白黒での対処方法について

はにゃ? (2011-01-25 02:51:41 (火))

com.sun.star.awt.XPaintListener でダイアログが再描写されるときに文字色を変更する方法を利用すれば、他のウィンドウが重なっても元に戻ります。

ありがとうございました♪

K.Tsunoda (2011-01-25 10:33:51 (火))

ike@九州さん、ありがとうございます。

Vista以降がOKで、XP以前とLinux系がNG
これで確定ですね。

はにゃ?さん、XPaintListenerできました♪
自マクロのMsgBox も、メモ帳等の他アプリも、これひとつでクリアできますね。
(でも、尻拭いで、いちいち、こんなマクロを書かないといけないのは面倒ですね)

XPaintListener を組み込んだマクロを添付します(ファイル名"2"の方です)。
issue 書こうかなと思ってた途中だったんで、解説は英語になってます。
(翻訳ソフト頼りなので、通じるか否かは・・・)

再現テスト・回避策1(MsgBoxのみ)・回避策2(他アプリ)の
マクロを用意しました。

同じダイアログを使いまわしていますので、イベントルーチンは
MsgBoxのコマンドボタンも動的作成になっています。

モジュール内のイベントルーチン名に MsgBox1,MsgBox2,MsgBox3 と
敢えて番号を付している理由は下記記事を参照してください。
「Private と Public、そして動的イベントリスナーの問題」
http://blog.livedoor.jp/addinbox/archives/51221997.html

まとめ

K.Tsunoda (2011-01-25 19:23:39 (火))

下記ブログにまとめました。

「[複数行あり] の TextField には要注意!」
http://blog.livedoor.jp/addinbox/archives/51604969.html

(マクロブック内の説明も日本語にしてあります)

あとは、issue か!
これもユーザー登録とかをしてからでしたっけ・・・

issue 登録しました。

K.Tsunoda (2011-01-27 12:26:51 (木))

[ issue #116648 ] にて登録しました。

とりあえず、本件はこれで「完了」にします。

PS:[DialogrepaintBug2.ods]内の画像がリンクになっていました。
   申し訳ありません。

お名前:
題名:


添付ファイル: fileDialogRepaintBug2.ods 516件 [詳細] fileDialogRepaintBug2.gif 624件 [詳細] fileDialogRepaintBug.ods 555件 [詳細] fileDialogRepaintBug.gif 908件 [詳細]