Qtでダーティフラグ管理、自前でイベントの上位への伝搬作らなきゃかなって思ってたら、QWidget::setWindowModified()というのがあり、これは親子階層を辿ってトップレベルウィンドウまで反映してくれるっぽい。
ボンクラプログラマー
頭とお腹が弱い。
最近は個人鯖の @shibafu528 がメインです。
⚠️ CW設定のない下品な発言が非常に多いです。これは仕様ですのでご了承下さい。
ℹ️ spam対策でフォロー承認制にしています。上の一文が構わないという方ならお気軽にどうぞ。
FINAL FANTASY XIV 関連の著作物は
(C) SQUARE ENIX CO., LTD. All Rights Reserved.
Qtでダーティフラグ管理、自前でイベントの上位への伝搬作らなきゃかなって思ってたら、QWidget::setWindowModified()というのがあり、これは親子階層を辿ってトップレベルウィンドウまで反映してくれるっぽい。
ということは、QWidget単位でユーザー操作によって保存の必要がある変更が発生したかに注意を払い、それを報告すればOKだ
おまけ機能として、ウィンドウタイトルに*マークや(macOSなら)閉じるボタンに黒丸を付けてくれるっぽい
さて、これをやるためにはウィンドウタイトルにプレースホルダを埋めないといけないらしいんですが、Windowsアプリでも参考にしてくるか…
今この場でKateを見た感じだと ${filename} ${modifiedMark} - Kate
クロスプラットフォーム開発に耐えうる売り物にするにはこういう配慮も大事なのかもしれない
Windows使ってないから気づいてなかったけど、今2.4.1か。無事、GitHub移行後のリリースを迎えたんだなあ。
長らく「インストーラは微妙に古い」「exe単体で拾うとちょっと新しい」だったのが、GitHub移行を機にいろいろ整えたのか、リリース時にはCIで最新のインストーラが常に作られるようになってる
まじでGitHub移行間際のサクラエディタ、開発が生きてるのか全く分からないかんじ(主要コミッターは一応生きてるのは分かるし、一応コミットもあったんだけど、SFじゃあね……)だったのが、GitHub移ってから色々と目に見えるようになった
見れば分かるっちゃ分かるんだけど、活気があるとは思えないしリリースも無いしなーって感じだった
アスタリスクの位置に派閥あるなーと感じてたが、前置派の主張は「タスクバーの頭に確実に出る」か、なるほど。
Qt、QApplicationのプロパティに設定しておけば全てのウィンドウタイトルのsuffixとしてアプリ名を付けてくれる機能があるのに気づいた
器用なのが、手動でウィンドウタイトルにsuffix付けてる場合、検出してダブらないようにしてくれる……何でそこ手が込んでるのw
ところでユーザーに明示的操作で保存をさせたいわけでなくこちらでオートセーブをしたいのが最終目標なので、結局変更の発生をハンドリングできる必要があり、その場合QtのwindowModifiedは使えないことが分かってしまった
しかもバグってて親に伝搬しないというオチまで付いていた。ワロス。
[QTBUG-20150] setWindowModified(true) does not propagate to parents - Qt Bug Tracker
https://bugreports.qt.io/browse/QTBUG-20150
これは数学の問題では?しかし俺は1Aすらまともにできないから詰んだ!wに遭遇して死体になったshibafu528が都内で発見された
このアカウントは、notestockで公開設定になっていません。
なんで俺は毎回、BEASTの新刊が出る度に火鳥作品をチェックする呪いにかかっているのか
果たして、これが適用されるのはいつになるのか……つかチケットcloseになりおった
https://youtrack.jetbrains.com/issue/JBR-2310#focus=Comments-27-4260299.0-0
php-cgi.exeをIISのFastCGIに噛ませて使う以外に、php.exeをcomposerなどのCLI実行に普通に使うので、バイナリリリース引き継がれないとちと辛いやね。
このアカウントは、notestockで公開設定になっていません。
Quotation/LongestCocoa: FindTheLongestIdentifierNameInCocoaFramework
https://github.com/Quotation/LongestCocoa
職場の先輩に言われて気づいたんですが、Qt5のプラットフォーム中立の保存ダイアログ、あいつ拡張子自動補完しないのか……!
この見かけでSave押したら「test.floraws」になってほしいやん?ならないらしいです。
Win32のGetSaveFileName()とか使ってる感覚だと補完されてほしくないですか??
KDE Frameworks環境、Windows、macOSでは普通に補完されるので、ピュアQtだけがカスなのでは説ある
うーん、ファイルフィルタに*.*があるわけでもなし、拡張子で終わってなかったらくっつけちゃえばいいか。
Windows環境では、GetSaveFileName()が使われるはずなので勝手に補完されても違和感はない。
KF5環境は、なんか気を効かせてるだけだと思う。
macOSは知らん。
QFileDialog::setDefaultSuffix()を呼ぶしかなさそうなので、やります…
ところで:簡易呼び出し用のstaticメソッドを使っているので、これをちまちま初期化して呼び出す手続きに置き換えないといけません
さんきゅーおまさのり Add extension to workspace filename on save by shibafu528 · Pull Request #69 · shibafu528/florarpc
https://github.com/shibafu528/florarpc/pull/69/files
Arch x KDE Frameworks 5
Manjaro x OpenBox
Manjaro x GTK2
Windows 10
macOS Catalina