X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FFloatPlacement.cpp;h=59bdf62ec83a87ab6c4950fd003f7ae5e009a72d;hb=161f7b7f62cb33dab681add6c5b5b68a887e2ea1;hp=07d4e86b07994d6e608f21ecf3aac8cf81fa68d3;hpb=47dd9189eb01d6485a6847a42b4fee6450d44f6b;p=lyx.git diff --git a/src/frontends/qt4/FloatPlacement.cpp b/src/frontends/qt4/FloatPlacement.cpp index 07d4e86b07..59bdf62ec8 100644 --- a/src/frontends/qt4/FloatPlacement.cpp +++ b/src/frontends/qt4/FloatPlacement.cpp @@ -33,7 +33,8 @@ namespace lyx { namespace frontend { FloatPlacement::FloatPlacement(bool show_options, QWidget * parent) - : InsetParamsWidget(parent), float_list_(0) + : InsetParamsWidget(parent), standardfloat_ (true), + allows_wide_(true), allows_sideways_(true), float_list_(0) { setupUi(this); @@ -243,21 +244,36 @@ void FloatPlacement::checkAllowed() const if (spanCB->isVisible()) { bool const span = spanCB->isChecked(); bool const sideways = sidewaysCB->isChecked(); - defaultsCB->setEnabled(!sideways); topCB->setEnabled(!sideways && !defaults && !heredefinitely && contains(allowed_placement_, 't')); bottomCB->setEnabled(!sideways && !defaults && !span && !heredefinitely && contains(allowed_placement_, 'b')); pageCB->setEnabled(!sideways && !defaults && !heredefinitely && contains(allowed_placement_, 'p')); - herepossiblyCB->setEnabled(!sideways && !defaults && !span && !heredefinitely + if (!pageCB->isChecked()) + pageCB->setChecked(sideways && contains(allowed_placement_, 'p')); + herepossiblyCB->setEnabled(!defaults && !span && !heredefinitely && contains(allowed_placement_, 'h')); - heredefinitelyCB->setEnabled(!sideways && !defaults && !span + heredefinitelyCB->setEnabled(!defaults && !span && contains(allowed_placement_, 'H')); - ignoreCB->setEnabled(!sideways && !defaults && ignore && !heredefinitely + ignoreCB->setEnabled(!defaults && ignore && !heredefinitely && contains(allowed_placement_, '!')); + // handle special case with sideways + if ((!herepossiblyCB->isChecked() && sideways) || (span && sideways)) + ignoreCB->setEnabled(false); + // when disabled the options must be unchecked to avoid strange LaTeX export + // don't do it for pageCB because this case is handled with sideways + if (ignoreCB->isChecked() && !ignoreCB->isEnabled()) + ignoreCB->setChecked(false); + if (herepossiblyCB->isChecked() && !herepossiblyCB->isEnabled()) + herepossiblyCB->setChecked(false); + if (topCB->isChecked() && !topCB->isEnabled()) + topCB->setChecked(false); + if (bottomCB->isChecked() && !bottomCB->isEnabled()) + bottomCB->setChecked(false); spanCB->setEnabled(allows_wide_ && (!sideways || standardfloat_)); sidewaysCB->setEnabled(allows_sideways_); + defaultsCB->setEnabled(!(sideways && span)); } else { topCB->setEnabled(!defaults && !heredefinitely); bottomCB->setEnabled(!defaults && !heredefinitely);