@bobfrankston/rmfmail 1.2.195 → 1.2.196

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/client/app.js CHANGED
@@ -93,13 +93,17 @@ window.__btick && window.__btick("app.ts module body executing");
93
93
  if ((e.ctrlKey || e.metaKey) && (e.key === "r" || e.key === "R"))
94
94
  return true;
95
95
  // Browser accelerators bound to Ctrl-letter combos that mailx
96
- // doesn't want to forward: P (print), S (save page), U (view
97
- // source), J (downloads), L (focus address bar — n/a in WebView
98
- // but harmless), G (find next). Note: O is "open file" in
99
- // browsers — mailx uses Ctrl+O nowhere meaningful, so block.
96
+ // doesn't want to forward: S (save page), U (view source),
97
+ // J (downloads), L (focus address bar — n/a in WebView but
98
+ // harmless), G (find next). Note: O is "open file" in browsers —
99
+ // mailx uses Ctrl+O nowhere meaningful, so block. P is NOT here:
100
+ // mailx's own Ctrl+P handler prints the focused letter and
101
+ // preventDefaults the browser dialog itself — listing it here
102
+ // stopPropagation'd the event before that handler could run, which
103
+ // is why the print shortcut was dead (Bob 2026-07-30).
100
104
  if (e.ctrlKey || e.metaKey) {
101
105
  const k = e.key.toLowerCase();
102
- if (["p", "s", "u", "j", "l", "g", "o"].includes(k))
106
+ if (["s", "u", "j", "l", "g", "o"].includes(k))
103
107
  return true;
104
108
  }
105
109
  // Alt+Left / Alt+Right = browser back / forward. No use in mailx.
@@ -3931,14 +3935,20 @@ document.addEventListener("keydown", (e) => {
3931
3935
  openCompose("new");
3932
3936
  }
3933
3937
  // Ctrl+P = Print the focused message. preventDefault stops the host
3934
- // browser from printing the whole app window instead of the letter.
3938
+ // browser from printing the whole app window instead of the letter
3939
+ // UNCONDITIONALLY, even with focus in a text field: the WebView's
3940
+ // whole-app print dialog is never what the user wants, and ^P should
3941
+ // print the current letter regardless of where the caret sits.
3935
3942
  if (e.ctrlKey && (e.key === "p" || e.key === "P") && !e.shiftKey && !e.altKey) {
3936
- const t = e.target;
3937
- const inText = t && (t.tagName === "INPUT" || t.tagName === "TEXTAREA" || t.isContentEditable);
3938
- if (!inText) {
3939
- e.preventDefault();
3943
+ e.preventDefault();
3944
+ if (getCurrentMessage()) {
3940
3945
  printCurrentMessage();
3941
3946
  }
3947
+ else {
3948
+ const s = document.getElementById("status-sync");
3949
+ if (s)
3950
+ s.textContent = "Nothing to print — select a message first.";
3951
+ }
3942
3952
  }
3943
3953
  // Ctrl+T = new view tab. The strip is hidden with a single tab (no wasted
3944
3954
  // band), so this is how the second tab gets opened; once 2+ exist the