bool
Key_engraver::do_try_request (Request * req_l)
{
- Command_req* creq_l= req_l->access_Command_req ();
- if (!creq_l|| !creq_l->access_Key_change_req ())
- return false;
-
- if (keyreq_l_)
- return false; // TODO
- keyreq_l_ = creq_l->access_Key_change_req ();
- read_req (keyreq_l_);
- return true;
+ if (Key_change_req *kc = dynamic_cast <Key_change_req *> (req_l))
+ {
+ if (keyreq_l_)
+ warning ("Fixme: key change merge.");
+ keyreq_l_ = kc;
+ read_req (keyreq_l_);
+ return true;
+ }
+ return false;
}
void
Key_engraver::acknowledge_element (Score_element_info info)
{
- Command_req * r_l = info.req_l_->access_Command_req () ;
-
- if (r_l && r_l->access_Clef_change_req ())
+ if (dynamic_cast <Clef_change_req *> (info.req_l_))
{
int i= get_property ("createKeyOnClefChange").length_i ();
if (i)
create_key ();
}
- else if (info.elem_l_->is_type_b (Bar::static_name ())
+ else if (dynamic_cast<Bar *> (info.elem_l_)
&& accidental_idx_arr_.size ())
{
if (!keyreq_l_)