]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/key-engraver.cc
release: 1.1.1
[lilypond.git] / lily / key-engraver.cc
index be1cedace102c5db5adfb3fe1463144eff362fa4..77a29425f55ea91ea0da7ea0dae7c8e13c548393 100644 (file)
@@ -29,36 +29,34 @@ Key_engraver::create_key ()
       kit_p_ = new Key_item;
       kit_p_->break_priority_i_ = -1; // ugh
       announce_element (Score_element_info (kit_p_,keyreq_l_));
-      kit_p_->read (*this);
+      kit_p_->set (key_.multi_octave_b_, accidental_idx_arr_, old_accidental_idx_arr_);
     }
 }
 
 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_)