ファイルマネージャ枠のクリック動作が変No.40170
fzok4234 さん 22/12/13 17:20
 
ファイルマネージャ枠のプロジェクトにおいて、列挙されている項目を開くときに、
ある時は
シングルクリックだけで開くこともあれば、ある時はダブルクリックしないといけな
いことも
あって、項目のクリック動作が不安定です。

Windows のエクスプローラーのファイルアイコンなどのクリック動作が正常であるこ
とから、
マウス本体やマウスドライバーには問題が無いみたいです。


環境は、
 ・秀丸エディタ: 9.20β5 Float x64
 ・OS: Windows 10 Pro 1909 x64
です。



[ ]
RE:40170 ファイルマネージャ枠のクリックNo.40176
秀丸担当 さん 22/12/14 14:40
 
こちらで何回か試してみた限りでは、うまく再現できず、わからないです。
もし再現方法がわかったら教えてもらえると助かります。
そうなる可能性が無いか見てみたところでは、もしマクロの実行がどこかにあったら、
seteventnotifyによって選択項目をマウスやキー以外の方法で実行という可能性はあ
りそうでした。

[ ]
RE:40176 ファイルマネージャ枠のクリックNo.40177
fzok4234 さん 22/12/14 16:39
 
> こちらで何回か試してみた限りでは、うまく再現できず、わからないです。
> もし再現方法がわかったら教えてもらえると助かります。

再現方法の詳細についてです。まず、プロジェクトファイル HmBook.hmbook は以下
のように
ターゲットファイルを相対パスで指定しています。

 //type=project
 "Project.ps1",name="Project.ps1"
 "HmBook.hmbook",name="HmBook.hmbook"
 "CSharp.list",name="CSharp.list"
 "C#",group,expand
  "CSharp\Namespace.cs",name="Namespace"
  "Properties",group,expand
   "CSharp\Properties\AssemblyInfo.cs",name="AssemblyInfo"
  "Basic",group,expand
   "CSharp\Basic\Namespace.cs",name="Namespace"
   "Objects",group,expand
    "CSharp\Basic\Objects\Namespace.cs",name="Namespace"
    "CSharp\Basic\Objects\InvalidObjectException.cs",name="InvalidObjectExc
eption"
    "CSharp\Basic\Objects\NullableUtility.cs",name="NullableUtility"
    "CSharp\Basic\Objects\NullUtility.cs",name="NullUtility"
    "Cloning",group,expand
     "CSharp\Basic\Objects\Cloning\Namespace.cs",name="Namespace"
     "CSharp\Basic\Objects\Cloning\CloneDepth.cs",name="CloneDepth"
     "CSharp\Basic\Objects\Cloning\CloneOption.cs",name="CloneOption"
     "CSharp\Basic\Objects\Cloning\Cloner.cs",name="Cloner"
     "CSharp\Basic\Objects\Cloning\ICloneable.cs",name="ICloneable"
     "CSharp\Basic\Objects\Cloning\CloneException.cs",name="CloneException"
     "CSharp\Basic\Objects\Cloning\InvalidCloneOptionException.cs",name="In
validCloneOptionException"

次に、このプロジェクトファイルを自動的に読み込む秀丸マクロ Edit.mac は以下の
通りです。

 debuginfo 2 ;
 setcompatiblemode
     (
             0x00000003
         |   0x0000000C
         |   0x00020000
         |   0x00080000
         |   0x00100000
         |   0x00200000
         |   0x00400000
         |   0x00800000
         |   0x04000000
         |   0x08000000
     )
 ;
 
 #hmExplorerPane = loaddll( ( hidemarudir + @"\HmExplorerPane.dll" ) )   ;
 if ( #hmExplorerPane ) {
     if (
         !   dllfunc(
                 #hmExplorerPane     ,
                 @"LoadProject"      ,
                 hidemaruhandle( 0 ) ,
                 ( currentmacrodirectory + @"\HmBook.hmbook" )
             )
     ) {
         debuginfo ( @"プロジェクトを読み込めません。" + "\U0000000A" )  ;
     }
     
     freedll #hmExplorerPane ;
 } else {
     debuginfo ( @"ファイルマネージャ枠を初期化できません。" + "\U0000000A"
 )    ;
 }
 
 endmacro    ;
 

そして、通常は以下のバッチファイル Edit.cmd を使って秀丸エディタの起動と同時
に上記の
マクロを実行してプロジェクトを開きます。

 @ECHO OFF
 SETLOCAL ENABLEDELAYEDEXPANSION
 SET ErrorLevelOfCmd=0
     REM このバッチファイルのパスを取得する。
     SET ThisFilePath=
     IF /I "%~$Path:0" EQU "" (
         IF /I "%~x0" EQU "" (
             FOR %%I IN ("%~n0.cmd") DO (
                 SET ThisFilePath=%%~f$Path:I
             )
         ) ELSE (
             SET ThisFilePath=%~f0
         )
     ) ELSE (
         SET ThisFilePath=%~f$Path:0
     )
     REM このディレクトリのパスを取得する。
     SET ThisDirectoryPath=
     FOR %%I IN ("!ThisFilePath!") DO (
         SET ThisDirectoryPath=%%~dpI
     )
     REM このバッチファイルのベース名を取得する。
     SET ThisBaseName=
     FOR %%I IN ("!ThisFilePath!") DO (
         SET ThisBaseName=%%~nI
     )
     
     REM 秀丸マクロのパスの取得と存在チェック。
     SET AppFilePath=
     FOR %%I IN ("!ThisDirectoryPath!\.\!ThisBaseName!.mac") DO (
         SET AppFilePath=%%~fI
     )
     IF NOT EXIST "!AppFilePath!" (
         (ECHO 秀丸マクロ "!AppFilePath!" が存在しません。) 1>&2
         SET ErrorLevelOfCmd=-1
         GOTO EndOfCmd
     )
     
     REM Whereのパスの取得と存在チェック。
     SET Where=!SystemRoot!\System32\where.exe
     IF NOT EXIST "!Where!" (
         (ECHO Whereの実行ファイル "!Where!" が存在しません。) 1>&2
         SET ErrorLevelOfCmd=-2
         GOTO EndOfCmd
     )
     
     REM Whereで秀丸エディタのパスを取得する。
     SET HostAppPath=
     FOR /F "usebackq tokens=1 delims=" %%I IN (`CALL "!Where!" "hidemaru"
`) DO (
         SET HostAppPath=%%~I
         GOTO EndOfHostAppPathLoop
     )
     :EndOfHostAppPathLoop
     SET HostAppExists=0
     IF DEFINED HostAppPath (
         IF /I "!HostAppPath!" NEQ "" (
             IF EXIST "!HostAppPath!" (
                 SET HostAppExists=1
             )
         )
     )
     IF /I "!HostAppExists!" EQU "0" (
         (ECHO 秀丸エディタがパスの通ったディレクトリにインストールされてい
ません。) 1>&2
         SET ErrorLevelOfCmd=-3
         GOTO EndOfCmd
     )
     
     REM 秀丸エディタを起動しマクロを実行する。
     START "" "!HostAppPath!" /x?"!AppFilePath!"
     SET ErrorLevelOfCmd=!ERRORLEVEL!
 :EndOfCmd
 EXIT /B !ErrorLevelOfCmd!
 

症状を再現させるような使い方についてですが、まず秀丸エディタをタブモードに設
定の上で
HmBook.hmbook に登録してあるファイルを予めいくつか開いた状態で「デスクトップ
保存」を
実行し、秀丸エディタを一旦全終了させます。
        ↓
Edit.cmd を実行します。秀丸エディタが起動してプロジェクトが開いた状態となり
ますが、
まだファイルは何も開かれていません。この時点ではプロジェクトに登録したファイ
ルは
ダブルクリックでのみ開く状態です。
        ↓
「デスクトップ復元」を実行します。先ほど予め開いていたタブが復元されます。こ
の時点になると、
プロジェクトに登録したファイルがシングルクリックだけで開いたり、シングルクリ
ックで選択して
ダブルクリックで開いたりと動作が不安定になっています。



[ ]
RE:40177 ファイルマネージャ枠のクリックNo.40181
秀丸担当 さん 22/12/14 17:57
 
詳しい再現手順の情報ありがとうございます。
それぞれ手順通りにして試してみたのですが、特に問題は無いようで、わかりません
でした。
他に条件があったら教えてもらえると助かります。

[ ]
RE:40181 ファイルマネージャ枠のクリックNo.40182
fzok4234 さん 22/12/14 18:37
 
当方でいろいろ試してみたところ、フォーカスがテキスト本文にある状態でファイル
マネージャ枠の
登録ファイルをいきなりシングルクリックしたときにそのファイルが開かれる動作が
多発する傾向が
ありました。

フォーカスがファイルマネージャ枠にある状態だと、いくらその中のファイルアイコ
ンをシングルクリック
してもアイコンの選択となる動作となって症状は出ませんでした。



[ ]
RE:40182 ファイルマネージャ枠のクリックNo.40187
秀丸担当 さん 22/12/15 16:09
 
フォーカスが関係あるかもしれないとのことで、そのようにしばらく使ってみていた
のですが、いまのところ再現はしないです。
関係あるかわかりませんが、1つ思い当たったこととして、ブックマークとプロジェ
クトは、表面的にはリストボックスとして振る舞うようになっています。
もしリストボックスと判断して何かするアプリがあったら影響があるかもしれないで
す。
もともとは、読み上げアプリ用に、外部のアプリがリストボックスの項目として読み
上げできるようにしていたものです。

[ ]
RE:40187 ファイルマネージャ枠のクリックNo.40190
fzok4234 さん 22/12/15 20:10
 
うーん... 。

ひょっとしたら当方の常駐アプリ環境が原因なのかもしれません。一応、心当たりの
あるものとして、
 ・カスペルスキー インターネット セキュリティ。
 ・ChatteringCanceler 2.2b2。
を現在使用中です。いずれも現時点で常駐を解除することは、セキュリティ上の観点
からと、マウスの
チャタリングが頻発していることからほぼ不可能な状態です。



[ ]
RE:40190 ファイルマネージャ枠のクリックNo.40191
秀丸担当 さん 22/12/16 16:45
 
情報ありがとうございます。
ChatteringCancelerは、関係がありそうな感じです。
試してみたところでは、やはり再現はできていないのですが、何かあったときの事例
として参考になるので、書いておいてもらえるだけでも助かります。

[ ]