View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017619 | Scribus | Scripter | public | 2025-09-06 07:58 | 2025-09-09 19:56 |
| Reporter | ale | Assigned To | ale | ||
| Priority | normal | Severity | minor | Reproducibility | N/A |
| Status | closed | Resolution | fixed | ||
| Product Version | 1.7.1.svn | ||||
| Fixed in Version | 1.7.1.svn | ||||
| Summary | 0017619: Modify the behavior of scripter's selectText() and selectFrameText() | ||||
| Description | Currently, passing a length of 0 to selectText() "just" clears the selection. I suggest to also move the cursor to pos. | ||||
| Tags | No tags attached. | ||||
| Patch | Yes | ||||
| related to | 0017618 | new | [PATCH] Modify the behavior of scripter's getSelectedTextRange() |
|
|
the attached patch: - removes some dead code - sets the cursor position after having created a new selection (as it happens when selecting with the mouse or keyboard) - if the length of the selection is 0, then just move the cursor to that position (and remove any existing selection) select-text-with-0-length.diff (1,262 bytes)
From 96725481f39c7b2311435b3c088760c87bc0b618 Mon Sep 17 00:00:00 2001
From: ale rimoldi <ale@graphicslab.org>
Date: Sat, 6 Sep 2025 17:13:52 +0200
Subject: selectText() accepts 0 as length and just sets the cursor position;
always set the selection at the end of the selection
diff --git a/scribus/plugins/scriptplugin/cmdtext.cpp b/scribus/plugins/scriptplugin/cmdtext.cpp
index de47752b8..bd6d35393 100644
--- a/scribus/plugins/scriptplugin/cmdtext.cpp
+++ b/scribus/plugins/scriptplugin/cmdtext.cpp
@@ -1273,21 +1273,10 @@ PyObject *scribus_selecttext(PyObject* /* self */, PyObject* args)
PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot select text in a non-text frame", "python error").toLocal8Bit().constData());
return nullptr;
}
- /* FIXME: not sure if we should make this check or not
- if (start > ende)
- {
- PyErr_SetString(PyExc_ValueError, QString("Selection start > selection end").toLocal8Bit().constData());
- return nullptr;
- }
- */
item->itemText.deselectAll();
- if (selcount == 0)
- {
- item->HasSel = false;
- Py_RETURN_NONE;
- }
item->itemText.select(start, selcount, true);
- item->HasSel = true;
+ item->itemText.setCursorPosition(start + selcount);
+ item->HasSel = (selcount != 0);
Py_RETURN_NONE;
}
|
|
|
Thanks, looks sensible. I applied your patch with a small modification and I also changed the behavior of selectFrameText() for consistency. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2025-09-06 07:58 | ale | New Issue | |
| 2025-09-06 15:17 | ale | Note Added: 0053005 | |
| 2025-09-06 15:17 | ale | File Added: select-text-with-0-length.diff | |
| 2025-09-06 15:18 | ale | Summary | Modify the behavior of scripter's selectText() => [PATCH] Modify the behavior of scripter's selectText() |
| 2025-09-06 15:18 | ale | Patch | No => Yes |
| 2025-09-07 10:32 | jghali | Summary | [PATCH] Modify the behavior of scripter's selectText() => [PATCH] Modify the behavior of scripter's selectText() and selectFrameText() |
| 2025-09-07 10:32 | jghali | Note Added: 0053006 | |
| 2025-09-07 10:32 | jghali | Assigned To | => ale |
| 2025-09-07 10:32 | jghali | Status | new => resolved |
| 2025-09-07 10:32 | jghali | Resolution | open => fixed |
| 2025-09-07 10:32 | jghali | Fixed in Version | => 1.7.1.svn |
| 2025-09-07 17:40 | jghali | Summary | [PATCH] Modify the behavior of scripter's selectText() and selectFrameText() => Modify the behavior of scripter's selectText() and selectFrameText() |
| 2025-09-07 19:48 | ale | Relationship added | related to 0017618 |
| 2025-09-09 19:56 | cbradney | Status | resolved => closed |