Mailinglist Archive: yast-commit (683 mails)

< Previous Next >
[yast-commit] r43047 - /trunk/core/libyui/src/YPushButton.cc
  • From: sh-sh-sh@xxxxxxxxxxxxxxxx
  • Date: Thu, 13 Dec 2007 13:10:13 -0000
  • Message-id: <20071213131013.3230B32DD1@xxxxxxxxxxxxxxxx>
Author: sh-sh-sh
Date: Thu Dec 13 14:10:12 2007
New Revision: 43047

URL: http://svn.opensuse.org/viewcvs/yast?rev=43047&view=rev
Log:
prevent endless recursion

Modified:
trunk/core/libyui/src/YPushButton.cc

Modified: trunk/core/libyui/src/YPushButton.cc
URL:
http://svn.opensuse.org/viewcvs/yast/trunk/core/libyui/src/YPushButton.cc?rev=43047&r1=43046&r2=43047&view=diff
==============================================================================
--- trunk/core/libyui/src/YPushButton.cc (original)
+++ trunk/core/libyui/src/YPushButton.cc Thu Dec 13 14:10:12 2007
@@ -32,16 +32,15 @@

struct YPushButtonPrivate
{
- string label;
- bool isDefaultButton;
-
- /**
- * Constructor.
- **/
YPushButtonPrivate( const string & label )
: label( label )
, isDefaultButton( false )
+ , setDefaultButtonRecursive( false )
{}
+
+ string label;
+ bool isDefaultButton;
+ bool setDefaultButtonRecursive;
};


@@ -89,17 +88,27 @@
{
priv->isDefaultButton = isDefaultButton;

- YDialog * dialog = findDialog();
-
- if ( dialog )
+ if ( ! priv->setDefaultButtonRecursive )
{
- if ( isDefaultButton )
- dialog->setDefaultButton( this );
- else
+ // Prevent endless recursion if dialog->setDefaultButton()
+ // calls this function again
+
+ priv->setDefaultButtonRecursive = true;
+
+ YDialog * dialog = findDialog();
+
+ if ( dialog )
{
- if ( dialog->defaultButton() == this )
- dialog->setDefaultButton( 0 );
+ if ( isDefaultButton )
+ dialog->setDefaultButton( this );
+ else
+ {
+ if ( dialog->defaultButton() == this )
+ dialog->setDefaultButton( 0 );
+ }
}
+
+ priv->setDefaultButtonRecursive = false;
}
}


--
To unsubscribe, e-mail: yast-commit+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: yast-commit+help@xxxxxxxxxxxx

< Previous Next >
This Thread
  • No further messages