Author: sh-sh-sh
Date: Fri Feb 1 15:53:23 2008
New Revision: 44104
URL: http://svn.opensuse.org/viewcvs/yast?rev=44104&view=rev
Log:
Moved event handling from YUI to YDialog
Added:
trunk/ncurses/src/NCtoY2Event.cc
trunk/ncurses/src/NCtoY2Event.h
Modified:
trunk/core/VERSION
trunk/core/libyui/src/ChangeLog
trunk/core/libyui/src/YCPErrorDialog.cc
trunk/core/libyui/src/YChildrenManager.h
trunk/core/libyui/src/YDialog.cc
trunk/core/libyui/src/YDialog.h
trunk/core/libyui/src/YUI.h
trunk/core/libyui/src/YUI_builtins.cc
trunk/core/package/yast2-core.changes
trunk/ncurses/VERSION
trunk/ncurses/package/yast2-ncurses.changes
trunk/ncurses/src/Makefile.am
trunk/ncurses/src/NCBusyIndicator.cc
trunk/ncurses/src/NCDialog.cc
trunk/ncurses/src/NCDialog.h
trunk/ncurses/src/YNCursesUI.cc
trunk/ncurses/src/YNCursesUI.h
trunk/ncurses/yast2-ncurses.spec.in
trunk/qt/VERSION.cmake
trunk/qt/package/yast2-qt.changes
trunk/qt/src/YQDialog.cc
trunk/qt/src/YQDialog.h
trunk/qt/src/YQUI.h
trunk/qt/src/YQUI_builtins.cc
trunk/qt/src/YQUI_core.cc
trunk/qt/yast2-qt.spec.in
Modified: trunk/core/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/VERSION?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/core/VERSION (original)
+++ trunk/core/VERSION Fri Feb 1 15:53:23 2008
@@ -1 +1 @@
-2.16.25
+2.16.26
Modified: trunk/core/libyui/src/ChangeLog
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libyui/src/ChangeLog?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/core/libyui/src/ChangeLog (original)
+++ trunk/core/libyui/src/ChangeLog Fri Feb 1 15:53:23 2008
@@ -437,8 +437,8 @@
* Migrated YWizard
* Moved WizardCommand parsing out to YCPWizardCommandParser
* Added lots of pure virtual functions to YWizard
- * All YCPValue and other YCP related code can now be removed from
- YWizard-derived classes
+ * All YCPValue and other YCP related code can now be removed from
+ YWizard-derived classes
2007-11-30 sh@suse.de
@@ -446,7 +446,7 @@
* Migrated YDialog
* Removed YContainerWidget for good
* Removed legacy YWidget::queryWidget() and YWidget::changeWidget() methods
-* Dropped support for outdated property handling with old
+* Dropped support for outdated property handling with old
YWidget::queryWidget() and YWidget::changeWidget() methods
* Dropped support for outdated YWidget( YWidgetOpt ) constructors
* Removed unneeded YWidgetOpt fields
@@ -466,7 +466,7 @@
2008-01-20 sh@suse.de
-* Moved glyph handling from YUI to YApplication,
+* Moved glyph handling from YUI to YApplication,
now using std::string instead of YCPString and YCPSymbol;
forget YMyUI::glyph(), implement YMyApplication::glyph()
@@ -492,5 +492,16 @@
- removed YUI::showDialog()
- removed YUI::closeDialog()
- Now using YDialog::open() and YDialog::destroy()
- - Derived classes now have to implement YDialog::openInternal()
- and YDialog::activate()
+ - Derived classes now have to implement:
+ - YDialog::openInternal()
+ - YDialog::activate()
+
+
+2008-02-01 sh@suse.de
+
+* Moved event handling from YUI to YDialog:
+ - removed YUI::userInput()
+ - removed YUI::pollInput()
+ - Derived classes now have to implement:
+ - YDialog::waitForEventInternal()
+ - YDialog::pollEventInternal()
Modified: trunk/core/libyui/src/YCPErrorDialog.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libyui/src/YCPErrorDialog.cc?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/core/libyui/src/YCPErrorDialog.cc (original)
+++ trunk/core/libyui/src/YCPErrorDialog.cc Fri Feb 1 15:53:23 2008
@@ -53,15 +53,14 @@
closeButton->setId( new YCPValueWidgetID( YCPSymbol( "cancel" ) ) );
dialog->open();
- YCPValue input = YUI::ui()->waitForUserInput();
- yuiMilestone() << "Input: " << input << endl;
-
+ YEvent * event = dialog->waitForEvent();
+ delete event;
dialog->destroy();
}
catch ( YUIException & ex )
{
YUI_CAUGHT( exception );
-
+
// No other action. If opening this error dialog fails, the user will
// just have to live with the error being reported in the log file only.
}
Modified: trunk/core/libyui/src/YChildrenManager.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libyui/src/YChildrenManager.h?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/core/libyui/src/YChildrenManager.h (original)
+++ trunk/core/libyui/src/YChildrenManager.h Fri Feb 1 15:53:23 2008
@@ -195,19 +195,6 @@
**/
virtual void add( T * child )
{ YUI_THROW( YUITooManyChildrenException<T>( this->container() ) ); }
-
-#if 0
- /**
- * Remove a child.
- *
- * Reimplemented from YChildrenManager.
- *
- * Since this class is designed to reject children, this always throws a
- * YUIInvalidChildException.
- **/
- virtual void remove( T * child )
- { YUI_THROW( YUIInvalidChildException<T>( this->container(), child ) ); }
-#endif
};
Modified: trunk/core/libyui/src/YDialog.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libyui/src/YDialog.cc?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/core/libyui/src/YDialog.cc (original)
+++ trunk/core/libyui/src/YDialog.cc Fri Feb 1 15:53:23 2008
@@ -27,7 +27,8 @@
using std::string;
-#define VERBOSE_DIALOGS 0
+#define VERBOSE_DIALOGS 0
+#define VERBOSE_DISCARDED_EVENTS 0
std::stack YDialog::_dialogStack;
@@ -106,22 +107,36 @@
bool
+YDialog::isTopmostDialog() const
+{
+ if ( _dialogStack.empty() )
+ {
+ yuiError() << "Dialog stack empty, but dialog existing: " << this << endl;
+ return false;
+ }
+
+ return _dialogStack.top() == this;
+}
+
+
+bool
YDialog::destroy( bool doThrow )
{
YUI_CHECK_WIDGET( this );
- if ( _dialogStack.empty() ||
- _dialogStack.top() != this )
+ if ( isTopmostDialog() )
+ {
+ delete this;
+
+ return true;
+ }
+ else
{
if ( doThrow )
YUI_THROW( YUIDialogStackingOrderException() );
return false;
}
-
- delete this;
-
- return true;
}
@@ -213,6 +228,126 @@
}
+YEvent *
+YDialog::waitForEvent( int timeout_millisec )
+{
+ if ( ! isTopmostDialog() )
+ YUI_THROW( YUIDialogStackingOrderException() );
+
+ if ( timeout_millisec < 0 )
+ timeout_millisec = 0;
+
+ if ( ! isOpen() )
+ open();
+
+ if ( shortcutCheckPostponed() )
+ {
+ yuiError() << "Performing missing keyboard shortcut check now in "
+ << this << endl;
+
+ checkShortcuts( true );
+ }
+
+ YEvent * event = 0;
+
+ do
+ {
+ event = filterInvalidEvents( waitForEventInternal( timeout_millisec ) );
+
+ // If there was no event or if filterInvalidEvents() discarded
+ // an invalid event, go back and get the next one.
+ } while ( ! event );
+
+ return event;
+}
+
+
+YEvent *
+YDialog::pollEvent()
+{
+ if ( ! isTopmostDialog() )
+ YUI_THROW( YUIDialogStackingOrderException() );
+
+ if ( ! isOpen() )
+ open();
+
+ YEvent * event = filterInvalidEvents( pollEventInternal() );
+
+ // Nevermind if filterInvalidEvents() discarded an invalid event.
+ // pollInput() is normally called very often (in a loop), and most of the
+ // times it returns 0 anyway, so there is no need to care for just another
+ // 0 that is returned in this exotic case.
+
+ return event;
+}
+
+
+YEvent *
+YDialog::filterInvalidEvents( YEvent * event )
+{
+ if ( ! event )
+ return 0;
+
+ YWidgetEvent * widgetEvent = dynamic_cast (event);
+
+ if ( widgetEvent && widgetEvent->widget() )
+ {
+ if ( ! widgetEvent->widget()->isValid() )
+ {
+ /**
+ * Silently discard events from widgets that have become invalid.
+ *
+ * This may legitimately happen if some widget triggered an event yet
+ * nobody cared for that event (i.e. called UserInput() or PollInput() )
+ * and the widget has been destroyed meanwhile.
+ **/
+
+ // yuiDebug() << "Discarding event for widget that has become invalid" << endl;
+
+ delete widgetEvent;
+ return 0;
+ }
+
+ if ( widgetEvent->widget()->findDialog() != this )
+ {
+ /**
+ * Silently discard events from all but the current (topmost) dialog.
+ *
+ * This may happen even here even though the specific UI should have
+ * taken care about that: Events may still be in the queue. They might
+ * have been valid (i.e. belonged to the topmost dialog) when they
+ * arrived, but maybe simply nobody has evaluated them.
+ **/
+
+ // Yes, really yuiDebug() - this may legitimately happen.
+ yuiDebug() << "Discarding event from widget from foreign dialog" << endl;
+
+#if VERBOSE_DISCARDED_EVENTS
+ yuiDebug() << "Expected: " << this
+ << ", received: " << widgetEvent->widget()->findDialog()
+ << endl;
+
+ yuiDebug() << "Event widget: " << widgetEvent->widget() << endl;
+ yuiDebug() << "From:" << endl;
+ widgetEvent->widget()->findDialog()->dumpWidgetTree();
+ yuiDebug() << "Current dialog:" << endl;
+ dumpWidgetTree();
+#endif
+
+ activate(); // try to force this dialog to the foreground
+
+ delete widgetEvent;
+ return 0;
+ }
+
+ }
+
+ return event;
+}
+
+
+
+
YDialog *
Modified: trunk/core/libyui/src/YDialog.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libyui/src/YDialog.h?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/core/libyui/src/YDialog.h (original)
+++ trunk/core/libyui/src/YDialog.h Fri Feb 1 15:53:23 2008
@@ -21,6 +21,7 @@
#define YDialog_h
#include "YSingleChildContainerWidget.h"
+#include "YEvent.h"
#include <stack>
class YMacroRecorder;
@@ -81,6 +82,44 @@
bool isOpen() const;
/**
+ * Wait for a user event. In most cases, this means waiting until the user
+ * has clicked on a button in this dialog. If any widget has its 'notify'
+ * flag set (`opt(`notify) in YCP, setNotify( true ) in C++), an action on
+ * such a widget will also make waitForEvent() return.
+ *
+ * If the specified timeout elapses without any user event, a YTimeoutEvent
+ * will be returned. 0 means no timeout (wait forever).
+ *
+ * If open() has not been called for this dialog until now,
+ * it is called now.
+ *
+ * Ownership of the event is transferred to the caller, i.e. the caller is
+ * responsible for deleting it after use.
+ *
+ * If this dialog is not the topmost dialog, an exception is thrown.
+ **/
+ YEvent * waitForEvent( int timeout_millisec = 0 );
+
+ /**
+ * Check if a user event is pending. If there is one, return it.
+ * If there is none, do not wait for one - return 0.
+ *
+ * If open() has not been called for this dialog until now,
+ * it is called now.
+ *
+ * Ownership of the event is transferred to the caller, i.e. the caller is
+ * responsible for deleting it after use.
+ *
+ * If this dialog is not the topmost dialog, an exception is thrown.
+ **/
+ YEvent * pollEvent();
+
+ /**
+ * Return 'true' if this dialog is the topmost dialog.
+ **/
+ bool isTopmostDialog() const;
+
+ /**
* Close and delete this dialog (and all its children) if it is the topmost
* dialog. If this is not the topmost dialog, this will throw an exception
* if 'doThrow' is true (default).
@@ -158,7 +197,7 @@
* changed after it (and its children hierarchy) was initially created.
**/
void recalcLayout();
-
+
/**
* Return this dialog's type (YMainDialog / YPopupDialog).
**/
@@ -212,12 +251,12 @@
/**
* Activate this dialog: Make sure that it is shown as the topmost dialog
- * of this application and that it can receive input.
+ * of this application and that it can receive input.
*
* Derived classes are required to implement this.
**/
virtual void activate() = 0;
-
+
protected:
@@ -229,8 +268,29 @@
* necessary to make this dialog visible on the screen.
**/
virtual void openInternal() = 0;
+
+ /**
+ * Wait for a user event.
+ *
+ * Derived classes are required to implement this.
+ **/
+ virtual YEvent * waitForEventInternal( int timeout_millisec ) = 0;
/**
+ * Check if a user event is pending. If there is one, return it.
+ * If there is none, do not wait for one - return 0.
+ *
+ * Derived classes are required to implement this.
+ **/
+ virtual YEvent * pollEventInternal() = 0;
+
+ /**
+ * Filter out invalid events: Return 0 if the event does not belong to this
+ * dialog or the unchanged event if it does.
+ **/
+ YEvent * filterInvalidEvents( YEvent * event );
+
+ /**
* Stack holding all currently existing dialogs.
**/
static std::stack _dialogStack;
Modified: trunk/core/libyui/src/YUI.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libyui/src/YUI.h?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/core/libyui/src/YUI.h (original)
+++ trunk/core/libyui/src/YUI.h Fri Feb 1 15:53:23 2008
@@ -65,20 +65,6 @@
/**
* Abstract base class of a YaST2 user interface.
- *
- * The implementation of a YaST2 user interface such as qt and ncurses
- * constists in subclassing YUI.
- *
- * We have to handle two cases slightly different: The case with and without
- * a seperate UI thread.
- *
- * You have two alternatives how to implement event handling in your UI.
- * Either override idleLoop, userInput and pollInput
- * or override pollInput and waitForEvent, whichever is
- * easier for you.
- *
- * This class is an abstract base class that contains pure virtuals.
- * It is not intended for direct instantiation, only for inheritance.
**/
class YUI
{
@@ -175,11 +161,6 @@
public:
/**
- * The C++ counterpart to UI::UserInput().
- **/
- YCPValue waitForUserInput();
-
- /**
* Block (or unblock) events. If events are blocked, any event sent
* should be ignored until events are unblocked again.
*
@@ -372,8 +353,6 @@
const char *moduleName();
- // Event handling, execution flow
-
/**
* This virtual method is called when threads are activated in case the
* execution control is currently on the side of the module. This means
@@ -390,45 +369,6 @@
**/
virtual void idleLoop( int fd_ycp ) = 0;
- /**
- * UI-specific UserInput() method.
- *
- * This is called upon evaluating the UI::UserInput() builtin command.
- * This method should remain in its own event loop until an event for the
- * topmost dialog (YDialog::currentDialog() ) is available or until the
- * specified timeout (in milliseconds, 0 for "wait forever") is expired (in
- * which case it should return the pointer to a YTimeoutEvent).
- *
- * This method is to return a pointer to an event created with the "new"
- * operator. The generic UI component assumes ownership of this newly
- * created object and destroys it when appropriate.
- *
- * The caller will gracefully handle if this method returns 0, albeit this
- * is always an error which may result in an error message in the log file.
- *
- * Derived UIs are required to implement this method.
- **/
- virtual YEvent * userInput( unsigned long timeout_millisec = 0 ) = 0;
-
- /**
- * UI-specific PollInput() method.
- *
- * This is called upon evaluating the UI::PollInput() builtin command.
- * This method should just check if there are any pending events for the
- * topmost dialog (YDialog::currentDialog() ). This method never waits for
- * any events - if there is no pending event, it returns 0.
- *
- * If there is a pending event, a pointer to that event (newly created with
- * the "new" operator) is returned. The generic UI component assumes
- * ownership of this newly created object and destroys it when appropriate.
- *
- * Derived UIs are required to implement this method.
- **/
- virtual YEvent * pollInput() = 0;
-
-
-protected:
-
/**
* UI-specific setConsoleFont() function.
@@ -588,11 +528,6 @@
bool waitForYCPThread();
/**
- * Filter out invalid events.
- **/
- YEvent * filterInvalidEvents( YEvent * event );
-
- /**
* Mid-level handler for the user input related UI commands:
* UserInput()
* TimeoutUserInput()
@@ -650,7 +585,6 @@
-
//
// Data members
//
@@ -738,7 +672,6 @@
**/
Y2Component * _callback;
-
/**
* Global reference to the UI
**/
Modified: trunk/core/libyui/src/YUI_builtins.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libyui/src/YUI_builtins.cc?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/core/libyui/src/YUI_builtins.cc (original)
+++ trunk/core/libyui/src/YUI_builtins.cc Fri Feb 1 15:53:23 2008
@@ -23,7 +23,6 @@
#define VERBOSE_REPLACE_WIDGET 0
#define VERBOSE_EVENTS 0
-#define VERBOSE_DISCARDED_EVENTS 0
#include
#include // pipe()
@@ -432,19 +431,6 @@
}
-YCPValue YUI::waitForUserInput()
-{
-#if VERBOSE_EVENTS
- yuiDebug() << "Waiting for user input..." << endl;
-#endif
-
- return doUserInput( YUIBuiltin_UserInput,
- 0, // timeout_millisec
- true, // wait
- false ); // detailed
-}
-
-
/**
* @builtin PollInput
* @short Poll Input
@@ -575,34 +561,9 @@
if ( fakeUserInputQueue.empty() )
{
if ( wait )
- {
- do
- {
- // Get an event from the specific UI. Wait if there is none.
-
-#if VERBOSE_EVENTS
- yuiDebug() << "SpecificUI::userInput()" << endl;
-#endif
- event = filterInvalidEvents( userInput( (unsigned long) timeout_millisec ) );
-
- // If there was no event or if filterInvalidEvents() discarded
- // an invalid event, go back and get the next one.
- } while ( ! event );
- }
+ event = dialog->waitForEvent( timeout_millisec );
else
- {
- // Get an event from the specific UI. Don't wait if there is none.
-
-#if VERBOSE_EVENTS
- yuiDebug() << "SpecificUI::pollInput()" << endl;
-#endif
- event = filterInvalidEvents( pollInput() );
-
- // Nevermind if filterInvalidEvents() discarded an invalid event.
- // PollInput() is called very often (in a loop) anyway, and most of
- // the times it returns 'nil' anyway, so there is no need to care
- // for just another 'nil' that is returned in this exotic case.
- }
+ event = dialog->pollEvent();
if ( event )
{
@@ -660,70 +621,6 @@
}
-YEvent *
-YUI::filterInvalidEvents( YEvent * event )
-{
- if ( ! event )
- return 0;
-
- YWidgetEvent * widgetEvent = dynamic_cast (event);
-
- if ( widgetEvent && widgetEvent->widget() )
- {
- if ( ! widgetEvent->widget()->isValid() )
- {
- /**
- * Silently discard events from widgets that have become invalid.
- *
- * This may legitimately happen if some widget triggered an event yet
- * nobody cared for that event (i.e. called UserInput() or PollInput() )
- * and the widget has been destroyed meanwhile.
- **/
-
- // yuiDebug() << "Discarding event for widget that has become invalid" << endl;
-
- delete widgetEvent;
- return 0;
- }
-
- if ( widgetEvent->widget()->findDialog() != YDialog::currentDialog() )
- {
- /**
- * Silently discard events from all but the current (topmost) dialog.
- *
- * This may happen even here even though the specific UI should have
- * taken care about that: Events may still be in the queue. They might
- * have been valid (i.e. belonged to the topmost dialog) when they
- * arrived, but maybe simply nobody has evaluated them.
- **/
-
- // Yes, really yuiDebug() - this may legitimately happen.
- yuiDebug() << "Discarding event from widget from foreign dialog" << endl;
-
-#if VERBOSE_DISCARDED_EVENTS
- yuiDebug() << "Expected: " << YDialog::currentDialog()
- << ", received: " << widgetEvent->widget()->findDialog()
- << endl;
-
- yuiDebug() << "Event widget: " << widgetEvent->widget() << endl;
- yuiDebug() << "From:" << endl;
- widgetEvent->widget()->findDialog()->dumpWidgetTree();
- yuiDebug() << "Current dialog:" << endl;
- YDialog::currentDialog()->dumpWidgetTree();
-#endif
-
- YDialog::currentDialog()->activate();
-
- delete widgetEvent;
- return 0;
- }
-
- }
-
- return event;
-}
-
-
/**
* @builtin OpenDialog
* @id OpenDialog_with_options
Modified: trunk/core/package/yast2-core.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/package/yast2-core.changes?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/core/package/yast2-core.changes (original)
+++ trunk/core/package/yast2-core.changes Fri Feb 1 15:53:23 2008
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Fri Feb 1 14:48:52 CET 2008 - sh@suse.de
+
+- Moved UI event handling from YUI to YDialog
+- V 2.16.26
+
+-------------------------------------------------------------------
Thu Jan 31 15:25:52 CET 2008 - sh@suse.de
- Simplified and unified internal UI dialog handling
Modified: trunk/ncurses/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/VERSION?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/ncurses/VERSION (original)
+++ trunk/ncurses/VERSION Fri Feb 1 15:53:23 2008
@@ -1 +1 @@
-2.16.13
+2.16.14
Modified: trunk/ncurses/package/yast2-ncurses.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/package/yast2-ncurses.changes?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/ncurses/package/yast2-ncurses.changes (original)
+++ trunk/ncurses/package/yast2-ncurses.changes Fri Feb 1 15:53:23 2008
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Fri Feb 1 15:49:47 CET 2008 - sh@suse.de
+
+- Moved event handling from YUI / YNCursesUI to YDialog / NCDialog
+- V 2.16.14
+
+-------------------------------------------------------------------
Thu Jan 31 15:27:49 CET 2008 - sh@suse.de
- Simplified dialog handling
Modified: trunk/ncurses/src/Makefile.am
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/Makefile.am?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/ncurses/src/Makefile.am (original)
+++ trunk/ncurses/src/Makefile.am Fri Feb 1 15:53:23 2008
@@ -31,6 +31,7 @@
tnode.h \
position.h \
YNCursesUI.h \
+ NCtoY2Event.h \
NCApplication.h \
NCWidgetFactory.h \
NCOptionalWidgetFactory.h \
@@ -101,6 +102,7 @@
Y2Log.cc \
position.cc \
YNCursesUI.cc \
+ NCtoY2Event.cc \
NCApplication.cc \
NCWidgetFactory.cc \
NCOptionalWidgetFactory.cc \
Modified: trunk/ncurses/src/NCBusyIndicator.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/NCBusyIndicator.cc?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/ncurses/src/NCBusyIndicator.cc (original)
+++ trunk/ncurses/src/NCBusyIndicator.cc Fri Feb 1 15:53:23 2008
@@ -374,7 +374,7 @@
if ( !win )
return;
- int cp = (_twin->maxx()) * _position;
+ int cp = (int) ( (_twin->maxx()) * _position );
const NCstyle::StProgbar & style( wStyle().progbar );
_twin->bkgdset( style.nonbar.chattr );
Modified: trunk/ncurses/src/NCDialog.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/NCDialog.cc?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/ncurses/src/NCDialog.cc (original)
+++ trunk/ncurses/src/NCDialog.cc Fri Feb 1 15:53:23 2008
@@ -23,6 +23,7 @@
#include "NCMenuButton.h"
#include "YShortcut.h"
#include "NCi18n.h"
+#include "NCtoY2Event.h"
#include "ncursesw.h"
@@ -1047,6 +1048,7 @@
return returnEvent;
}
+
///////////////////////////////////////////////////////////////////
//
//
@@ -1077,6 +1079,37 @@
return returnEvent;
}
+
+/**
+ * Back-end for YDialog::waitForEvent()
+ **/
+YEvent * NCDialog::waitForEventInternal( int timeout_millisec )
+{
+ NCtoY2Event cevent;
+ activate ( true );
+ cevent = userInput( timeout_millisec ? timeout_millisec : -1 );
+ activate ( false );
+
+ YEvent * yevent = cevent.propagate();
+
+ return yevent;
+}
+
+
+/**
+ * Back-end for YDialog::pollEvent()
+ **/
+YEvent * NCDialog::pollEventInternal()
+{
+ // no activation here, done in pollInput, if..
+ NCtoY2Event cevent = pollInput();
+ YEvent * yevent = cevent.propagate();
+
+ return yevent;
+}
+
+
+
///////////////////////////////////////////////////////////////////
//
//
Modified: trunk/ncurses/src/NCDialog.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/NCDialog.h?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/ncurses/src/NCDialog.h (original)
+++ trunk/ncurses/src/NCDialog.h Fri Feb 1 15:53:23 2008
@@ -133,6 +133,21 @@
**/
virtual void openInternal();
+ /**
+ * Wait for a user event.
+ *
+ * Implemented from YDialog.
+ **/
+ virtual YEvent * waitForEventInternal( int timeout_millisec );
+
+ /**
+ * Check if a user event is pending. If there is one, return it.
+ * If there is none, do not wait for one - return 0.
+ *
+ * Implemented from YDialog.
+ **/
+ virtual YEvent * pollEventInternal();
+
public:
Added: trunk/ncurses/src/NCtoY2Event.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/NCtoY2Event.cc?rev=44104&view=auto
==============================================================================
--- trunk/ncurses/src/NCtoY2Event.cc (added)
+++ trunk/ncurses/src/NCtoY2Event.cc Fri Feb 1 15:53:23 2008
@@ -0,0 +1,107 @@
+/*---------------------------------------------------------------------\
+| |
+| __ __ ____ _____ ____ |
+| \ \ / /_ _/ ___|_ _|___ \ |
+| \ V / _` \___ \ | | __) | |
+| | | (_| |___) || | / __/ |
+| |_|\__,_|____/ |_| |_____| |
+| |
+| core system |
+| (C) SuSE GmbH |
+\----------------------------------------------------------------------/
+
+ File: NCtoY2Event.h
+
+ Authors: Michael Andres
+ Stefan Hundhammer
+
+/-*/
+
+
+#include "NCtoY2Event.h"
+#include "NCWidget.h"
+#include "Y2Log.h"
+
+
+NCtoY2Event::NCtoY2Event( const NCursesEvent & ncev )
+ : NCursesEvent( ncev )
+{
+}
+
+
+NCtoY2Event &
+NCtoY2Event::operator=( const NCursesEvent & ncev )
+{
+ if ( ncev.isInternalEvent() )
+ NCursesEvent::operator=( none );
+ else
+ NCursesEvent::operator=( ncev );
+ return *this;
+}
+
+
+YEvent *
+NCtoY2Event::propagate()
+{
+ switch ( type )
+ {
+ // Note: libyui assumes ownership of YEvents, so they need to be
+ // created on the heap with 'new'. libyui takes care of deleting them.
+
+ case button:
+ if ( widget->isValid() )
+ return new YWidgetEvent( dynamic_cast (widget), reason );
+ else
+ return 0;
+
+ case menu:
+ if ( selection )
+ return new YMenuEvent( selection );
+ else
+ return 0;
+
+ case cancel:
+ return new YCancelEvent();
+
+ case timeout:
+ return new YTimeoutEvent();
+
+ case key:
+ if ( widget->isValid() )
+ return new YKeyEvent( keySymbol, dynamic_cast (widget) );
+ else
+ return 0;
+
+ case none:
+ case handled:
+ return 0;
+
+ // Intentionally omitting 'default' branch so the compiler can
+ // detect unhandled enums
+ }
+
+ // If we get this far, there must be an error.
+
+ UIINT << "Can't propagate through (EventType*)0" << endl;
+ UIDBG << *this << endl;
+ return 0;
+}
+
+
+ostream &
+operator<< ( std::ostream & stream, const NCtoY2Event & event )
+{
+ stream << static_cast (event);
+
+ if ( ! event.selection )
+ {
+ stream << "(-)";
+ }
+ else
+ {
+ // FIXME: check this - was valuetype() see above
+ stream << "(" << event.selection->label() << ")";
+ }
+ return stream << " for " << event.widget;
+}
+
Added: trunk/ncurses/src/NCtoY2Event.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/NCtoY2Event.h?rev=44104&view=auto
==============================================================================
--- trunk/ncurses/src/NCtoY2Event.h (added)
+++ trunk/ncurses/src/NCtoY2Event.h Fri Feb 1 15:53:23 2008
@@ -0,0 +1,57 @@
+/*---------------------------------------------------------------------\
+| |
+| __ __ ____ _____ ____ |
+| \ \ / /_ _/ ___|_ _|___ \ |
+| \ V / _` \___ \ | | __) | |
+| | | (_| |___) || | / __/ |
+| |_|\__,_|____/ |_| |_____| |
+| |
+| core system |
+| (C) SuSE GmbH |
+\----------------------------------------------------------------------/
+
+ File: NCtoY2Event.h
+
+ Authors: Michael Andres
+ Stefan Hundhammer
+
+/-*/
+
+#ifndef NCtoY2Event_h
+#define NCtoY2Event_h
+
+#include // NCursesEvent, iostream
+
+
+/**
+ * Helper class for translating an NCurses event to a YEvent.
+ **/
+class NCtoY2Event : public NCursesEvent
+{
+public:
+ friend ostream & operator<<( std::ostream & stream, const NCtoY2Event & event );
+
+ /**
+ * Default constructor
+ **/
+ NCtoY2Event() {}
+
+ /**
+ * Constructor from an NCursesEvent
+ **/
+ NCtoY2Event( const NCursesEvent & ncev );
+
+ /**
+ * Assignment operator
+ **/
+ NCtoY2Event & operator=( const NCursesEvent & ncev );
+
+ /**
+ * The reason of existence of this class:
+ * Translate the NCursesEvent to a YEvent.
+ **/
+ YEvent * propagate();
+};
+
+
+#endif // ifndef NCtoY2Event_h
Modified: trunk/ncurses/src/YNCursesUI.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/YNCursesUI.cc?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/ncurses/src/YNCursesUI.cc (original)
+++ trunk/ncurses/src/YNCursesUI.cc Fri Feb 1 15:53:23 2008
@@ -175,138 +175,6 @@
///////////////////////////////////////////////////////////////////
-struct NCtoY2Event : public NCursesEvent {
-
- friend ostream & operator<<( std::ostream & STREAM, const NCtoY2Event & OBJ ) {
- STREAM << static_cast(OBJ);
-#if 0
- if ( OBJ.selection.isNull() ) {
- STREAM << "(-)";
- } else {
- STREAM << "(" << OBJ.selection->valuetype() << ")";
- }
-#endif
- if ( !OBJ.selection )
- {
- STREAM << "(-)";
- }
- else
- {
- // FIXME: check this - was valuetype() see above
- STREAM << "(" << OBJ.selection->label() << ")";
- }
- return STREAM << " for " << OBJ.widget;
- }
-
- NCtoY2Event() {}
- NCtoY2Event( const NCursesEvent & ncev ) : NCursesEvent( ncev ) {}
-
- NCtoY2Event & operator=( const NCursesEvent & ncev ) {
- if ( ncev.isInternalEvent() )
- NCursesEvent::operator=( none );
- else
- NCursesEvent::operator=( ncev );
- return *this;
- }
-
- YEvent * propagate()
- {
- switch ( type )
- {
- // Note: libyui assumes ownership of YEvents, so they need to be
- // created on the heap with 'new'. libyui takes care of deleting them.
-
- case button:
- if ( widget->isValid() )
- return new YWidgetEvent( dynamic_cast (widget), reason );
- else
- return 0;
-
- case menu:
- if ( selection )
- return new YMenuEvent( selection );
- else
- return 0;
-
- case cancel:
- return new YCancelEvent();
-
- case timeout:
- return new YTimeoutEvent();
-
- case key:
- if ( widget->isValid() )
- return new YKeyEvent( keySymbol, dynamic_cast (widget) );
- else
- return 0;
-
- case none:
- case handled:
- return 0;
-
- // Intentionally omitting 'default' branch so the compiler can
- // detect unhandled enums
- }
-
- // If we get this far, there must be an error.
-
- UIINT << "Can't propagate through (EventType*)0" << endl;
- UIDBG << *this << endl;
- return 0;
- }
-};
-
-
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : YNCursesUI::userInput
-// METHOD TYPE : YEvent *
-//
-// DESCRIPTION :
-//
-YEvent * YNCursesUI::userInput( unsigned long timeout_millisec )
-{
- NCDialog * ncd = static_cast( YDialog::currentDialog() );
- if ( !ncd ) {
- UIERR << "No current NCDialog " << endl;
- return 0;
- }
-
- NCtoY2Event cevent;
- ncd->activate ( true );
- cevent = ncd->userInput( timeout_millisec ? (long)timeout_millisec : -1 );
- ncd->activate ( false );
-
- YEvent * yevent = cevent.propagate();
-
- return yevent;
-}
-
-///////////////////////////////////////////////////////////////////
-//
-//
-// METHOD NAME : YNCursesUI::pollInput
-// METHOD TYPE : YWidget *
-//
-// DESCRIPTION :
-//
-YEvent * YNCursesUI::pollInput()
-{
- NCDialog * ncd = static_cast( YDialog::currentDialog() );
- if ( !ncd ) {
- UIERR << "No current NCDialog " << endl;
- return 0;
- }
-
- // no activation here, done in pollInput, if..
- NCtoY2Event cevent = ncd->pollInput();
-
- YEvent * yevent = cevent.propagate();
-
- return yevent;
-}
-
#define ONCREATE WIDDBG << endl
//#define ONCREATE
Modified: trunk/ncurses/src/YNCursesUI.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/src/YNCursesUI.h?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/ncurses/src/YNCursesUI.h (original)
+++ trunk/ncurses/src/YNCursesUI.h Fri Feb 1 15:53:23 2008
@@ -107,21 +107,6 @@
virtual void idleLoop( int fd_ycp );
/**
- * Go into event loop until user input is available or until the specified
- * timeout (in milliseconds) has elapsed.
- *
- * Reimplemented from YUIInterpreter.
- */
- virtual YEvent * userInput( unsigned long timeout_millisec );
-
- /**
- * Check the event queue for user input. Don't wait.
- *
- * Reimplemented from YUIInterpreter.
- */
- virtual YEvent * pollInput();
-
- /**
* Fills the PackageSelector widget and runs package selection.
*/
virtual YEvent * runPkgSelection( YWidget * packageSelector );
Modified: trunk/ncurses/yast2-ncurses.spec.in
URL: http://svn.opensuse.org/viewcvs/yast/trunk/ncurses/yast2-ncurses.spec.in?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/ncurses/yast2-ncurses.spec.in (original)
+++ trunk/ncurses/yast2-ncurses.spec.in Fri Feb 1 15:53:23 2008
@@ -17,12 +17,10 @@
Provides: y2curses
Obsoletes: y2curses
Requires: glibc-locale
-BuildRequires: yast2-core-devel >= 2.16.24
-Requires: yast2-core >= 2.16.24
+BuildRequires: yast2-core-devel >= 2.16.26
+Requires: yast2-core >= 2.16.26
#adapted to libzypp 3.11 refactoring
Requires: libzypp >= 3.11.8
-#FSize.h and YRpmGroupsTree.h moved to libyui
-Requires: yast2-core >= 2.16.8
%description
-
Modified: trunk/qt/VERSION.cmake
URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt/VERSION.cmake?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/qt/VERSION.cmake (original)
+++ trunk/qt/VERSION.cmake Fri Feb 1 15:53:23 2008
@@ -1,3 +1,3 @@
SET(VERSION_MAJOR "2")
SET(VERSION_MINOR "16")
-SET(VERSION_PATCH "21")
+SET(VERSION_PATCH "22")
Modified: trunk/qt/package/yast2-qt.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt/package/yast2-qt.changes?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/qt/package/yast2-qt.changes (original)
+++ trunk/qt/package/yast2-qt.changes Fri Feb 1 15:53:23 2008
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Fri Feb 1 15:48:55 CET 2008 - sh@suse.de
+
+- Moved event handling from Y(Q)UI to Y(Q)Dialog
+- V 2.16.22
+
+-------------------------------------------------------------------
Fri Feb 1 11:38:13 CET 2008 - tgoettlicher@suse.de
- Run solver on startup of PackageManager in online update mode
Modified: trunk/qt/src/YQDialog.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt/src/YQDialog.cc?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/qt/src/YQDialog.cc (original)
+++ trunk/qt/src/YQDialog.cc Fri Feb 1 15:53:23 2008
@@ -230,18 +230,6 @@
void
-YQDialog::activate( bool active )
-{
-#if 0
- if ( active )
- {
- ensureOnlyOneDefaultButton();
- }
-#endif
-}
-
-
-void
YQDialog::resizeEvent( QResizeEvent * event )
{
if ( event )
@@ -274,7 +262,6 @@
YQGenericButton *
YQDialog::findDefaultButton( YWidgetListConstIterator begin,
YWidgetListConstIterator end ) const
-
{
for ( YWidgetListConstIterator it = begin; it != end; ++it )
{
@@ -681,6 +668,21 @@
}
+YEvent *
+YQDialog::waitForEventInternal( int timeout_millisec )
+{
+ return YQUI::ui()->userInput( timeout_millisec );
+}
+
+
+YEvent *
+YQDialog::pollEventInternal()
+{
+ return YQUI::ui()->pollInput();
+}
+
+
+
void
YQDialog::center( QWidget * dialog, QWidget * parent )
{
Modified: trunk/qt/src/YQDialog.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt/src/YQDialog.h?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/qt/src/YQDialog.h (original)
+++ trunk/qt/src/YQDialog.h Fri Feb 1 15:53:23 2008
@@ -56,11 +56,6 @@
public:
/**
- * Makes this dialog active or inactive.
- **/
- void activate( bool active );
-
- /**
* Interited from QDialog: The window was closed via the window
* manager close button.
**/
@@ -213,6 +208,21 @@
virtual void openInternal();
/**
+ * Wait for a user event.
+ *
+ * Implemented from YDialog.
+ **/
+ virtual YEvent * waitForEventInternal( int timeout_millisec );
+
+ /**
+ * Check if a user event is pending. If there is one, return it.
+ * If there is none, do not wait for one - return 0.
+ *
+ * Implemented from YDialog.
+ **/
+ virtual YEvent * pollEventInternal();
+
+ /**
* Activate this dialog: Make sure that it is shown as the topmost dialog
* of this application and that it can receive input.
*
Modified: trunk/qt/src/YQUI.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt/src/YQUI.h?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/qt/src/YQUI.h (original)
+++ trunk/qt/src/YQUI.h Fri Feb 1 15:53:23 2008
@@ -252,27 +252,17 @@
* installation. Ask him if he would like his mouse temporarily configured
* as a left-handed mouse.
*
- * This status can be queried with UI::GetDisplayInfo() ("LeftHandedMouse").
+ * This status can be queried with
+ * UI::GetDisplayInfo() (map entry "LeftHandedMouse").
**/
void maybeLeftHandedUser();
-
-protected:
-
- /**
- * Idle around until fd_ycp is readable and handle repaints.
- * This is only used when a separate ui thread is running.
- *
- * Reimplemented from YUI.
- **/
- virtual void idleLoop( int fd_ycp );
-
/**
* Go into event loop until next user input is available.
*
* Reimplemented from YUI.
**/
- YEvent * userInput( unsigned long timeout_millisec = 0 );
+ YEvent * userInput( int timeout_millisec = 0 );
/**
* Check the event queue for user input. Don't wait.
@@ -281,22 +271,6 @@
**/
YEvent * pollInput();
- /**
- * Show and activate a dialog.
- *
- * Reimplemented from YUI.
- **/
- void showDialog( YDialog * dialog );
-
- /**
- * Decativate and close a dialog. This does not delete the dialog yet.
- *
- * Reimplemented from YUI.
- **/
- void closeDialog( YDialog * dialog );
-
-
-public:
/**
* Initialize and set a textdomain for gettext()
@@ -357,6 +331,9 @@
protected:
+
+protected:
+
/**
* Display capabilities.
* [Reimplemented from YUI]
@@ -378,16 +355,11 @@
bool leftHandedMouse() { return _leftHandedMouse; }
- QMap screenShotNo;
- QString screenShotNameTemplate;
-
/**
* Application shutdown
**/
bool close();
-protected:
-
/**
* Handle command line args
**/
@@ -401,32 +373,35 @@
void init_ui();
/**
+ * Idle around until fd_ycp is readable and handle repaints.
+ * This is only used when a separate ui thread is running.
+ *
+ * Reimplemented from YUI.
+ **/
+ virtual void idleLoop( int fd_ycp );
+
+ /**
* Timeout during TimeoutUserInput() / WaitForEvent()
**/
void userInputTimeout();
void leaveIdleLoop();
+
+
//
// Data members
//
- /**
- * Use the entire available screen
- **/
- bool _fullscreen;
+ QMap screenShotNo;
+ QString screenShotNameTemplate;
- /**
- * No window border for the main window
- **/
+ bool _fullscreen;
bool _noborder;
- /**
- * Container for the widget stack. QWidgetStack cannot handle a WFlags
- * argument, so this needs to be embedded into something else - and a QVBox
- * at least handles all the sizeHint and resize stuff.
- **/
+#if 0
QWidget * _main_win;
+#endif
/**
* Size for `opt(`defaultsize) dialogs.
@@ -434,9 +409,9 @@
QSize _default_size;
/**
- * This flag is set during @ref #userInput in order to tell
- * @ref #returnNow to call exit_loop, which only may be called
- * after enter_loop.
+ * This flag is set during userInput() in order to tell
+ * returnNow() to call exit_loop(), which only may be called
+ * after enter_loop().
**/
bool _do_exit_loop;
@@ -507,6 +482,8 @@
YQUI_Ui *_qobject;
};
+
+
class YQUI_Ui : public QObject
{
Q_OBJECT
Modified: trunk/qt/src/YQUI_builtins.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt/src/YQUI_builtins.cc?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/qt/src/YQUI_builtins.cc (original)
+++ trunk/qt/src/YQUI_builtins.cc Fri Feb 1 15:53:23 2008
@@ -55,16 +55,18 @@
YEvent * YQUI::runPkgSelection( YWidget * packageSelector )
{
+ YUI_CHECK_PTR( packageSelector );
YEvent * event = 0;
try
{
- do
- {
- event = filterInvalidEvents( userInput() );
- } while ( ! event );
+ event = packageSelector->findDialog()->waitForEvent();
+ }
+ catch ( YUIException & uiEx )
+ {
+ YUI_CAUGHT( uiEx );
}
- catch (const std::exception & e)
+ catch ( std::exception & e)
{
yuiError() << "Caught std::exception: " << e.what() << "\n"
<< "This is a libzypp problem. Do not file a bug against the UI!"
@@ -261,7 +263,7 @@
items << "Debug logging off"
<< "Debug logging on";
- QString result = QInputDialog::getItem( _main_win,
+ QString result = QInputDialog::getItem( 0,
_("YaST2 Logging"),
_("Configure YaST2 Logging:"),
items, 0,
Modified: trunk/qt/src/YQUI_core.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt/src/YQUI_core.cc?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/qt/src/YQUI_core.cc (original)
+++ trunk/qt/src/YQUI_core.cc Fri Feb 1 15:53:23 2008
@@ -56,7 +56,9 @@
YQUI::YQUI( int argc, char **argv, bool with_threads, const char * macro_file )
: YUI( with_threads )
+#if 0
, _main_win( NULL )
+#endif
, _do_exit_loop( false )
, _eventLoop( 0 )
{
@@ -132,6 +134,7 @@
_eventLoop = new QEventLoop( qApp );
_do_exit_loop = false;
+#if 0
// Create main window for `opt(`defaultsize) dialogs.
//
// We have to use something else than QWidgetStack since QWidgetStack
@@ -145,6 +148,7 @@
if ( _fullscreen )
_main_win->move( 0, 0 );
+#endif
// Set window title
@@ -167,6 +171,7 @@
}
}
+#if 0
_main_win->setWindowTitle( title );
@@ -175,6 +180,7 @@
// the main window - there is nothing to display yet.
_main_win->hide();
+#endif
// Ugly hack as a workaround of bug #121872 (Segfault at program exit
@@ -441,7 +447,7 @@
}
-YEvent * YQUI::userInput( unsigned long timeout_millisec )
+YEvent * YQUI::userInput( int timeout_millisec )
{
init_ui();
@@ -456,7 +462,7 @@
#endif
YEvent * event = 0;
- YQDialog * dialog = dynamic_cast ( YDialog::currentDialog( false ) );
+ YDialog * dialog = YDialog::currentDialog( false );
_user_input_timer->stop();
@@ -476,7 +482,7 @@
event = _event_handler.consumePendingEvent();
// Display a busy cursor, but only if there is no other activity within
- // BUSY_CURSOR_TIMEOUT milliseconds (avoid cursor flicker)
+ // BUSY_CURSOR_TIMEOUT milliseconds: Avoid cursor flicker.
_busy_cursor_timer->start( BUSY_CURSOR_TIMEOUT ); // single shot
}
@@ -495,7 +501,7 @@
if ( ! pendingEvent() )
{
- YQDialog * dialog = dynamic_cast ( YDialog::currentDialog( false ) );
+ YDialog * dialog = YDialog::currentDialog( false );
if ( dialog )
{
Modified: trunk/qt/yast2-qt.spec.in
URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt/yast2-qt.spec.in?rev=44104&r1=44103&r2=44104&view=diff
==============================================================================
--- trunk/qt/yast2-qt.spec.in (original)
+++ trunk/qt/yast2-qt.spec.in Fri Feb 1 15:53:23 2008
@@ -6,8 +6,8 @@
Summary: -
BuildRequires: yast2-devtools >= 2.16.3
-BuildRequires: yast2-core-devel >= 2.16.25
-Requires: yast2-core >= 2.16.25
+BuildRequires: yast2-core-devel >= 2.16.26
+Requires: yast2-core >= 2.16.26
Requires: yast2_theme >= 2.16.1
Requires: libzypp >= 3.11.8
Provides: yast2_ui
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org