]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/bar-engraver.cc
release: 1.1.6
[lilypond.git] / lily / bar-engraver.cc
index 7ed4bad8718d1c8f963ac5ac4423d9bbcefbc898..b9896b4ad32c0b8149778337787e540d9eed779c 100644 (file)
@@ -21,18 +21,20 @@ Bar_engraver::Bar_engraver()
 }
 
 bool
-Bar_engraver::do_try_request (Request*r_l)
+Bar_engraver::do_try_music (Music*r_l)
 {
-  Command_req* c_l = r_l->access_Command_req ();
-  if (!c_l|| !c_l->access_Bar_req ()) 
-    return false;
-  Bar_req  * b= c_l->access_Bar_req ();
-  if (bar_req_l_ && bar_req_l_->equal_b (b))
-    return false;
+  if (Bar_req  * b= dynamic_cast <Bar_req *> (r_l))
+    {
+      if (bar_req_l_ && bar_req_l_->equal_b (b)) // huh?
+       return false;
+      
+      bar_req_l_ = b;
+
+      return true;
+    }
   
-  bar_req_l_ = b;
+  return false;
 
-  return true;
 }
 
 void
@@ -42,6 +44,11 @@ Bar_engraver::create_bar ()
     {
       bar_p_ = new Bar;
       bar_p_->break_priority_i_  = 0;
+      String default_type = get_property ("defaultBarType");
+      if (default_type.length_i ())
+       {
+         bar_p_->type_str_ = default_type;
+       }
       announce_element (Score_element_info (bar_p_, bar_req_l_));
     }
 }
@@ -77,15 +84,18 @@ Bar_engraver::do_process_requests()
   else 
     {
       Time_description const *time = get_staff_info().time_C_;
-      if (time && !time->whole_in_measure_) 
+      String always = get_property ("barAlways");
+      if ((time && !time->whole_in_measure_) || always.length_i ()) 
        create_bar ();
     }
+
+  
   
   if (!bar_p_)
     {
       Break_req r;
       r.penalty_i_ = Break_req::DISALLOW;
-      daddy_grav_l ()->try_request (&r);
+      daddy_grav_l ()->try_music (&r);
     }
 }
 
@@ -107,7 +117,7 @@ Bar_engraver::do_post_move_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Bar_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Bar_engraver);