Strangely, float can be one or more of *tbph but floatplaement can only be one or more of tbp. Currently, lyx outputs float,floatplacement=xxx (x be tbph), and this patch changes to float=xxx (x be *tbph).
I am too lazy to create a bugzilla entry, and will commit it if Uwe or Jurgen OKs it. Bo
Index: src/insets/InsetListingsParams.cpp =================================================================== --- src/insets/InsetListingsParams.cpp (revision 18501) +++ src/insets/InsetListingsParams.cpp (working copy) @@ -77,7 +77,7 @@ // info is a \n separated string with allowed values // SUBSETOF // info is a string from which par is composed of - // (e.g. floatplacement can be one or more of tbph) + // (e.g. floatplacement can be one or more of *tbph) param_type type; /// parameter info, meaning depending on parameter type char const * info; @@ -120,8 +120,8 @@ /// options copied from page 26 of listings manual // FIXME: add default parameters ... (which is not used now) listings_param_info const listings_param_table[] = { - { "float", "false", true, SUBSETOF, "tbph", "" }, - { "floatplacement", "tbp", false, SUBSETOF, "tbph", "" }, + { "float", "false", true, SUBSETOF, "*tbph", "" }, + { "floatplacement", "tbp", false, SUBSETOF, "tbp", "" }, { "aboveskip", "\\medskipamount", false, LENGTH, "", "" }, { "belowskip", "\\medskipamount", false, LENGTH, "", "" }, { "lineskip", "", false, LENGTH, "", "" }, Index: src/frontends/qt4/QListings.cpp =================================================================== --- src/frontends/qt4/QListings.cpp (revision 18500) +++ src/frontends/qt4/QListings.cpp (working copy) @@ -208,7 +208,7 @@ numberStepLE->setValidator(new QIntValidator(0, 1000000, this)); firstlineLE->setValidator(new QIntValidator(0, 1000000, this)); lastlineLE->setValidator(new QIntValidator(0, 1000000, this)); - placementLE->setValidator(new QRegExpValidator(QRegExp("[tbph]*"), this)); + placementLE->setValidator(new QRegExpValidator(QRegExp("[\*tbph]*"), this)); } @@ -287,10 +287,15 @@ else par.addParam("language", "{[" + dialect + "]" + language + "}"); } - if (float_) - par.addParam("float", ""); - if (!placement.empty()) - par.addParam("floatplacement", placement); + // this dialog uses float=placement instead of float,floatplacement=placement + // because float accepts *tbph and floatplacement accepts bph. + // our placement textedit is actually for the float parameter + if (float_) { + if (placement.empty()) + par.addParam("float", ""); + else + par.addParam("float", placement); + } if (numberSide != "none") par.addParam("numbers", numberSide); if (numberfontsize != "default" && numberSide != "none") @@ -505,13 +510,6 @@ dialog_->languageCO->setEnabled(in_gui); dialog_->dialectCO->setEnabled( in_gui && dialog_->dialectCO->count() > 1); - } else if (prefixIs(*it, "floatplacement=")) { - dialog_->floatCB->setChecked(true); - dialog_->placementLE->setEnabled(true); - dialog_->placementLE->setText( - toqstr(plainParam(it->substr(15)))); - dialog_->inlineCB->setChecked(false); - *it = ""; } else if (prefixIs(*it, "float")) { dialog_->floatCB->setChecked(true); dialog_->inlineCB->setChecked(false);