[yast-commit] r65051 - in /trunk/gtk/src: CMakeLists.txt YGDialog.cc YGMenuButton.cc YGPushButton.cc YGWidget.cc ygtkratiobox.c ygtkwindow.c ygtkwindow.h ygtkwizard.c
![](https://seccdn.libravatar.org/avatar/eed0feab16dc924fa9451c29610dceec.jpg?s=120&d=mm&r=g)
Author: rpmcruz Date: Thu Jul 28 06:54:25 2011 New Revision: 65051 URL: http://svn.opensuse.org/viewcvs/yast?rev=65051&view=rev Log: * don't crash when closing a context menu (reported by Michael Meeks) * fixed "allow-shrink" window property. * larger wizard borders. Added: trunk/gtk/src/ygtkwindow.c trunk/gtk/src/ygtkwindow.h Modified: trunk/gtk/src/CMakeLists.txt trunk/gtk/src/YGDialog.cc trunk/gtk/src/YGMenuButton.cc trunk/gtk/src/YGPushButton.cc trunk/gtk/src/YGWidget.cc trunk/gtk/src/ygtkratiobox.c trunk/gtk/src/ygtkwizard.c Modified: trunk/gtk/src/CMakeLists.txt URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/CMakeLists.txt?rev=65051&... ============================================================================== --- trunk/gtk/src/CMakeLists.txt (original) +++ trunk/gtk/src/CMakeLists.txt Thu Jul 28 06:54:25 2011 @@ -41,6 +41,7 @@ ygtktextview.c ygtktimezonepicker.c ygtktreeview.c + ygtkwindow.c ygtkwizard.c ) Modified: trunk/gtk/src/YGDialog.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGDialog.cc?rev=65051&r1=... ============================================================================== --- trunk/gtk/src/YGDialog.cc (original) +++ trunk/gtk/src/YGDialog.cc Thu Jul 28 06:54:25 2011 @@ -13,6 +13,7 @@ #include <gdk/gdkkeysyms.h> #include <math.h> // easter #include <string.h> +#include "ygtkwindow.h" /* In the main dialog case, it doesn't necessarly have a window of its own. If there is already a main window, it should replace its content -- and when closed, @@ -49,9 +50,8 @@ YGWindow (bool _main_window, YGDialog *ydialog) { - m_widget = gtk_window_new (GTK_WINDOW_TOPLEVEL); + m_widget = ygtk_window_new(); g_object_ref_sink (G_OBJECT (m_widget)); - g_object_set (G_OBJECT (m_widget), "allow-shrink", TRUE, NULL); gtk_window_set_has_resize_grip (GTK_WINDOW (m_widget), TRUE); m_refcount = 0; Modified: trunk/gtk/src/YGMenuButton.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGMenuButton.cc?rev=65051... ============================================================================== --- trunk/gtk/src/YGMenuButton.cc (original) +++ trunk/gtk/src/YGMenuButton.cc Thu Jul 28 06:54:25 2011 @@ -93,12 +93,15 @@ class YGContextMenu : public YContextMenu, public YGWidget { + int m_deactivateTimeout; + public: YGContextMenu() : YContextMenu(), YGWidget (this, NULL, GTK_TYPE_MENU, NULL) { // "cancel" signal doesnt seem to work properly + m_deactivateTimeout = 0; connect (getWidget(), "deactivate", G_CALLBACK (deactivate_cb), this); } @@ -114,7 +117,10 @@ // callbacks static void deactivate_cb (GtkMenuShell *menu, YGContextMenu *pThis) { // ugly: we need to make sure a selection was made before this callback called - g_idle_add_full (G_PRIORITY_LOW, cancel_cb, pThis, NULL); + // we'll use a timeout because deactivate seems to be called more than once + if(pThis->m_deactivateTimeout == 0) + pThis->m_deactivateTimeout = g_timeout_add_full (G_PRIORITY_LOW, 50, cancel_cb, pThis, NULL); + //g_idle_add_full (G_PRIORITY_LOW, cancel_cb, pThis, NULL); } static gboolean cancel_cb (gpointer data) Modified: trunk/gtk/src/YGPushButton.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGPushButton.cc?rev=65051... ============================================================================== --- trunk/gtk/src/YGPushButton.cc (original) +++ trunk/gtk/src/YGPushButton.cc Thu Jul 28 06:54:25 2011 @@ -210,7 +210,8 @@ { // enlarge button if parent is ButtonBox YWidget *yparent = pThis->m_ywidget->parent(); if (yparent && !strcmp (yparent->widgetClass(), "YButtonBox")) - ygtk_adj_size_set_min (YGTK_ADJ_SIZE(pThis->getLayout()), DEFAULT_CHILD_MIN_WIDTH, DEFAULT_CHILD_MIN_HEIGHT); + ygtk_adj_size_set_min (YGTK_ADJ_SIZE(pThis->getLayout()), + DEFAULT_CHILD_MIN_WIDTH, DEFAULT_CHILD_MIN_HEIGHT); } YGWIDGET_IMPL_COMMON (YPushButton) Modified: trunk/gtk/src/YGWidget.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGWidget.cc?rev=65051&r1=... ============================================================================== --- trunk/gtk/src/YGWidget.cc (original) +++ trunk/gtk/src/YGWidget.cc Thu Jul 28 06:54:25 2011 @@ -75,12 +75,12 @@ g_object_ref_sink (G_OBJECT (m_adj_size)); gtk_widget_show (m_adj_size); gtk_container_add (GTK_CONTAINER (m_adj_size), m_widget); + ygtk_adj_size_set_min_cb (YGTK_ADJ_SIZE (m_adj_size), min_size_cb, this); } gtk_widget_show (m_widget); // Split by two so that with another widget it will have full border... setBorder (DEFAULT_BORDER / 2); - ygtk_adj_size_set_min_cb (YGTK_ADJ_SIZE (m_adj_size), min_size_cb, this); ywidget->setWidgetRep ((void *) this); if (yparent) { Modified: trunk/gtk/src/ygtkratiobox.c URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkratiobox.c?rev=65051&... ============================================================================== --- trunk/gtk/src/ygtkratiobox.c (original) +++ trunk/gtk/src/ygtkratiobox.c Thu Jul 28 06:54:25 2011 @@ -338,13 +338,15 @@ gtk_widget_set_redraw_on_allocate (GTK_WIDGET (adj_size), FALSE); } -static void ygtk_adj_size_get_preferred_size (GtkWidget *widget, - GtkRequisition *requisition) +static gint ygtk_adj_size_get_preferred_size ( + GtkWidget *widget, GtkRequisition *requisition) { - GtkWidget *child = gtk_bin_get_child(GTK_BIN (widget)); + GtkWidget *child = gtk_bin_get_child(GTK_BIN (widget)); + requisition->width = requisition->height = 0; if (child && gtk_widget_get_visible((child))) { - gtk_widget_size_request (child, requisition); + gtk_widget_get_preferred_size(child, NULL, requisition); + guint border = gtk_container_get_border_width(GTK_CONTAINER (widget)); requisition->width += border * 2; requisition->height += border * 2; @@ -376,9 +378,9 @@ gint *minimal_width, gint *natural_width) { - GtkRequisition requisition; - ygtk_adj_size_get_preferred_size (widget, &requisition); - *minimal_width = *natural_width = requisition.width; + GtkRequisition requisition; + ygtk_adj_size_get_preferred_size (widget, &requisition); + *minimal_width = *natural_width = requisition.width; } static void @@ -386,12 +388,11 @@ gint *minimal_height, gint *natural_height) { - GtkRequisition requisition; - ygtk_adj_size_get_preferred_size (widget, &requisition); - *minimal_height = *natural_height = requisition.height; + GtkRequisition requisition; + ygtk_adj_size_get_preferred_size (widget, &requisition); + *minimal_height = *natural_height = requisition.height; } - static void ygtk_adj_size_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { Added: trunk/gtk/src/ygtkwindow.c URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkwindow.c?rev=65051&vi... ============================================================================== --- trunk/gtk/src/ygtkwindow.c (added) +++ trunk/gtk/src/ygtkwindow.c Thu Jul 28 06:54:25 2011 @@ -0,0 +1,43 @@ +/******************************************************************** + * YaST2-GTK - http://en.opensuse.org/YaST2-GTK * + ********************************************************************/ + +/* YGtkWindow widget */ +// check the header file for information about this widget + +#include <config.h> +#include "ygtkwindow.h" +#include <gtk/gtk.h> + +G_DEFINE_TYPE (YGtkWindow, ygtk_window, GTK_TYPE_WINDOW) + +static void ygtk_window_init (YGtkWindow *window) +{ +} + +GtkWidget* ygtk_window_new (void) +{ return g_object_new (YGTK_TYPE_WINDOW, NULL); } + +void ygtk_window_get_preferred_width (GtkWidget *widget, + gint *minimum_width, gint *natural_width) +{ + GTK_WIDGET_CLASS (ygtk_window_parent_class)->get_preferred_width(widget, minimum_width, natural_width); + *minimum_width = 0; +} + +void ygtk_window_get_preferred_height (GtkWidget *widget, + gint *minimum_height, gint *natural_height) +{ + GTK_WIDGET_CLASS (ygtk_window_parent_class)->get_preferred_height(widget, minimum_height, natural_height); + *minimum_height = 0; +} + +static void ygtk_window_class_init (YGtkWindowClass *klass) +{ + ygtk_window_parent_class = g_type_class_peek_parent (klass); + + GtkWidgetClass* widget_class = GTK_WIDGET_CLASS (klass); + widget_class->get_preferred_width = ygtk_window_get_preferred_width; + widget_class->get_preferred_height = ygtk_window_get_preferred_height; +} + Added: trunk/gtk/src/ygtkwindow.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkwindow.h?rev=65051&vi... ============================================================================== --- trunk/gtk/src/ygtkwindow.h (added) +++ trunk/gtk/src/ygtkwindow.h Thu Jul 28 06:54:25 2011 @@ -0,0 +1,41 @@ +/******************************************************************** + * YaST2-GTK - http://en.opensuse.org/YaST2-GTK * + ********************************************************************/ + +/* YGtkWindow implements the gtk2 'allow-shrink' property. +*/ + +#ifndef YGTK_WINDOW_H +#define YGTK_WINDOW_H +#include <gtk/gtk.h> +G_BEGIN_DECLS + +#define YGTK_TYPE_WINDOW (ygtk_window_get_type ()) +#define YGTK_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + YGTK_TYPE_WINDOW, YGtkWindow)) +#define YGTK_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ + YGTK_TYPE_WINDOW, YGtkWindowClass)) +#define YGTK_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + YGTK_TYPE_WINDOW)) +#define YGTK_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + YGTK_TYPE_WINDOW)) +#define YGTK_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + YGTK_TYPE_WINDOW, YGtkWindowClass)) + +typedef struct _YGtkWindow +{ + GtkWindow parent; +} YGtkWindow; + +typedef struct _YGtkWindowClass +{ + GtkWindowClass parent_class; +} YGtkWindowClass; + +GtkWidget* ygtk_window_new (void); +GType ygtk_window_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* YGTK_WINDOW_H */ + Modified: trunk/gtk/src/ygtkwizard.c URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkwizard.c?rev=65051&r1... ============================================================================== --- trunk/gtk/src/ygtkwizard.c (original) +++ trunk/gtk/src/ygtkwizard.c Thu Jul 28 06:54:25 2011 @@ -731,7 +731,7 @@ GtkWidget *vbox; vbox = gtk_vbox_new (FALSE, 12); - gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); // content's border + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); // content's border gtk_box_pack_start (GTK_BOX (vbox), wizard->m_contents_box, TRUE, TRUE, 0); #if 0 GtkWidget *hsep = gtk_hseparator_new(); -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org
participants (1)
-
rpmcruz@svn2.opensuse.org