Disable stuff automatically in dialogs with read-only

Jean-Marc Lasgouttes lasgouttes at lyx.org
Tue Dec 1 14:50:43 UTC 2020


Dear all,

ButtonController has a addReadonly() feature that allows to control 
which widgets should be disabled in read-only mode. It add the widgets 
to a read_only_ vector<widget>, but this vector is never used? Why?

The answer is that the code was disabled a long time ago, and (partly) 
removed.

commit 78ade7e6ec18b8f34645f5629500a79e103dda72
Author: Richard Kimberly Heck <rikiheck at lyx.org>
Date:   Fri Feb 28 00:08:30 2020 -0500

     Remove code that has not been used for 13 years.



The better answer, though, is that the disabling clashed with hand-made 
disabling and got disabled rather than fixed.

Author: Uwe Stöhr <uwestoehr at web.de>
Date:   Thu Sep 27 21:03:26 2007 +0000

     ButtonController.cpp: fix a bug introduced in r20018: don't enable 
all widgets in the dialog, see 
http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg128222.html

The archive above explains that this enabling/disabling clashes with 
explicit disabling like in the Box dialog.

So the very unsatisfying situation is that we have code in dialogs which 
annotates which widgets should be disabled in read-only mode, but these 
calls do nothing.

Any bright idea on how to fix this?

I see two approaches:

1/ add a ButtonController::setDisabled(widget, bool) and use that 
everywhere instead of explicit calls to QWidget::setEnabled

2/ consider that ButtonController is already ugly enough and replace all 
addReadOnly calls with proper hand-made setEnabled calls on the relevant 
widgets.

Any idea from people who know more than I do about dialogs?

JMarc


More information about the lyx-devel mailing list