aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/interface-curses
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2025-07-13 00:53:58 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2025-07-13 00:53:58 +0300
commit8c6de6cc718debf44f6056a4c34c4fbb13bc5020 (patch)
treea522cb6d5608b3a4ba08fdb8a3f840514eb07281 /src/interface-curses
parent078c1927cffc6514168566c267151a8d6eca7367 (diff)
downloadsciteco-8c6de6cc718debf44f6056a4c34c4fbb13bc5020.tar.gz
allow changing the default clipboard by setting the `~` integer
* It continues to default to 67 (C), which is the system clipboard. But you can now overwrite it e.g. by adding `^^PU~` to the profile. * This fixes a minor memory leak: If you set one of the clipboard registers in the profile (initializing them as plain registers), the clipboard register had been leaked. The clipboard registers now replace any existing register, while at the same time preserving the numeric part. * All remaining Q-Reg table insertions use a new function teco_qreg_table_insert_unique() which adds an assertion, so that we notice any future possible memory leaks.
Diffstat (limited to 'src/interface-curses')
-rw-r--r--src/interface-curses/interface.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/interface-curses/interface.c b/src/interface-curses/interface.c
index 54ed1d6..1b04f47 100644
--- a/src/interface-curses/interface.c
+++ b/src/interface-curses/interface.c
@@ -1239,7 +1239,8 @@ teco_interface_init_clipboard(void)
if (rc == PDC_CLIP_SUCCESS)
PDC_freeclipboard(contents);
- teco_qreg_table_insert(&teco_qreg_table_globals, teco_qreg_clipboard_new(""));
+ teco_qreg_table_replace(&teco_qreg_table_globals,
+ teco_qreg_clipboard_new(""), TRUE, NULL);
}
gboolean
@@ -1303,8 +1304,10 @@ get_selection_by_name(const gchar *name)
* (everything gets passed down), but currently we
* only register the three standard registers
* "~", "~P", "~S" and "~C".
+ * (We are never called with "~", though.)
*/
- return g_ascii_tolower(*name) ? : 'c';
+ g_assert(*name != '\0');
+ return g_ascii_tolower(*name);
}
/*
@@ -1503,10 +1506,14 @@ teco_interface_init_clipboard(void)
!teco_qreg_table_find(&teco_qreg_table_globals, "$SCITECO_CLIPBOARD_GET", 22)))
return;
- teco_qreg_table_insert(&teco_qreg_table_globals, teco_qreg_clipboard_new(""));
- teco_qreg_table_insert(&teco_qreg_table_globals, teco_qreg_clipboard_new("P"));
- teco_qreg_table_insert(&teco_qreg_table_globals, teco_qreg_clipboard_new("S"));
- teco_qreg_table_insert(&teco_qreg_table_globals, teco_qreg_clipboard_new("C"));
+ teco_qreg_table_replace(&teco_qreg_table_globals,
+ teco_qreg_clipboard_new(""), TRUE, NULL);
+ teco_qreg_table_replace(&teco_qreg_table_globals,
+ teco_qreg_clipboard_new("P"), TRUE, NULL);
+ teco_qreg_table_replace(&teco_qreg_table_globals,
+ teco_qreg_clipboard_new("S"), TRUE, NULL);
+ teco_qreg_table_replace(&teco_qreg_table_globals,
+ teco_qreg_clipboard_new("C"), TRUE, NULL);
}
gboolean