[education/rkward] rkward: More cppchekc warnings

Thomas Friedrichsmeier null at kde.org
Sat Jan 31 08:17:04 GMT 2026


Git commit 07a30a15fb16bbdcc8b8a93662aaaeaa6e747cdd by Thomas Friedrichsmeier.
Committed on 31/01/2026 at 08:16.
Pushed by tfry into branch 'master'.

More cppchekc warnings

M  +1    -1    rkward/dataeditor/rkeditor.h
M  +1    -1    rkward/dataeditor/rkeditordataframe.h
M  +3    -4    rkward/dataeditor/rkvareditmodel.h
M  +1    -1    rkward/dataeditor/twintable.h
M  +1    -1    rkward/dataeditor/twintablemember.h
M  +1    -1    rkward/dialogs/rkerrordialog.cpp
M  +2    -2    rkward/misc/editformatdialog.h
M  +4    -4    rkward/misc/editlabelsdialog.h
M  +2    -2    rkward/misc/multistringselector.h
M  +1    -1    rkward/misc/rkradiogroup.cpp
M  +1    -1    rkward/misc/rksaveobjectchooser.h
M  +1    -1    rkward/plugin/rkabstractoptionselector.h
M  +1    -1    rkward/plugin/rkcheckbox.h
M  +1    -1    rkward/plugin/rkcomponent.h
M  +1    -1    rkward/plugin/rkcomponentcontext.h
M  +1    -1    rkward/plugin/rkcomponentmap.h
M  +10   -10   rkward/plugin/rkcomponentproperties.h
M  +1    -1    rkward/plugin/rkdropdown.h
M  +1    -1    rkward/plugin/rkformula.h
M  +1    -1    rkward/plugin/rkinput.h
M  +1    -1    rkward/plugin/rkmatrixinput.h
M  +1    -1    rkward/plugin/rkoptionset.h
M  +1    -1    rkward/plugin/rkpluginbrowser.h
M  +1    -1    rkward/plugin/rkpluginframe.h
M  +1    -1    rkward/plugin/rkpluginsaveobject.h
M  +1    -1    rkward/plugin/rkpluginspinbox.h
M  +1    -1    rkward/plugin/rkpreviewbox.h
M  +1    -1    rkward/plugin/rkradio.h
M  +1    -1    rkward/plugin/rkstandardcomponent.h
M  +2    -2    rkward/plugin/rkstandardcomponentgui.h
M  +1    -2    rkward/plugin/rktabpage.h
M  +1    -2    rkward/plugin/rktext.h
M  +1    -1    rkward/plugin/rkvalueselector.h
M  +1    -1    rkward/plugin/rkvarselector.h
M  +1    -1    rkward/plugin/rkvarslot.h
M  +1    -1    rkward/rbackend/rkbackendtransmitter.h
M  +1    -1    rkward/rbackend/rkfrontendtransmitter.h
M  +1    -0    rkward/rbackend/rkrbackendprotocol_shared.cpp
M  +1    -1    rkward/rbackend/rkwarddevice/rkgraphicsdevice_backendtransmitter.h
M  +1    -1    rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.h
M  +1    -1    rkward/rkconsole.cpp
M  +1    -1    rkward/rkconsole.h
M  +2    -5    rkward/robjectviewer.h
M  +1    -1    rkward/windows/katepluginintegration.cpp
M  +1    -1    rkward/windows/rcontrolwindow.h
M  +1    -1    rkward/windows/rkcallstackviewer.h
M  +1    -1    rkward/windows/rkcommandlog.h
M  +1    -1    rkward/windows/rkdebugconsole.h
M  +1    -1    rkward/windows/rkdebugmessagewindow.h
M  +0    -1    rkward/windows/rkfilebrowser.cpp
M  +1    -1    rkward/windows/rkfilebrowser.h
M  +1    -1    rkward/windows/rkhelpsearchwindow.h
M  +2    -2    rkward/windows/rkhtmlwindow.cpp
M  +1    -1    rkward/windows/rkhtmlwindow.h
M  +2    -2    rkward/windows/robjectbrowser.h

https://invent.kde.org/education/rkward/-/commit/07a30a15fb16bbdcc8b8a93662aaaeaa6e747cdd

diff --git a/rkward/dataeditor/rkeditor.h b/rkward/dataeditor/rkeditor.h
index 7892a215c..67daf3de7 100644
--- a/rkward/dataeditor/rkeditor.h
+++ b/rkward/dataeditor/rkeditor.h
@@ -29,7 +29,7 @@ class RKEditor : public RKMDIWindow {
   protected:
 	RKEditor(QWidget *parent);
 
-	virtual ~RKEditor();
+	~RKEditor() override;
 
   public:
 	/// flushes all pending edit operations and syncs the data to R. Implement in the child classes
diff --git a/rkward/dataeditor/rkeditordataframe.h b/rkward/dataeditor/rkeditordataframe.h
index c9dee2a5c..7de4cda6a 100644
--- a/rkward/dataeditor/rkeditordataframe.h
+++ b/rkward/dataeditor/rkeditordataframe.h
@@ -31,7 +31,7 @@ class RKEditorDataFrame : public TwinTable {
 	@param parent parent widget */
 	RKEditorDataFrame(const QString &new_object_name, QWidget *parent);
 	/** destructor */
-	~RKEditorDataFrame();
+	~RKEditorDataFrame() override;
 
 	void flushChanges() override;
 
diff --git a/rkward/dataeditor/rkvareditmodel.h b/rkward/dataeditor/rkvareditmodel.h
index 946535aba..0b15603ee 100644
--- a/rkward/dataeditor/rkvareditmodel.h
+++ b/rkward/dataeditor/rkvareditmodel.h
@@ -26,7 +26,6 @@ class RKRowNames;
 class RKVarEditModelBase : public QAbstractTableModel {
   public:
 	explicit RKVarEditModelBase(QObject *parent) : QAbstractTableModel(parent), var_col_offset(0) {};
-	virtual ~RKVarEditModelBase() {};
 
 	virtual RKTextMatrix getTextMatrix(const QItemSelectionRange &range) const = 0;
 	virtual void blankRange(const QItemSelectionRange &range) = 0;
@@ -44,7 +43,7 @@ class RKVarEditModel : public RKVarEditModelBase, public RObjectListener {
 	Q_OBJECT
   public:
 	explicit RKVarEditModel(QObject *parent);
-	~RKVarEditModel();
+	~RKVarEditModel() override;
 
 	/** set the editor that is using this model. This is useful to find out, e.g. which window should be raised, when calling "Edit" on an object represented in this data-model. Also, the editor will be notified, if all objects in the model have been removed. */
 	void setEditor(RKEditor *editor) { myeditor = editor; };
@@ -161,7 +160,7 @@ class RKVarEditMetaModel : public RKVarEditModelBase {
   protected:
 	friend class RKVarEditModel;
 	explicit RKVarEditMetaModel(RKVarEditModel *data_model);
-	~RKVarEditMetaModel();
+	~RKVarEditMetaModel() override;
 
 	void beginAddDataObject(int index);
 	void endAddDataObject();
@@ -178,7 +177,7 @@ class RKVarEditDataFrameModel : public RKVarEditModel {
 	RKVarEditDataFrameModel(RContainerObject *dataframe, QObject *parent);
 	/** ctor that constructs a new empty data frame */
 	RKVarEditDataFrameModel(const QString &validized_name, RContainerObject *parent_object, RCommandChain *chain, int initial_cols, QObject *parent);
-	~RKVarEditDataFrameModel();
+	~RKVarEditDataFrameModel() override;
 
 	bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override;
 	bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override;
diff --git a/rkward/dataeditor/twintable.h b/rkward/dataeditor/twintable.h
index 7bda4acb1..095c27ffa 100644
--- a/rkward/dataeditor/twintable.h
+++ b/rkward/dataeditor/twintable.h
@@ -32,7 +32,7 @@ class TwinTable : public RKEditor, public RObjectListener, public KXMLGUIClient
 	Q_OBJECT
   public:
 	explicit TwinTable(QWidget *parent = nullptr);
-	~TwinTable();
+	~TwinTable() override;
 	/** Pastes clipboard content to the current table */
 	void paste(RKEditor::PasteMode paste_mode);
 	/** Clear the currently selected cells */
diff --git a/rkward/dataeditor/twintablemember.h b/rkward/dataeditor/twintablemember.h
index 452c16430..88cf5ebf3 100644
--- a/rkward/dataeditor/twintablemember.h
+++ b/rkward/dataeditor/twintablemember.h
@@ -26,7 +26,7 @@ class TwinTableMember : public RKTableView {
 	Q_OBJECT
   public:
 	explicit TwinTableMember(QWidget *parent);
-	~TwinTableMember();
+	~TwinTableMember() override;
 	TwinTableMember *getTwin() { return twin; };
 	/** ends editing. Actually it's just a simple wrapper around QTable::endEdit () */
 	void stopEditing();
diff --git a/rkward/dialogs/rkerrordialog.cpp b/rkward/dialogs/rkerrordialog.cpp
index 19dff4edc..b99ea36eb 100644
--- a/rkward/dialogs/rkerrordialog.cpp
+++ b/rkward/dialogs/rkerrordialog.cpp
@@ -66,7 +66,7 @@ class RKBugzillaReportDialog : public QDialog {
 		QTemporaryFile proxy;
 		proxy.setFileTemplate(QDir::tempPath() + u"/rkwardbugXXXXXX.html"_s); // Force .html-suffix, as it appears to be required on Windows
 		proxy.setAutoRemove(false);
-		proxy.open();
+		RK_ASSERT(proxy.open());
 		QTextStream out(&proxy);
 		out << "<html><head><title>Relaying to " SUBMIT_ADDRESS "</title></head><body onLoad=\"document.getElementById('form').submit();\">\n";
 		out << "<h1>" << i18n("Forwarding you to the KDE bugtracking system") << "</h1>\n";
diff --git a/rkward/misc/editformatdialog.h b/rkward/misc/editformatdialog.h
index 690786b35..30cbd61af 100644
--- a/rkward/misc/editformatdialog.h
+++ b/rkward/misc/editformatdialog.h
@@ -30,7 +30,7 @@ class EditFormatDialog : public QDialog {
 	/** ctor */
 	explicit EditFormatDialog(QWidget *parent);
 	/** dtor */
-	~EditFormatDialog();
+	~EditFormatDialog() override;
 
 	/** initializes the GUI-options from the settings for the variable */
 	void initialize(const RKVariable::FormattingOptions &options, const QString &varname);
@@ -47,7 +47,7 @@ class EditFormatDialogProxy : public QWidget {
 	Q_OBJECT
   public:
 	explicit EditFormatDialogProxy(QWidget *parent);
-	~EditFormatDialogProxy();
+	~EditFormatDialogProxy() override;
 
 	void initialize(const RKVariable::FormattingOptions &options, const QString &varname);
 	RKVariable::FormattingOptions getOptions() const { return options; };
diff --git a/rkward/misc/editlabelsdialog.h b/rkward/misc/editlabelsdialog.h
index a5e9b0677..a8aeb85d7 100644
--- a/rkward/misc/editlabelsdialog.h
+++ b/rkward/misc/editlabelsdialog.h
@@ -24,7 +24,7 @@ class RKVarLevelsTable : public RKTableView {
 	Q_OBJECT
   public:
 	RKVarLevelsTable(QWidget *parent, const RObject::ValueLabels &labels);
-	~RKVarLevelsTable();
+	~RKVarLevelsTable() override;
   public Q_SLOTS:
 	/** cut */
 	void cut();
@@ -44,7 +44,7 @@ class RKVarLevelsTable : public RKTableView {
 class RKVarLevelsTableModel : public QAbstractTableModel {
   public:
 	RKVarLevelsTableModel(const RObject::ValueLabels &labels, QObject *parent);
-	~RKVarLevelsTableModel();
+	~RKVarLevelsTableModel() override;
 
 	int rowCount(const QModelIndex &parent = QModelIndex()) const override;
 	int columnCount(const QModelIndex &parent = QModelIndex()) const override;
@@ -70,7 +70,7 @@ class EditLabelsDialog : public QDialog {
 	@param parent a QWidget parent */
 	EditLabelsDialog(QWidget *parent, const RObject::ValueLabels &labels, const QString &varname);
 
-	~EditLabelsDialog();
+	~EditLabelsDialog() override;
 
 	/** reimplemented to make sure pending edit operations are not lost */
 	void accept() override;
@@ -86,7 +86,7 @@ class EditLabelsDialogProxy : public QWidget {
 	Q_OBJECT
   public:
 	explicit EditLabelsDialogProxy(QWidget *parent);
-	~EditLabelsDialogProxy();
+	~EditLabelsDialogProxy() override;
 
 	void initialize(const RObject::ValueLabels &labels, const QString &varname);
 
diff --git a/rkward/misc/multistringselector.h b/rkward/misc/multistringselector.h
index b6418889e..4025d5bb9 100644
--- a/rkward/misc/multistringselector.h
+++ b/rkward/misc/multistringselector.h
@@ -28,7 +28,7 @@ class RKMultiStringSelectorV2 : public QWidget {
 	Q_OBJECT
   public:
 	explicit RKMultiStringSelectorV2(const QString &label, QWidget *parent = nullptr);
-	virtual ~RKMultiStringSelectorV2();
+	~RKMultiStringSelectorV2() override;
 	void setModel(QAbstractItemModel *model, int main_column = -1);
 	void setAlwaysAddAtBottom(bool always_add_at_bottom) { add_at_bottom = always_add_at_bottom; };
   public Q_SLOTS:
@@ -58,7 +58,7 @@ class MultiStringSelector : public RKMultiStringSelectorV2 {
 	Q_OBJECT
   public:
 	explicit MultiStringSelector(const QString &label, QWidget *parent = nullptr);
-	~MultiStringSelector();
+	~MultiStringSelector() override;
 
 	/** get list of current strings (in the correct order, of course) */
 	QStringList getValues();
diff --git a/rkward/misc/rkradiogroup.cpp b/rkward/misc/rkradiogroup.cpp
index 0d90201c1..98b3f31f2 100644
--- a/rkward/misc/rkradiogroup.cpp
+++ b/rkward/misc/rkradiogroup.cpp
@@ -16,7 +16,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
  *  automatically be removed, in case the button is deleted independent of the controlled widget. */
 class RKRadioGroupButton : public QRadioButton {
   public:
-	explicit RKRadioGroupButton(const QString &label) : QRadioButton(label) {};
+	explicit RKRadioGroupButton(const QString &label) : QRadioButton(label), controlled(nullptr) {};
 	void control(QWidget *controlled) {
 		RKRadioGroupButton::controlled = controlled;
 		controlled->installEventFilter(this);
diff --git a/rkward/misc/rksaveobjectchooser.h b/rkward/misc/rksaveobjectchooser.h
index 06b0f4211..fdde98b85 100644
--- a/rkward/misc/rksaveobjectchooser.h
+++ b/rkward/misc/rksaveobjectchooser.h
@@ -22,7 +22,7 @@ class RKSaveObjectChooser : public QWidget, public RObjectListener {
 	Q_OBJECT
   public:
 	RKSaveObjectChooser(QWidget *parent, const QString &initial);
-	~RKSaveObjectChooser();
+	~RKSaveObjectChooser() override;
 
 	QString currentFullName() const { return current_full_name; };
 	QString currentBaseName() const;
diff --git a/rkward/plugin/rkabstractoptionselector.h b/rkward/plugin/rkabstractoptionselector.h
index 0dd086975..eb0abe778 100644
--- a/rkward/plugin/rkabstractoptionselector.h
+++ b/rkward/plugin/rkabstractoptionselector.h
@@ -23,7 +23,7 @@ class RKAbstractOptionSelector : public RKComponent {
 	Q_OBJECT
   public:
 	RKAbstractOptionSelector(RKComponent *parent_component, QWidget *parent_widget);
-	~RKAbstractOptionSelector();
+	~RKAbstractOptionSelector() override;
 	/** Find the option number with the corresponding string. If not found, returns -1
 	@param option_string the option string to search for
 	@returns the id (0, 1, 2...) of the corresponding option, or -1 if not found */
diff --git a/rkward/plugin/rkcheckbox.h b/rkward/plugin/rkcheckbox.h
index c80d88a23..751691732 100644
--- a/rkward/plugin/rkcheckbox.h
+++ b/rkward/plugin/rkcheckbox.h
@@ -24,7 +24,7 @@ class RKCheckBox : public RKComponent {
 	Q_OBJECT
   public:
 	RKCheckBox(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKCheckBox();
+	~RKCheckBox() override;
 	int type() override { return ComponentCheckBox; };
 	RKComponentPropertyBool *state;
 	QVariant value(const QString &modifier = QString()) override {
diff --git a/rkward/plugin/rkcomponent.h b/rkward/plugin/rkcomponent.h
index 144f217de..74fcdb29a 100644
--- a/rkward/plugin/rkcomponent.h
+++ b/rkward/plugin/rkcomponent.h
@@ -163,7 +163,7 @@ class RKComponent : public QWidget, public RKComponentBase {
 	@param parent_widget The parent QWidget. This may be the same as the parent_component or a different specific widget.. If 0, this RKComponent will be represented by a top-level widget */
 	RKComponent(RKComponent *parent_component, QWidget *parent_widget);
 	/** destructor */
-	virtual ~RKComponent();
+	~RKComponent() override;
 	int type() override { return Component; };
 	/** change notification mechanism. Call this, if something in the component changed that could result in a change in code/values/satisfaction state. Default implementation propagates the change upwards to parent components, if any, but does not do anything further. Reimplement, for instance, to regenerate code */
 	virtual void changed();
diff --git a/rkward/plugin/rkcomponentcontext.h b/rkward/plugin/rkcomponentcontext.h
index 1cf508785..286559792 100644
--- a/rkward/plugin/rkcomponentcontext.h
+++ b/rkward/plugin/rkcomponentcontext.h
@@ -38,7 +38,7 @@ class RKContextHandler : public QObject, public RKComponentBase, public KXMLGUIC
 	/** constructor. Protected. Use RKContextMap::makeContextHandler() instead. */
 	RKContextHandler(QObject *parent, const QDomDocument &gui_xml, const QString &id);
 	/** desctructor. Should be called automatically, as this is QObject */
-	~RKContextHandler();
+	~RKContextHandler() override;
 	/** add a QAction to the context. To be called from RKContext::makeContextHandler(). */
 	void addAction(const QString &id, RKComponentHandle *handle);
   private Q_SLOTS:
diff --git a/rkward/plugin/rkcomponentmap.h b/rkward/plugin/rkcomponentmap.h
index c735e9709..b5314a89a 100644
--- a/rkward/plugin/rkcomponentmap.h
+++ b/rkward/plugin/rkcomponentmap.h
@@ -211,7 +211,7 @@ class RKComponentMap : public QObject, public RKComponentGUIXML, public KXMLGUIC
 	Q_OBJECT
   public:
 	RKComponentMap();
-	~RKComponentMap();
+	~RKComponentMap() override;
 
 	/** adds all Plugins / components in a .pluginmap-file. Also takes care of creating the menu-items, etc.
 	@returns status info of number of plugins (i.e. stand-alone components/menu-entries) added successfully / failed */
diff --git a/rkward/plugin/rkcomponentproperties.h b/rkward/plugin/rkcomponentproperties.h
index 7290d9254..1bebaec8c 100644
--- a/rkward/plugin/rkcomponentproperties.h
+++ b/rkward/plugin/rkcomponentproperties.h
@@ -29,7 +29,7 @@ class RKComponentPropertyBase : public QObject, public RKComponentBase {
 	/** constructor. Pass a valid QObject as parent so the property will be auto-destructed when no longer needed */
 	RKComponentPropertyBase(QObject *parent, bool required);
 	/** destructor */
-	virtual ~RKComponentPropertyBase();
+	~RKComponentPropertyBase() override;
 	/** supplies the current value. Since more than one value may be supplied, modifier can be used to select a value. Default implementation only has  a single string, however. Reimplemented from RKComponentBase */
 	QVariant value(const QString &modifier = QString()) override;
 	/** set the value in string form.
@@ -66,7 +66,7 @@ class RKComponentPropertyBase : public QObject, public RKComponentBase {
 class RKComponentPropertyAbstractList : public RKComponentPropertyBase {
   public:
 	RKComponentPropertyAbstractList(QObject *parent, bool required);
-	virtual ~RKComponentPropertyAbstractList();
+	~RKComponentPropertyAbstractList() override;
 	/** how many items can this property hold? Use default values (0) to remove constraints
 	@param min_num_items Minimum number of items for this property to be valid
 	@param min_num_items_if_any Some properties may be valid, if they hold either no items at all, or at least a certain number of items
@@ -101,7 +101,7 @@ class RKComponentPropertyStringList : public RKComponentPropertyAbstractList {
   public:
 	RKComponentPropertyStringList(QObject *parent, bool required);
 	/** destructor */
-	~RKComponentPropertyStringList();
+	~RKComponentPropertyStringList() override;
 	/** for RTTI. see RKComponentBase::RKComponentTypes */
 	int type() override { return PropertyStringList; };
 	/** reimplemented to return all current strings */
@@ -143,7 +143,7 @@ class RKComponentPropertyBool : public RKComponentPropertyBase {
 	@param default_state value to use, if invalid string value was set */
 	RKComponentPropertyBool(QObject *parent, bool required, bool default_state = true, const QString &value_true = QStringLiteral("true"), const QString &value_false = QStringLiteral("false"));
 	/** destructor */
-	~RKComponentPropertyBool();
+	~RKComponentPropertyBool() override;
 	/** Set this property to the inverted, i.e. true if set to false and vice-versa. Used for the "not" sub-property. */
 	void setInverted(bool invert) { inverted = invert; };
 	/** sets the bool value. Also takes care of notifying dependent components */
@@ -186,7 +186,7 @@ class RKComponentPropertyInt : public RKComponentPropertyBase {
 	@param default_value value to use, if invalid string value was set */
 	RKComponentPropertyInt(QObject *parent, bool required, int default_value);
 	/** destructor */
-	~RKComponentPropertyInt();
+	~RKComponentPropertyInt() override;
 	/** sets the int value. Also takes care of notifying dependent components */
 	bool setIntValue(int new_value);
 	/** set lower boundary. Default parameter will effectively remove the boundary. You should call this *before* connecting to any other properties, so limits can be reconciled */
@@ -234,7 +234,7 @@ class RKComponentPropertyDouble : public RKComponentPropertyBase {
 	@param default_value value to use, if invalid string value was set */
 	RKComponentPropertyDouble(QObject *parent, bool required, double default_value);
 	/** destructor */
-	~RKComponentPropertyDouble();
+	~RKComponentPropertyDouble() override;
 	/** sets the int value. Also takes care of notifying dependent components */
 	bool setDoubleValue(double new_value);
 	/** reimplemented from RKComponentPropertyBase to convert to int value according to current settings */
@@ -292,7 +292,7 @@ class RKComponentPropertyRObjects : public RKComponentPropertyAbstractList, publ
 	/** constructor */
 	RKComponentPropertyRObjects(QObject *parent, bool required);
 	/** destructor */
-	~RKComponentPropertyRObjects();
+	~RKComponentPropertyRObjects() override;
 	/** add an object value */
 	bool addObjectValue(RObject *object);
 	/** Set property to only accept certain classes. If you provide an empty list, all classes will be accepted*/
@@ -375,7 +375,7 @@ class RKComponentPropertyCode : public RKComponentPropertyBase {
 	/** constructor */
 	RKComponentPropertyCode(QObject *parent, bool required);
 	/** destructor */
-	~RKComponentPropertyCode();
+	~RKComponentPropertyCode() override;
 	/** the preprocess code */
 	QString preprocess() { return preprocess_code; };
 	/** the calculate code */
@@ -430,7 +430,7 @@ class RKComponentPropertyConvert : public RKComponentPropertyBool {
   public:
 	/** constructor. Note that this property *requires* an RKComponent as parent (the one at the top of all the source properties) */
 	explicit RKComponentPropertyConvert(RKComponent *parent);
-	~RKComponentPropertyConvert();
+	~RKComponentPropertyConvert() override;
 	int type() override { return PropertyConvert; };
 
 	/** Mode of operation. see setMode () */
@@ -489,7 +489,7 @@ class RKComponentPropertySwitch : public RKComponentPropertyBase {
 	 @param standards the values to match against. Note: Providing an empty list make the switch operate in boolean mode,
 	 switching between the first two sources / values, based on the boolean value of the condition_prop. */
 	RKComponentPropertySwitch(RKComponent *parent, const QStringList &def_values, const QStringList &standards);
-	~RKComponentPropertySwitch();
+	~RKComponentPropertySwitch() override;
 
 	/** set the sources, i.e. the properties to operate on */
 	void setSources(const QString &condition_prop, const QStringList &value_props);
diff --git a/rkward/plugin/rkdropdown.h b/rkward/plugin/rkdropdown.h
index 7be229564..ea22621dc 100644
--- a/rkward/plugin/rkdropdown.h
+++ b/rkward/plugin/rkdropdown.h
@@ -21,7 +21,7 @@ class RKDropDown : public RKAbstractOptionSelector {
 	Q_OBJECT
   public:
 	RKDropDown(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKDropDown();
+	~RKDropDown() override;
 	int type() override { return ComponentDropDown; };
   public Q_SLOTS:
 	// workaround for a qt bug (3.3.7)
diff --git a/rkward/plugin/rkformula.h b/rkward/plugin/rkformula.h
index edb517906..67980ea8c 100644
--- a/rkward/plugin/rkformula.h
+++ b/rkward/plugin/rkformula.h
@@ -28,7 +28,7 @@ class RKFormula : public RKComponent {
 	Q_OBJECT
   public:
 	RKFormula(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKFormula();
+	~RKFormula() override;
 
 	QVariant value(const QString &modifier = QString()) override { return model->value(modifier); };
 	QStringList getUiLabelPair() const override;
diff --git a/rkward/plugin/rkinput.h b/rkward/plugin/rkinput.h
index c5d78e796..e94b9b3c5 100644
--- a/rkward/plugin/rkinput.h
+++ b/rkward/plugin/rkinput.h
@@ -24,7 +24,7 @@ class RKInput : public RKComponent {
 	Q_OBJECT
   public:
 	RKInput(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKInput();
+	~RKInput() override;
 
 	RKComponentPropertyBase *text;
 	QVariant value(const QString &modifier = QString()) override { return (text->value(modifier)); };
diff --git a/rkward/plugin/rkmatrixinput.h b/rkward/plugin/rkmatrixinput.h
index 0e703522c..71e04ae30 100644
--- a/rkward/plugin/rkmatrixinput.h
+++ b/rkward/plugin/rkmatrixinput.h
@@ -25,7 +25,7 @@ class RKMatrixInput : public RKComponent {
 	Q_OBJECT
   public:
 	RKMatrixInput(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKMatrixInput();
+	~RKMatrixInput() override;
 	int type() override { return ComponentMatrixInput; };
 	bool isValid() override { return is_valid; };
 	QVariant value(const QString &modifier = QString()) override;
diff --git a/rkward/plugin/rkoptionset.h b/rkward/plugin/rkoptionset.h
index be1725ec1..d13cdcd88 100644
--- a/rkward/plugin/rkoptionset.h
+++ b/rkward/plugin/rkoptionset.h
@@ -29,7 +29,7 @@ class RKOptionSet : public RKComponent {
 	Q_OBJECT
   public:
 	RKOptionSet(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKOptionSet();
+	~RKOptionSet() override;
 	int type() override { return ComponentOptionSet; };
 	bool isValid() override;
 	/** reimplemented from RKComponent */
diff --git a/rkward/plugin/rkpluginbrowser.h b/rkward/plugin/rkpluginbrowser.h
index 5c3d44e80..06129efee 100644
--- a/rkward/plugin/rkpluginbrowser.h
+++ b/rkward/plugin/rkpluginbrowser.h
@@ -30,7 +30,7 @@ class RKPluginBrowser : public RKComponent {
 	Q_OBJECT
   public:
 	RKPluginBrowser(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKPluginBrowser();
+	~RKPluginBrowser() override;
 
 	RKComponentPropertyBase *selection;
 	QVariant value(const QString &modifier = QString()) override { return (selection->value(modifier)); };
diff --git a/rkward/plugin/rkpluginframe.h b/rkward/plugin/rkpluginframe.h
index 21dc6ba26..9584e3175 100644
--- a/rkward/plugin/rkpluginframe.h
+++ b/rkward/plugin/rkpluginframe.h
@@ -22,7 +22,7 @@ class RKPluginFrame : public RKComponent {
 	Q_OBJECT
   public:
 	RKPluginFrame(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKPluginFrame();
+	~RKPluginFrame() override;
 
 	/** returns the page child elements should be drawn in */
 	QWidget *getPage();
diff --git a/rkward/plugin/rkpluginsaveobject.h b/rkward/plugin/rkpluginsaveobject.h
index 5053a17b0..eddfc91ca 100644
--- a/rkward/plugin/rkpluginsaveobject.h
+++ b/rkward/plugin/rkpluginsaveobject.h
@@ -25,7 +25,7 @@ class RKPluginSaveObject : public RKComponent {
 	Q_OBJECT
   public:
 	RKPluginSaveObject(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKPluginSaveObject();
+	~RKPluginSaveObject() override;
 
 	QVariant value(const QString &modifier = QString()) override;
 	QStringList getUiLabelPair() const override;
diff --git a/rkward/plugin/rkpluginspinbox.h b/rkward/plugin/rkpluginspinbox.h
index 6269aca38..b9d11d0e5 100644
--- a/rkward/plugin/rkpluginspinbox.h
+++ b/rkward/plugin/rkpluginspinbox.h
@@ -23,8 +23,8 @@ class RKPluginSpinBox : public RKComponent {
 	Q_OBJECT
   public:
 	RKPluginSpinBox(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
+	~RKPluginSpinBox() override;
 
-	~RKPluginSpinBox();
 	QVariant value(const QString &modifier = QString()) override;
 	QStringList getUiLabelPair() const override;
 	int type() override { return ComponentSpinBox; };
diff --git a/rkward/plugin/rkpreviewbox.h b/rkward/plugin/rkpreviewbox.h
index 83d8245f4..7717570ef 100644
--- a/rkward/plugin/rkpreviewbox.h
+++ b/rkward/plugin/rkpreviewbox.h
@@ -27,7 +27,7 @@ class RKPreviewBox : public RKComponent {
 	Q_OBJECT
   public:
 	RKPreviewBox(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKPreviewBox();
+	~RKPreviewBox() override;
 	int type() override { return ComponentPreviewBox; };
 	RKComponentPropertyBool *state;
 	QVariant value(const QString &modifier = QString()) override;
diff --git a/rkward/plugin/rkradio.h b/rkward/plugin/rkradio.h
index 8e3ed4562..6992b9504 100644
--- a/rkward/plugin/rkradio.h
+++ b/rkward/plugin/rkradio.h
@@ -19,7 +19,7 @@ class RKRadio : public RKAbstractOptionSelector {
 	Q_OBJECT
   public:
 	RKRadio(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKRadio();
+	~RKRadio() override;
 	int type() override { return ComponentRadio; };
 
   protected:
diff --git a/rkward/plugin/rkstandardcomponent.h b/rkward/plugin/rkstandardcomponent.h
index f4ee31f50..c12f51d2b 100644
--- a/rkward/plugin/rkstandardcomponent.h
+++ b/rkward/plugin/rkstandardcomponent.h
@@ -35,7 +35,7 @@ class RKStandardComponent : public RKComponent {
 	@param filename Filename of the XML-file to construct this component from */
 	RKStandardComponent(RKComponent *parent_component, QWidget *parent_widget, const QString &filename, const QString &id);
 	/** destructor */
-	~RKStandardComponent();
+	~RKStandardComponent() override;
 	/** reimplemented to update code on changes*/
 	void changed() override;
 	/** reimplemented to return true, if the RKStandardComponent is in Wizard mode */
diff --git a/rkward/plugin/rkstandardcomponentgui.h b/rkward/plugin/rkstandardcomponentgui.h
index dd23c3495..ca61f2c17 100644
--- a/rkward/plugin/rkstandardcomponentgui.h
+++ b/rkward/plugin/rkstandardcomponentgui.h
@@ -20,7 +20,7 @@ class RKStandardComponentStack : public QStackedWidget {
   public:
 	/** constructor. */
 	explicit RKStandardComponentStack(QWidget *parent);
-	~RKStandardComponentStack();
+	~RKStandardComponentStack() override;
 	/** see RKStandardComponent::havePage () */
 	bool havePage(bool next);
 	/** see RKStandardComponent::movePage () */
@@ -67,7 +67,7 @@ class RKStandardComponentGUI : public QWidget {
 	Q_OBJECT
   public:
 	RKStandardComponentGUI(RKStandardComponent *component, RKComponentPropertyCode *code_property, bool enslaved);
-	~RKStandardComponentGUI();
+	~RKStandardComponentGUI() override;
 
 	QWidget *mainWidget() { return main_widget; };
 
diff --git a/rkward/plugin/rktabpage.h b/rkward/plugin/rktabpage.h
index bc3213ea4..55a217f08 100644
--- a/rkward/plugin/rktabpage.h
+++ b/rkward/plugin/rktabpage.h
@@ -23,8 +23,7 @@ class RKTabPage : public RKComponent {
 	Q_OBJECT
   public:
 	RKTabPage(const QDomElement &element, RKComponent *parent_component, QTabWidget *parent_widget);
-
-	~RKTabPage();
+	~RKTabPage() override;
 
 	/** @returns the page child elements should be drawn in */
 	QWidget *getPage() { return this; };
diff --git a/rkward/plugin/rktext.h b/rkward/plugin/rktext.h
index 85094e752..bd0dfac18 100644
--- a/rkward/plugin/rktext.h
+++ b/rkward/plugin/rktext.h
@@ -22,8 +22,7 @@ class RKText : public RKComponent {
 	Q_OBJECT
   public:
 	RKText(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-
-	~RKText();
+	~RKText() override;
 
 	RKComponentPropertyBase *text;
 	QVariant value(const QString &modifier = QString()) override { return (text->value(modifier)); };
diff --git a/rkward/plugin/rkvalueselector.h b/rkward/plugin/rkvalueselector.h
index 8631dfa12..ace3c33af 100644
--- a/rkward/plugin/rkvalueselector.h
+++ b/rkward/plugin/rkvalueselector.h
@@ -23,7 +23,7 @@ class RKValueSelector : public RKComponent {
 	Q_OBJECT
   public:
 	RKValueSelector(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKValueSelector();
+	~RKValueSelector() override;
 	int type() override { return ComponentValueSelector; };
 	QVariant value(const QString &modifier = QString()) override;
 	QStringList getUiLabelPair() const override;
diff --git a/rkward/plugin/rkvarselector.h b/rkward/plugin/rkvarselector.h
index c9b638dec..a369f8c83 100644
--- a/rkward/plugin/rkvarselector.h
+++ b/rkward/plugin/rkvarselector.h
@@ -29,7 +29,7 @@ class RKVarSelector : public RKComponent {
 	Q_OBJECT
   public:
 	RKVarSelector(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKVarSelector();
+	~RKVarSelector() override;
 	int type() override { return ComponentVarSelector; };
   private Q_SLOTS:
 	void objectSelectionChanged();
diff --git a/rkward/plugin/rkvarslot.h b/rkward/plugin/rkvarslot.h
index 7ab57a46d..ae49197c2 100644
--- a/rkward/plugin/rkvarslot.h
+++ b/rkward/plugin/rkvarslot.h
@@ -29,7 +29,7 @@ class RKVarSlot : public RKComponent {
 	Q_OBJECT
   public:
 	RKVarSlot(const QDomElement &element, RKComponent *parent_component, QWidget *parent_widget);
-	~RKVarSlot();
+	~RKVarSlot() override;
 	int type() override { return ComponentVarSlot; };
 	QVariant value(const QString &modifier = QString()) override { return (available->value(modifier)); };
 	QStringList getUiLabelPair() const override;
diff --git a/rkward/rbackend/rkbackendtransmitter.h b/rkward/rbackend/rkbackendtransmitter.h
index 0aeb34899..a06c1b37c 100644
--- a/rkward/rbackend/rkbackendtransmitter.h
+++ b/rkward/rbackend/rkbackendtransmitter.h
@@ -16,7 +16,7 @@ class RKRBackendTransmitter : public RKAbstractTransmitter {
 	Q_OBJECT
   public:
 	RKRBackendTransmitter(const QString &servername, const QString &token);
-	~RKRBackendTransmitter();
+	~RKRBackendTransmitter() override;
 
 	void publicmsleep(int delay) { msleep(delay); };
 
diff --git a/rkward/rbackend/rkfrontendtransmitter.h b/rkward/rbackend/rkfrontendtransmitter.h
index b73f1f84f..9edd2ccf0 100644
--- a/rkward/rbackend/rkfrontendtransmitter.h
+++ b/rkward/rbackend/rkfrontendtransmitter.h
@@ -20,7 +20,7 @@ class RKFrontendTransmitter : public RKAbstractTransmitter, public RKROutputBuff
 	Q_OBJECT
   public:
 	RKFrontendTransmitter(RKRBackendProtocolFrontend *frontend);
-	~RKFrontendTransmitter();
+	~RKFrontendTransmitter() override;
 
 	void run() override;
 
diff --git a/rkward/rbackend/rkrbackendprotocol_shared.cpp b/rkward/rbackend/rkrbackendprotocol_shared.cpp
index a9dc26647..c8ffc1855 100644
--- a/rkward/rbackend/rkrbackendprotocol_shared.cpp
+++ b/rkward/rbackend/rkrbackendprotocol_shared.cpp
@@ -17,6 +17,7 @@ RCommandProxy::RCommandProxy(const QString &command, int type) : outer_command(n
 	id = -1;
 	status = 0;
 	interruptible_stage = false;
+	has_been_run_up_to = 0;
 }
 
 RCommandProxy::~RCommandProxy() {
diff --git a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_backendtransmitter.h b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_backendtransmitter.h
index cb494fb44..d5dbac2b7 100644
--- a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_backendtransmitter.h
+++ b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_backendtransmitter.h
@@ -20,7 +20,7 @@ class QLocalSocket;
  Also it provides the namespace for some statics.
  As the protocol is really quite simple (only the backend send requests, only one request at a time), so is the transmitter. */
 class RKGraphicsDeviceBackendTransmitter : public QThread {
-	~RKGraphicsDeviceBackendTransmitter();
+	~RKGraphicsDeviceBackendTransmitter() override;
 
   public:
 	static void kill();
diff --git a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.h b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.h
index 224961b1c..47276be12 100644
--- a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.h
+++ b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.h
@@ -21,7 +21,7 @@ class RKGraphicsDeviceFrontendTransmitter : public QObject {
 	Q_OBJECT
   public:
 	RKGraphicsDeviceFrontendTransmitter();
-	~RKGraphicsDeviceFrontendTransmitter();
+	~RKGraphicsDeviceFrontendTransmitter() override;
 	QString serverName() const { return server_name; };
 	static double lwdscale;
 	static void suppressShowingCreatedWindows(bool suppress) { suppress_windows = suppress; };
diff --git a/rkward/rkconsole.cpp b/rkward/rkconsole.cpp
index 9134e5e21..d6e00db59 100644
--- a/rkward/rkconsole.cpp
+++ b/rkward/rkconsole.cpp
@@ -703,7 +703,7 @@ void RKConsole::userSaveHistory(const QUrl &_url) {
 	}
 
 	QTemporaryFile tempfile;
-	tempfile.open();
+	RK_ASSERT(tempfile.open());
 	tempfile.write(QString(commandHistory().join(QStringLiteral("\n")) + u'\n').toLocal8Bit().data());
 	tempfile.close();
 
diff --git a/rkward/rkconsole.h b/rkward/rkconsole.h
index f3e55bcbf..bbc2188a9 100644
--- a/rkward/rkconsole.h
+++ b/rkward/rkconsole.h
@@ -41,7 +41,7 @@ class RKConsole : public RKMDIWindow, public RKScriptContextProvider {
 	/** Constructor. */
 	RKConsole(QWidget *parent, bool tool_window, const char *name = nullptr);
 	/** Destructor */
-	~RKConsole();
+	~RKConsole() override;
 
 	/** Returns the command currently being edited (not executed yet) */
 	QString currentEditingLine() const;
diff --git a/rkward/robjectviewer.h b/rkward/robjectviewer.h
index 7f1075cfe..154ea3bf7 100644
--- a/rkward/robjectviewer.h
+++ b/rkward/robjectviewer.h
@@ -29,7 +29,7 @@ A simple object viewer. You pass it an object in the constructor. It will extrac
 class RObjectViewer : public RKMDIWindow, public RObjectListener {
 	Q_OBJECT
   public:
-	~RObjectViewer();
+	~RObjectViewer() override;
 
 	RObject *object() { return _object; };
 
@@ -69,7 +69,7 @@ class RObjectViewerWidget : public QWidget {
 	Q_OBJECT
   protected:
 	RObjectViewerWidget(QWidget *parent, RObject *object);
-	virtual ~RObjectViewerWidget();
+	~RObjectViewerWidget() override;
 
   public:
 	void objectKilled() { _object = nullptr; };
@@ -97,7 +97,6 @@ class RObjectViewerWidget : public QWidget {
 class RObjectSummaryWidget : public RObjectViewerWidget {
   public:
 	RObjectSummaryWidget(QWidget *parent, RObject *object) : RObjectViewerWidget(parent, object) {};
-	~RObjectSummaryWidget() {};
 
 	/** reimplemented from RObjectViewerWidget to call "summary" */
 	RCommand *makeCommand() override;
@@ -107,7 +106,6 @@ class RObjectSummaryWidget : public RObjectViewerWidget {
 class RObjectPrintWidget : public RObjectViewerWidget {
   public:
 	RObjectPrintWidget(QWidget *parent, RObject *object) : RObjectViewerWidget(parent, object) {}
-	~RObjectPrintWidget() {};
 
 	/** reimplemented from RObjectViewerWidget to call "print" */
 	RCommand *makeCommand() override;
@@ -117,7 +115,6 @@ class RObjectPrintWidget : public RObjectViewerWidget {
 class RObjectStructureWidget : public RObjectViewerWidget {
   public:
 	RObjectStructureWidget(QWidget *parent, RObject *object) : RObjectViewerWidget(parent, object) {};
-	~RObjectStructureWidget() {};
 
 	/** reimplemented from RObjectViewerWidget to call "str" */
 	RCommand *makeCommand() override;
diff --git a/rkward/windows/katepluginintegration.cpp b/rkward/windows/katepluginintegration.cpp
index 8a2a2d9a8..838d08399 100644
--- a/rkward/windows/katepluginintegration.cpp
+++ b/rkward/windows/katepluginintegration.cpp
@@ -49,7 +49,7 @@ class KatePluginWindow : public RKMDIWindow {
 		initializeActivationSignals();
 		setFocusPolicy(Qt::ClickFocus);
 	}
-	~KatePluginWindow() {
+	~KatePluginWindow() override {
 		RK_TRACE(APP);
 	}
 
diff --git a/rkward/windows/rcontrolwindow.h b/rkward/windows/rcontrolwindow.h
index 38a93d8ee..bfd41e057 100644
--- a/rkward/windows/rcontrolwindow.h
+++ b/rkward/windows/rcontrolwindow.h
@@ -33,7 +33,7 @@ class RControlWindow : public RKMDIWindow {
 	@param parent parent QWidget, usually RKGlobals::rkApp () or similar */
 	RControlWindow(QWidget *parent, bool tool_window, const char *name = nullptr);
 	/** destructor */
-	~RControlWindow();
+	~RControlWindow() override;
 
 	/** reimplemented to start listening to the RCommandStackModel when showing. */
 	void showEvent(QShowEvent *e) override;
diff --git a/rkward/windows/rkcallstackviewer.h b/rkward/windows/rkcallstackviewer.h
index 54c91a24d..44504e09b 100644
--- a/rkward/windows/rkcallstackviewer.h
+++ b/rkward/windows/rkcallstackviewer.h
@@ -20,7 +20,7 @@ class RKCallstackViewer : public RKMDIWindow {
 	Q_OBJECT
   public:
 	RKCallstackViewer(QWidget *parent, bool tool_window, const char *name = nullptr);
-	~RKCallstackViewer();
+	~RKCallstackViewer() override;
 
 	/** reimplemented to create the real widget only when the viewer is shown for the first time */
 	void showEvent(QShowEvent *e) override;
diff --git a/rkward/windows/rkcommandlog.h b/rkward/windows/rkcommandlog.h
index 235abd8d7..825170079 100644
--- a/rkward/windows/rkcommandlog.h
+++ b/rkward/windows/rkcommandlog.h
@@ -41,7 +41,7 @@ class RKCommandLog : public RKMDIWindow {
 	/** Command has finished. If the command has failed, it may be necessary to print some more information */
 	void rCommandDone(RCommand *command);
 	RKCommandLog(QWidget *parent, bool tool_window, const char *name = nullptr);
-	~RKCommandLog();
+	~RKCommandLog() override;
   public Q_SLOTS:
 	/** configures the log_view-window */
 	void configureLog();
diff --git a/rkward/windows/rkdebugconsole.h b/rkward/windows/rkdebugconsole.h
index fab8a2b4d..163069da4 100644
--- a/rkward/windows/rkdebugconsole.h
+++ b/rkward/windows/rkdebugconsole.h
@@ -20,7 +20,7 @@ class RKDebugConsole : public RKMDIWindow {
 	Q_OBJECT
   public:
 	RKDebugConsole(QWidget *parent, bool tool_window, const char *name = nullptr);
-	~RKDebugConsole();
+	~RKDebugConsole() override;
 
 	static RKDebugConsole *instance() { return _instance; };
 
diff --git a/rkward/windows/rkdebugmessagewindow.h b/rkward/windows/rkdebugmessagewindow.h
index 060bba33f..84ca17cae 100644
--- a/rkward/windows/rkdebugmessagewindow.h
+++ b/rkward/windows/rkdebugmessagewindow.h
@@ -18,7 +18,7 @@ class QTextEdit;
 class RKDebugMessageWindow : public RKMDIWindow {
   public:
 	RKDebugMessageWindow(QWidget *parent, bool tool_window, const char *name = nullptr);
-	~RKDebugMessageWindow();
+	~RKDebugMessageWindow() override;
 
 	/** reimplemented to create the real widget only when the viewer is shown */
 	void showEvent(QShowEvent *e) override;
diff --git a/rkward/windows/rkfilebrowser.cpp b/rkward/windows/rkfilebrowser.cpp
index d369cee8b..6ac8f4472 100644
--- a/rkward/windows/rkfilebrowser.cpp
+++ b/rkward/windows/rkfilebrowser.cpp
@@ -100,7 +100,6 @@ RKFileBrowserWidget::RKFileBrowserWidget(QWidget *parent) : QWidget(parent) {
 	layout->addWidget(urlbox);
 
 	dir = new KDirOperator(QUrl(), this);
-	dir->setPreviewWidget(nullptr);
 	KConfigGroup config = KSharedConfig::openConfig()->group(QStringLiteral("file browser window"));
 	dir->readConfig(config);
 	dir->setViewMode(KFile::Tree);
diff --git a/rkward/windows/rkfilebrowser.h b/rkward/windows/rkfilebrowser.h
index c86ddb4a5..71152ad29 100644
--- a/rkward/windows/rkfilebrowser.h
+++ b/rkward/windows/rkfilebrowser.h
@@ -26,7 +26,7 @@ class RKFileBrowser : public RKMDIWindow {
 	Q_OBJECT
   public:
 	RKFileBrowser(QWidget *parent, bool tool_window, const char *name = nullptr);
-	~RKFileBrowser();
+	~RKFileBrowser() override;
 
 	/** reimplemented to create the real file browser widget only when the file browser is shown for the first time */
 	void showEvent(QShowEvent *e) override;
diff --git a/rkward/windows/rkhelpsearchwindow.h b/rkward/windows/rkhelpsearchwindow.h
index 82a0be219..68934122b 100644
--- a/rkward/windows/rkhelpsearchwindow.h
+++ b/rkward/windows/rkhelpsearchwindow.h
@@ -29,7 +29,7 @@ class RKHelpSearchWindow : public RKMDIWindow {
 	Q_OBJECT
   public:
 	RKHelpSearchWindow(QWidget *parent, bool tool_window, const char *name = nullptr);
-	~RKHelpSearchWindow();
+	~RKHelpSearchWindow() override;
 	/** small convenience function to get context help for RKCommandEditorWindow and RKConsole.
 	@param context_line The current line
 	@param cursor_pos cursor position in the current line
diff --git a/rkward/windows/rkhtmlwindow.cpp b/rkward/windows/rkhtmlwindow.cpp
index 2b70ea293..ff99418cf 100644
--- a/rkward/windows/rkhtmlwindow.cpp
+++ b/rkward/windows/rkhtmlwindow.cpp
@@ -594,7 +594,7 @@ bool RKHTMLWindow::openURL(const QUrl &url) {
 			if (!mtype.inherits(QStringLiteral("text/html"))) {
 				RK_DEBUG(APP, DL_WARNING, "Applying workaround for https://bugs.kde.org/show_bug.cgi?id=405386");
 				QFile f(url.toLocalFile());
-				f.open(QIODevice::ReadOnly);
+				RK_ASSERT(f.open(QIODevice::ReadOnly));
 				page->setHtmlWrapper(QString::fromUtf8(f.readAll()), url.adjusted(QUrl::RemoveFilename));
 				f.close();
 			} else {
@@ -826,7 +826,7 @@ void RKHTMLWindow::useMode(WindowMode new_mode) {
 void RKHTMLWindow::startNewCacheFile() {
 	delete current_cache_file;
 	current_cache_file = new QTemporaryFile(QDir::tempPath() + u"/rkward_XXXXXX.html"_s);
-	current_cache_file->open();
+	RK_ASSERT(current_cache_file->open());
 }
 
 void RKHTMLWindow::fileDoesNotExistMessage() {
diff --git a/rkward/windows/rkhtmlwindow.h b/rkward/windows/rkhtmlwindow.h
index 03ff03578..54ca96951 100644
--- a/rkward/windows/rkhtmlwindow.h
+++ b/rkward/windows/rkhtmlwindow.h
@@ -56,7 +56,7 @@ class RKHTMLWindow : public RKMDIWindow {
 	@param parent parent QWidget, usually RKGlobals::rkApp () or similar */
 	explicit RKHTMLWindow(QWidget *parent, WindowMode mode = HTMLHelpWindow);
 	/** destructor */
-	~RKHTMLWindow();
+	~RKHTMLWindow() override;
 	/** open given URL. Returns false, if the URL is not an existing local file. Loading a non-local URL may succeed, even if this returns false! */
 	bool openURL(const QUrl &url);
 	/** Show the given content, assuming HTML mimetype. */
diff --git a/rkward/windows/robjectbrowser.h b/rkward/windows/robjectbrowser.h
index 497974910..ab01c7017 100644
--- a/rkward/windows/robjectbrowser.h
+++ b/rkward/windows/robjectbrowser.h
@@ -30,7 +30,7 @@ Note: Most actual functionality is realized in RObjectBrowserInternal, which is
 class RObjectBrowser : public RKMDIWindow {
   public:
 	RObjectBrowser(QWidget *parent, bool tool_window, const char *name = nullptr);
-	~RObjectBrowser();
+	~RObjectBrowser() override;
 	void unlock();
 	static RObjectBrowser *mainBrowser() { return object_browser; };
 	/** reimplemented to create the real file browser widget only when the file browser is shown for the first time */
@@ -55,7 +55,7 @@ class RObjectBrowserInternal : public QWidget, public RKScriptContextProvider {
 	Q_OBJECT
   public:
 	explicit RObjectBrowserInternal(QWidget *parent, RObjectBrowser *browser);
-	~RObjectBrowserInternal();
+	~RObjectBrowserInternal() override;
   private Q_SLOTS:
 	void updateButtonClicked();
 	void contextMenuCallback(RObject *object, bool *suppress);



More information about the rkward-tracker mailing list