Author: rpmcruz
Date: Wed May 14 18:09:55 2008
New Revision: 47541
URL: http://svn.opensuse.org/viewcvs/yast?rev=47541&view=rev
Log:
* src/YGDialog.cc: bug fix 389635: make it transient to the last
open dialog (not necessarly the main dialog).
Added:
trunk/gtk/tests/Dialog-Several.ycp
Modified:
trunk/gtk/ChangeLog
trunk/gtk/src/YGDialog.cc
trunk/gtk/src/YGDialog.h
Modified: trunk/gtk/ChangeLog
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=47541&r1=47540&r2=47541&view=diff
==============================================================================
--- trunk/gtk/ChangeLog (original)
+++ trunk/gtk/ChangeLog Wed May 14 18:09:55 2008
@@ -1,3 +1,8 @@
+2008-05-14 Ricardo Cruz
+
+ * src/YGDialog.cc: bug fix 389635: make it transient to the last
+ open dialog (not necessarly the main dialog).
+
2008-05-14 Michael Meeks
* Version 2.16.11
Modified: trunk/gtk/src/YGDialog.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGDialog.cc?rev=47541&r1=47540&r2=47541&view=diff
==============================================================================
--- trunk/gtk/src/YGDialog.cc (original)
+++ trunk/gtk/src/YGDialog.cc Wed May 14 18:09:55 2008
@@ -116,7 +116,7 @@
YGWindowCloseFn m_canClose;
void *m_canCloseData;
- YGWindow (bool _main_window)
+ YGWindow (bool _main_window, YGDialog *ydialog)
{
m_widget = GTK_WIDGET (g_object_new (ygtk_window_get_type(), NULL));
g_object_ref (G_OBJECT (m_widget));
@@ -127,9 +127,24 @@
m_canClose = NULL;
{
- GtkWindow *parent = NULL;
- if (main_window)
- parent = GTK_WINDOW (main_window->getWidget());
+ std::stack &stack = YDialog::_dialogStack;
+ YDialog *ylast = stack.size() ? stack.top() : 0;
+ if (ylast == ydialog) {
+ if (stack.size() > 1) {
+ YDialog *t = ylast;
+ stack.pop();
+ ylast = stack.top();
+ stack.push (t);
+ }
+ else
+ ylast = NULL;
+ }
+
+ GtkWindow *parent = NULL;
+ if (ylast) {
+ YGDialog *yglast = static_cast (ylast);
+ parent = GTK_WINDOW (yglast->m_window->getWidget());
+ }
GtkWindow *window = GTK_WINDOW (m_widget);
if (parent) {
@@ -156,7 +171,7 @@
}
}
- gtk_window_set_role (window, "yast-gtk");
+ gtk_window_set_role (window, "yast2-gtk");
if (!YGUI::ui()->hasWM())
g_signal_connect (G_OBJECT (m_widget), "expose-event",
G_CALLBACK (draw_border_cb), this);
@@ -377,9 +392,9 @@
setBorder (0);
m_containee = gtk_event_box_new();
if (dialogType == YMainDialog && main_window)
- m_window = main_window;
+ m_window = main_window;
else
- m_window = new YGWindow (dialogType == YMainDialog);
+ m_window = new YGWindow (dialogType == YMainDialog, this);
YGWindow::ref (m_window);
if (colorMode != YDialogNormalColor) {
Modified: trunk/gtk/src/YGDialog.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGDialog.h?rev=47541&r1=47540&r2=47541&view=diff
==============================================================================
--- trunk/gtk/src/YGDialog.h (original)
+++ trunk/gtk/src/YGDialog.h Wed May 14 18:09:55 2008
@@ -9,6 +9,7 @@
class YGDialog : public YDialog, public YGWidget
{
+ friend class YGWindow;
GtkWidget *m_containee;
YGWindow *m_window;
Added: trunk/gtk/tests/Dialog-Several.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/tests/Dialog-Several.ycp?rev=47541&view=auto
==============================================================================
--- trunk/gtk/tests/Dialog-Several.ycp (added)
+++ trunk/gtk/tests/Dialog-Several.ycp Wed May 14 18:09:55 2008
@@ -0,0 +1,14 @@
+// bug 389635
+{
+ UI::OpenDialog(`opt (`defaultsize), `PushButton ("One"));
+ UI::WaitForEvent();
+ sleep (2000);
+
+ UI::OpenDialog(`PushButton ("Two"));
+ UI::WaitForEvent();
+ sleep (2000);
+
+ UI::OpenDialog(`PushButton ("Three"));
+ UI::WaitForEvent();
+}
+
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org