Found the reason for #103713

Michael Brade brade at
Sun May 15 17:37:08 BST 2005


4 weeks ago I posted a question of how to debug this report, but despite all 
your great tips I gave up --- even backtraces didn't help me. Today I had an 
idea, and tried again successfully. The KToolBarButton class is the culprit!

In KToolBarButton::mouseReleaseEvent the buttonClicked is emitted, which calls 
the correct slot in KNotes. However, it also calls 
QToolButton::mouseReleaseEvent, which in turn emits clicked(). Now 
KToolBarButton connects this signal so KToolBarButton::slotClicked() and in 
this slot it emits buttonClicked _again_, but only if the button's 
parent->rect() contains the button itself!

First of all, I don't understand why this has to be so. Any ideas? The comment 
says something about an extension popup menu. What's that? Here's the code:

  // emit buttonClicked when the button was clicked while being in an 
extension popupmenu
  if ( d->m_parent && !d->m_parent->rect().contains( geometry() ) ) {
    ButtonState state = KApplication::keyboardMouseState();
    if ( ( state & MouseButtonMask ) == NoButton )
      state = ButtonState( LeftButton | state );
    emit buttonClicked( d->m_id, state );

Second, this is the reason KNotes works for me but not for others: with 
Keramik the buttons are 10x10 pixels, the toolbar has hight 16. However, with 
Plastik the buttons are bigger than the toolbar although I call 
setIconSize( 10 ). Thus the check in KToolBarButton::slotClicked() fails and 
buttonClicked is emitted again.

Well, that's as far as I got. Is the code in KToolBarButton correct and I 
somehow have to fix the iconsizes in KNotes, or can we fix KToolBarButton as 

Michael Brade;                 KDE Developer, Student of Computer Science
  |-mail: echo brade !#|tr -d "c oh"|s\e\d 's/e/\@/2;s/$/.org/;s/bra/k/2'

KDE 3: The Next Generation in Desktop Experience
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <>

More information about the kde-core-devel mailing list