[haiku-bugs] Re: [Haiku] #10734: BOptionPopUp::SetDivider() is ignored/overriden by a call in AllAttached().

  • From: "ttcoder" <trac@xxxxxxxxxxxx>
  • Date: Mon, 20 Oct 2014 19:20:42 -0000

#10734: BOptionPopUp::SetDivider() is ignored/overriden by a call in 
AllAttached().
----------------------------------+----------------------------
   Reporter:  ttcoder             |      Owner:  axeld
       Type:  enhancement         |     Status:  new
   Priority:  normal              |  Milestone:  R1/alpha5
  Component:  Kits/Interface Kit  |    Version:  R1/Development
 Resolution:                      |   Keywords:
 Blocked By:                      |   Blocking:
Has a Patch:  0                   |   Platform:  All
----------------------------------+----------------------------

Comment (by ttcoder):

 Good point; rather than get rid of the second SetDivider() call it'd be
 better to move it to AttachedToWindow() (from AllAttached()).

 That way an hypothetical gui framework that 'finetunes' its children in
 AllAttached() is sure to manage optionpopups correctly. I've checked and
 since this ticket's creation my code has changed so that 1) AddChild() is
 called immediately on the whole chain (BView arborescence) so that
 everybody works oneline (rather than offline) from the app_server, 2)
 AttachedToWindow/AllAttached() are called at once, and thus 3) when my
 framework finally calls its DivideFromMaxDividers() fine-tuning code, the
 newly set dividers "stick" as there's nobody to pester them any more =) ..
 So no need regarding this ticket from me, at this point in time; but in
 case of future change or for somebody else, why not make the move
 mentionned above yes. Probably trivial enough that no outside testing is
 needed?

 Another fix that'd be interesting to do in this same ticket (though can
 create a new one if needed), I'd like to remove this override/hack from my
 code :-)

 {{{
 void MyOptionPopup::AllAttached()
 {
         if( NULL == Label() )
                 MenuField()->SetDivider( 0. );
 }
 }}}

 In other words, BOptionPopUp (in AllAttached() I think) always does the
 math the same way, always adds 8 pixels or so of ''spacing'' between the
 label and the menubar.. Eve if the label does ''not'' exist.. Contrarily
 to BMenuField which handles the special case and displays only the menubar
 (no SetDivider(8)) when the label is NULL..

--
Ticket URL: <https://dev.haiku-os.org/ticket/10734#comment:3>
Haiku <https://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: