[スレッド全体]

2014/4/16 (水) 23:33:38 Viu89r9VV  
Mozilla/5.0 (Windows NT 6.1; rv:28.0) Gecko/20100101 Firefox/28.0
[2152] 不具合:「開きません」のキャンセルが存在しません
環境(Environment): Windows 7, サクラエディタ 2.1.1.1

前回ファイルを「UTF-8」で開き、今回「SJIS」で開こうとした場合、以下の警告メッセージが表示されます。

----------------------------------------
文字コード情報
パス\ファイル名.txt

このファイルを文字コード SJIS で開こうとしていますが、前回は別の文字コード UTF-8 で開かれています。前回と同じ文字コードを使いますか?

・[はい(Y)] =UTF-8
・[いいえ(N)]=SJIS
・[キャンセル]=開きません


[はい] [いいえ]
----------------------------------------

しかし、「キャンセル」のボタンが存在しないため、キャンセルできません。画面右上に [×] マークは存在しますが、グレー アウトしていて押せません。これは不具合ということで よろしいのでしょうか。報告しておきます。

2014/4/19 (土) 23:27:52 novice  
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
[2153] Re:不具合:「開きません」のキャンセルが存在しません
▼ Viu89r9VVさん
> しかし、「キャンセル」のボタンが存在しないため、キャンセルできません。画面右上に [×] マークは存在しますが、グレー アウトしていて押せません。これは不具合ということで よろしいのでしょうか。報告しておきます。

patchを登録しました。
http://sourceforge.net/p/sakura-editor/patchunicode/800/

2014/4/20 (日) 17:05:00 神楽  
Mozilla/5.0 (X11; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0
[2154] Re2:不具合:「開きません」のキャンセルが存在しません
▼ noviceさん
> ▼ Viu89r9VVさん
> > しかし、「キャンセル」のボタンが存在しないため、キャンセルできません。画面右上に [×] マークは存在しますが、グレー アウトしていて押せません。これは不具合ということで よろしいのでしょうか。報告しておきます。
>
> patchを登録しました。
> http://sourceforge.net/p/sakura-editor/patchunicode/800/

ANSI版(1.6.6.0)にはキャンセルの説明があり、キャンセルボタンもあります。
ANSI版の仕様に合わせた方が良いのではないでしょうか?

2014/4/20 (日) 17:50:43 novice  
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
[2155] Re3:不具合:「開きません」のキャンセルが存在しません
▼ 神楽さん
Unicode版は、r1587でキャンセルが削除されたようです。
http://sourceforge.net/p/sakura-editor/code/1587/

PatchUnicodeは未登録で、掲示板にログが残ってましたが、キャンセルの削除については特に記載が見つかりませんでした。
http://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?log=unicode&v=950

2014/5/8 (木) 06:21:50 神楽  
Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0
[2165] Re4:不具合:「開きません」のキャンセルが存在しません
▼ noviceさん
2.1.1.1も同じ挙動だったのですが、2.1.1.2で文字コード情報の
メッセージダイアログがアクティブの時に、
Ctrl+Cでダイアログタイトルバー通りの「文字コード情報」とコピーされず、
「(保存されていません)」と「(印刷プレビューでのみ使用できます)」が
Ctrl+Cする度に、交互に繰り返されます。
1.6.6.0ではタイトルバー通りにコピーされますので、できれば対策をお願い致します。

2014/5/8 (木) 20:38:59 LR4  
Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0
[2166] Re5:不具合:「開きません」のキャンセルが存在しません
ちゃんと検証したわけではないのでアレですが…

> 「(保存されていません)」と「(印刷プレビューでのみ使用できます)」が
> Ctrl+Cする度に、交互に繰り返されます。


これ、メッセージボックス出しているときにエディタウィンドウのアクティブ/非アクティブ切替が発生し、
CEditWnd::UpdateCaption()
 → CSakuraEnvironment::ExpandParameter()
が呼ばれてメッセージバッファの書き換え(CLoadStringでのバッファリサイクル)が起きているせいではないでしょうか。

メッセージボックス上でCtrl+Cされるたびに、MessageBox APIが引数の文字列ポインタを直接参照しているのかな?、と思うわけです。
メッセージ本文のほうが無事なのは、MYMESSAGEBOXが本文を別のバッファにコピーしてMessageBox APIに渡しているからかも。

2014/5/9 (金) 17:42:18 LR4  
Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0
[2168] Re6:不具合:「開きません」のキャンセルが存在しません
> メッセージ本文のほうが無事なのは、MYMESSAGEBOXが本文を別のバッファにコピーしてMessageBox APIに渡しているからかも。

案の定、[共通設定]-[強調キーワード]の[整理]ボタンを押したときに
表示されるメッセージボックスで、本文のほうに同様の症状が出ました。

下記のように、CSakuraEnvironment::ExpandParameter()で
コール時に毎回ではなく、言語切替時だけLoadStringするように
変更したところ、自環境では改善しました。

Index: sakura_core/env/CSakuraEnvironment.cpp
===================================================================
--- sakura_core/env/CSakuraEnvironment.cpp	(リビジョン 3706)
+++ sakura_core/env/CSakuraEnvironment.cpp	(作業コピー)
@@ -90,11 +90,22 @@
 	const CEditDoc* pcDoc = CEditDoc::GetInstance(0); //###
 
 	// Apr. 03, 2003 genta 固定文字列をまとめる
-	const wstring	PRINT_PREVIEW_ONLY		= LSW( STR_PREVIEW_ONLY );	//L"(印刷プレビューでのみ使用できます)";
+	static HINSTANCE s_hRsrc = NULL;
+	static wstring	PRINT_PREVIEW_ONLY		= L"";	//L"(印刷プレビューでのみ使用できます)";
+	static wstring	NO_TITLE				= L"";	//L"(無題)";
+	static wstring	NOT_SAVED				= L"";	//L"(保存されていません)";
+
+	// 初回と言語切替時に文字列をロードする
+	HINSTANCE hRsrc = CSelectLang::getLangRsrcInstance();
+	if( s_hRsrc != hRsrc ){
+		s_hRsrc = hRsrc;
+		PRINT_PREVIEW_ONLY		= LSW( STR_PREVIEW_ONLY );
+		NO_TITLE				= LSW( STR_NO_TITLE1 );
+		NOT_SAVED				= LSW( STR_NOT_SAVED );
+	}
+
 	const int		PRINT_PREVIEW_ONLY_LEN	= PRINT_PREVIEW_ONLY.length();
-	const wstring	NO_TITLE				= LSW( STR_NO_TITLE1 );	//L"(無題)";
 	const int		NO_TITLE_LEN			= NO_TITLE.length();
-	const wstring	NOT_SAVED				= LSW( STR_NOT_SAVED );	//L"(保存されていません)";
 	const int		NOT_SAVED_LEN			= NOT_SAVED.length();
 
 	const wchar_t *p, *r;	//	p:目的のバッファ。r:作業用のポインタ。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.010][st:0.000]