CustomScript

ページ

2024年6月1日土曜日

画像ビューアー 「NeeView」41.2 更新しました

 画像ビューアー NeeView を 41.2 に更新しました。ほぼ不具合修正のみです。

41.2

(2024-05-31)

変更

  • 7z.dll を ver 24.06 に更新

不具合修正

  • サムネイルレイアウトでのリスト切替時にフォーカスが正しく設定されない不具合修正
  • ページリストの検索フィルター更新不具合を修正

36 件のコメント:

  1. 仕様といわれればそれまでなのですが、
    現バージョンでは(39か40くらいから?)パネルとメインビューの境界線もフォーカスの対象になっています。
    私がどんくさいのか、意図せず(たぶんTABキーとかで)フォーカスした状態で←→キーを押して、パネルの幅が変わってしまうことがよくあります。
    境界線をフォーカス対象にする必要性はそれ程ないように思うのですが、どうでしょうか?

    返信削除
    返信
    1. キーボード操作できるのがスプリッターコントロールの標準の挙動のため仕様になります。ご了承ください。

      削除
  2. お世話になってます。
    検索オプションのサブフォルダーを含めるがちゃんと動いてないように思えます。
    修正をお願いします。

    返信削除
    返信
    1. ご報告ありがとうございます。
      ですが、問題を確認できませんでした。よろしければ詳細を教えていただけないでしょうか。

      削除
    2. クイックアクセス
      フォルダ1━┳━フォルダ2━━┳━アーカイブA
            ┣━アーカイブ1 ┣━アーカイブB
            ┣━アーカイブ2 ┗━アーカイブC
            ┗━アーカイブ3

      ズレてないといいのですが、サブフォルダーを含めず
      クイックアクセスに登録してあるフォルダー1を読み込むと
      アーカイブ1~3がツリーに表示され、サブフォルダーを含めると
      アーカイブ1~3とA~Cが表示されるはずと思うのですが
      1~3しか表示されません。
      たまになにかの拍子に読み込まれることもあったのですが
      いつの間にかサブフォルダー部分が表示されなくなっています。

      あと多重起動をしているのですが、サブフォルダーを含めるのチェックが
      クライアント同士で同期化されているようなので
      できましたら個別でチェックできるようにしてほしいです。

      仕様の解釈の不一致でしたら、申し訳有りません。長文失礼しました。

      削除
    3. 「検索オプション」の「サブフォルダーを含める」は、検索を実行したときのみ反映されます。
      検索ボックスに "/re ." を入力すれば全てのファイル名に一致するのでサブディレクトリも含めた一覧になります。ちなみにこの検索キーワードを含めた状態でクイックアクセスに登録可能です。

      削除
  3. いつも便利に利用させてもらっています。

    「設定 > ブック > 移動 > ページ移動準備(nv.Config.Book.IsReadyToPageMove)」を ON にした状態でページリストパネルでフィルタすると、エラーで強制終了してしまうことがあるようです。
    ブックによって再現しないケースもりますが、参考までに再現手順とエラーメッセージを以下に記載します。

    <再現手順>
    step 1: ブックを開く
    step 2: (省略可)任意のページへ移動
    step 3: (省略可)現在表示中のページがリストに残るようにフィルタ文字列を入力 ・・・ エラーにはならない
    step 4: 現在表示中のページがリストに残らないようにフィルタ文字列を入力 ・・・ エラーになる
    ※step4では検索結果が空になるようフィルタしたほうが、より再現性が高まる印象です。

    <エラーメッセージ>
    ------------------------------
    OS Version: Microsoft Windows NT 10.0.19045.0 (64bit)
    NeeView Version: 41.2 (.zip)

    System.NullReferenceException: Object reference not set to an instance of an object.
    at NeeView.PageFrames.PageFrameFactory.GetNextPage(PageFrame frame, Int32 direction)
    at NeeView.PageFrames.PageFrameContainerCollection.UpdateContainerNode(LinkedListNode`1 node, LinkedListDirection direction)
    at NeeView.PageFrames.PageFrameContainerCollection.FindOrCreateLatestContainerNode(PagePosition position, LinkedListDirection direction)
    at NeeView.PageFrames.PageFrameContainerCollection.EnsureLatestContainerNode(PagePosition position, LinkedListDirection direction, CreateContainerNodeOptions options)
    at NeeView.PageFrames.PageFrameContainerCollection.UpdateContainer(LinkedListNode`1 node)
    at NeeView.PageFrames.PageFrameBox.FillContainers()
    at NeeView.PageFrames.PageFrameBox.g__UpdateContainers|83_1(LinkedListNode`1 node)
    at NeeView.PageFrames.PageFrameBox.ContainerCollection_CollectionChanged(Object sender, PageFrameContainerCollectionChangedEventArgs e)
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
    at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
    at System.Windows.Threading.DispatcherOperation.InvokeImpl()
    at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    --- End of stack trace from previous location ---
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
    at System.Windows.Threading.DispatcherOperation.Invoke()
    at System.Windows.Threading.Dispatcher.ProcessQueue()
    at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
    at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
    at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
    at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
    at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
    at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
    at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
    at System.Windows.Application.RunDispatcher(Object ignore)
    at System.Windows.Application.RunInternal(Window window)
    at NeeView.App.Main()
    ------------------------------


    また、上記エラーの再現性調査中に気が付いたのですが、ページリストが空の場合に表示されるダミー要素のアイコンにマウスをホバーさせると、巨大なアイコン画像がポップアップするようです。
    ※当該リスト表示モードの「設定 > パネル > パネルリスト項目 > アイコンのポップアップ」を ON に設定していることが前提です
    ※本棚やブックマークパネルでもダミー要素が表示されることがありますが、そちらはアイコンにマウスをホバーさせてもポップアップしませんでした

    返信削除
    返信
    1. ご報告ありがとうございます。
      現象を確認しました。修正します。

      削除
  4. 7-Zip 24.07 が出ていました
    クラッシュバグの修正とのことです

    返信削除
    返信
    1. 情報ありがとうございます。

      削除
  5. animation webpに対応する予定はありますか?
    Susieプラグインも静止画のwebpしか対応してなさそうなので本体で表示できるとありがたいです

    返信削除
    返信
    1. 残念ながら対応の目処は立っておりません。

      削除
  6. いつも便利に利用させてもらっております。
    おそらく40.0以降から本棚パネルにおいて開いていないブックで「名前の変更(M)」を実行すると該当ブックが開かれる挙動になっています。39.5では開かれないことを確認できました。
    当方メインビューを広くとるためにOnBookLoaded.nvjsでパネルを閉じる設定にしていたためファイル名の変更に少し難儀するようになってしまいました。
    以前の挙動に戻すか、名前の変更時にはOnBookLoadedが走らないように変更していただけないでしょうか。

    返信削除
    返信
    1. ご報告ありがとうございます。対応を検討します。

      削除
  7. いつもお世話になってます。
    バグではなく仕様の要望になるのですが
    現状本棚のクイックアクセスやPCをクリックして開くと
    一番上のファイル等が開いてはいないが選択されたような
    状態になりファイルの並び替えをするとそのファイルに追従して
    スクロールされてしまいます。
    そのファイルを選択して開いている状態の時なら追従でもいいと思うのですが
    並び替えてから本棚の一番上から順番に見ようとするとちょっと不便に感じてしまいます。
    説明が下手で申し訳ないですが、改良の検討をお願いします。

    返信削除
    返信
    1. ご要望ありがとうございます。対策を検討します。

      削除
  8. 「設定 > 全般」以下の設定でテキストエディタやWebブラウザが指定できるように、ファイラも指定できたらうれしいです。
    本棚やブックマークパネルのコンテキストメニュー「エクスプローラで開く」での利用を想定しています。

    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討します。

      削除
  9. とても便利に使用させていただいております。有益なアプリの公開ありがとうございます。
    要望となり恐縮なのですが、ファイルの右クリックメニュー「履歴から削除」につきまして、複数ファイルを選択した状態での削除を可能にしていただけないでしょうか。
    多量のファイルを閲覧・整理する際、履歴のチェックマークを便利に活用させていただいてまして、その機能があれば非常に助かります。
    ご検討いただければありがたいです。よろしくお願い致します。

    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討します。

      削除
  10. お世話になっております。
    数年ぶりに更新したらいつの間にかブックを切り替えした時ブックマークが最後に開いたページを表示されるようになっていました。
    どのブックも1ページ目固定していたので不便に感じます。
    以前と同じ感じで使いたいので1ページ目にブックマークを追加したら固定する方法がありましたら教えて下さい。
    よろしくお願い致します。

    返信削除
    返信
    1. 設定の「ページ設定」ページの「ページ位置」を「既定」にしてお試しください。

      削除
    2. 試したら出来ました。
      ありがとうございました。

      削除
  11. 質門です。
    フォルダB2の時にフォルダ2へは親のブックへ移動で進められますが、フォルダ2からはA1orB1へ移動します。
    フォルダ2からはフォルダ1or3へ移動とするには、どのように設定すれば良いでしょうか。
    前、次のフォルダーに移動と前、次の表示ブックに移動では思った動作にならなかった為、可能ならばご教示お願い出来ませんか。

    フォルダ0
     →フォルダ1
      LフォルダA1
     →フォルダ2
      LフォルダB1
      LフォルダB2
     →フォルダ3
      LフォルダC1

    返信削除
    返信
    1. 設定の「移動」ページの「ブック移動を巡回移動にする」がオンになっていませんか?これをオフにしてお試しください。

      削除
    2. 親子間をオフにした方が使いやすかったです。ありがとうございます。

      削除
  12. いつもお世話になってます。

    しおり感覚で好きなページをブックマーク登録していたのが現verでは最後に開いたページにブックマークが自動更新されてしまいます。
    登録したページのままにしたいです。

    1冊の本の中で複数のブックマーク登録が出来る方法があったら教えて下さい。
    例:10ページと50ページにブックマーク登録みたいな感じです。

    返信削除
    返信
    1. プレイリストが該当する機能になります。古いバージョンではページマークと呼ばれていたものとほぼ同じです。

      削除
  13. 再現はできませんがエラー落ちしたのでログを貼っておきます。
    状況は次のブックで連続移動中一つだけ前のブックに戻ったら落ちました。
    感覚としてはうちはRARファイルで固めてるので
    解凍系のエラーやメモリ周りかもしれません。
    7z.dllは24.07を指定しています。
    OS Version: Microsoft Windows NT 10.0.22631.0 (64bit)
    NeeView Version: 41.2 (.zip)

    System.ObjectDisposedException: Cannot access a closed Stream.
    at System.IO.MemoryStream.set_Position(Int64 value)
    at AnimatedImage.FrameRenderer.TryCreate(Stream stream, IBitmapFaceFactory factory, FrameRenderer& renderer)
    at AnimatedImage.Wpf.FrameRendererCreator.TryCreate(BitmapSource image, IUriContext context, FrameRenderer& renderer)
    at AnimatedImage.Wpf.ImageBehavior.GetAnimation(Image imageControl, BitmapSource source)
    at AnimatedImage.Wpf.ImageBehavior.InitAnimationOrImage(Image imageControl)
    at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
    at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
    at System.Windows.BroadcastEventHelper.BroadcastEvent(DependencyObject root, RoutedEvent routedEvent)
    at System.Windows.BroadcastEventHelper.BroadcastLoadedEvent(Object root)
    at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
    at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
    at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
    at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
    at System.Windows.Threading.DispatcherOperation.InvokeImpl()
    at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    --- End of stack trace from previous location ---
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
    at System.Windows.Threading.DispatcherOperation.Invoke()
    at System.Windows.Threading.Dispatcher.ProcessQueue()
    at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
    at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
    at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
    at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
    at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
    at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
    at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
    at System.Windows.Application.RunDispatcher(Object ignore)
    at System.Windows.Application.RunInternal(Window window)
    at NeeView.App.Main()

    返信削除
    返信
    1. ご報告ありがとうございます。調査します。

      削除
  14. こんにちは、便利なソフトのご提供ありがとうございます
    ご質問なのですが、[設定]⇒[ウィンドウ]⇒[ウィンドウタイトル] における、$Scale (画像の表示倍率 (%) はどのような計算式になっていますでしょうか?
    現在表示中の幅のピクセル数÷元の画像の幅のピクセル数×100 のパーセント表示かと思ったのですが、計算が合わずどうやら違うみたいでして
    お手数をおかけいたしますが、よろしくお願いいたします

    返信削除
    返信
    1. その認識で合っています。正確には、ストレッチを「オリジナル サイズ」にしたときを100%とした拡大率となります。

      削除
    2. ご教示ありがとうございます
      ・4320x2160の解像度のディスプレイ
      ・2000x4320, 600dpiの画像を使用
      ・ストレッチがウインドウサイズに合わせる
      ・全画面表示
      上記の状態に設定した状態で画像を表示したところ、最初は50%と表示されることを期待しておりましたが、312%と表示されたのでご質問させていただきました
      NeeViewでは96dpiをベースとして画像のdpiとの倍率を乗じた計算になっているのですね(先ほどコードの箇所(TitleStringService.cs)も確認いたしました)
      600dpi/96dpi=6.25
      0.5*6.25=3.125(312%)
      この度はご回答ありがとうございました

      削除
  15. いつも大変便利に使わせて頂いております。ありがとうございます。

    シームレスループの挙動について気になる点があり、ご報告させて頂きます。
    同一フォルダ内に連番を振った数百の画像がある時、シームレスループをオンにして、PageUp、Downキーを使い、ファイルを1ループ、2ループと閲覧していくと、およそ3周目あたりから表示される画像の順番が狂うようです。
    PageUp、Downキーには10ページずつジャンプするように当てはめております。
    お手すきの際にでもご確認いただければと思います。

    また、最終ファイルを飛びこえてループした時に「ページのループを通知する」にチェックが入っていても、シームレスループ時には「ループしました」の表示がされないのは仕様でしょうか。できましたら表示するようにして頂けると個人的に利便性が大変向上します。

    素晴らしいアプリケーションをありがとうございます。
    よろしくお願いいたします。

    返信削除
    返信
    1. ご報告ありがとうございます。現象を確認しました。修正します。
      > ページのループを通知する
      対応を検討いたします。

      削除
    2. お忙しい中お返事ありがとうございました。よろしくお願いいたします。

      削除