The Wayback Machine - https://web.archive.org/web/20220613013705/https://github.com/sakura-editor/sakura/issues/1683
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

「検索マークの切り替え」をすると検索ダイアログの検索設定が変わってしまう #1683

Open
suconbu opened this issue May 27, 2021 · 3 comments

Comments

@suconbu
Copy link
Member

@suconbu suconbu commented May 27, 2021

問題内容

題名のとおりの現象です。
例として「単語単位で検索」のチェックボックスが解除されてしまう様子を動画にしました。
search_condition

普段使っている中で少し煩雑さを感じる部分です。

いちユーザーの感覚からすると「検索ダイアログ」と「検索マークの切り替え」とは直接つながりのない機能に見えるので、検索設定は維持されるのが自然なのではと思いました。

※ヘルプにはオフになることが明記されていますので仕様通りの動作ではあります。
https://sakura-editor.github.io/help/HLP000136.html

再現手順

  1. 検索ダイアログを開き、「単語単位で検索」または「正規表現」にチェックを入れて検索を行う。
  2. メニューから「検索」→「検索マークの切り替え」を実行する。
  3. 検索ダイアログを開くと「単語単位で検索」または「正規表現」のチェックが解除されている。 ★発生

再現頻度

100%

問題のカテゴリ

  • 仕様の問題
  • プログラムの動作上の問題

環境情報

  • OS バージョン
    Windows 10 Home 64bit
  • サクラエディタバージョン
サクラエディタ   v2.4.2.0 32bit dev
(GitHash 062cda8052a9e25488ac2990b3d5b1050452d2fb)
(GitURL [email protected]:suconbu/sakura.git)

      Compile Info: V1928 WPR WIN601/I800/C000/N601
      Last Modified: 2021/5/26 01:39:54

スクリーンショット

@berryzplus
Copy link
Contributor

@berryzplus berryzplus commented May 27, 2021

検索機能は共有メモリ(≒グローバル変数)を経由して実現されているので、
現状では「仕様なのでしゃあないっす」が一時回答になると思います。

「その仕様、おかしくね?」という意見はあってしかるべきですが、
たぶん「おかしくね?」を言うには代案を提示する責任がある気がするのでどうでしょう?です。

@suconbu
Copy link
Member Author

@suconbu suconbu commented May 27, 2021

「その仕様、おかしくね?」という意見はあってしかるべきですが、
たぶん「おかしくね?」を言うには代案を提示する責任がある気がするのでどうでしょう?です。

問題内容の下の方にちょっと書きましたが、「検索マークの切り替えをした後でも検索ダイアログの設定は以前のものが維持される」が使いやすいのではと思いました。

@suconbu
Copy link
Member Author

@suconbu suconbu commented May 28, 2021

共有メモリ上の検索設定を直接書き換えているのではなく、一旦 CViewCommander のメンバーとしてコピー後、書き換えをしているようでした。
これなら共有メモリ側の検索設定は変わらないはずですが……

if( m_pCommanderView->m_nCurSearchKeySequence < GetDllShareData().m_Common.m_sSearch.m_nSearchKeySequence ){
m_pCommanderView->m_sCurSearchOption = GetDllShareData().m_Common.m_sSearch.m_sSearchOption;
}
m_pCommanderView->m_sCurSearchOption.bRegularExp = false; //正規表現使わない
m_pCommanderView->m_sCurSearchOption.bWordOnly = false; //単語で検索しない

その直後で共有メモリの側へ書き戻しがされていました。

m_pCommanderView->m_sCurSearchOption.bRegularExp = false; //正規表現使わない
m_pCommanderView->m_sCurSearchOption.bWordOnly = false; //単語で検索しない
// 共有データへ登録
if( cmemCurText.GetStringLength() < _MAX_PATH ){
CSearchKeywordManager().AddToSearchKeyArr( cmemCurText.GetStringPtr() );
GetDllShareData().m_Common.m_sSearch.m_sSearchOption = m_pCommanderView->m_sCurSearchOption;
}

お試しで 1529 行目をコメントアウトすると自分の期待する動作にはなったのですが、
意図的にされているように見えるので、もしかすると書き戻しをしなければいけない理由が何かあるのかもしれないですね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants