Author: rpmcruz Date: Sun Jul 24 04:03:33 2011 New Revision: 64971 URL: http://svn.opensuse.org/viewcvs/yast?rev=64971&view=rev Log: bug fix: gray out disabled images. bug fix: layout issues with the Dependencies table on sw_single. Modified: trunk/gtk/src/pkg/ygtkcellrenderersidebutton.c trunk/gtk/src/pkg/ygtkpkgdetailview.cc trunk/gtk/src/ygtkimage.c Modified: trunk/gtk/src/pkg/ygtkcellrenderersidebutton.c URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkcellrenderersidebutton.c?rev=64971&r1=64970&r2=64971&view=diff ============================================================================== --- trunk/gtk/src/pkg/ygtkcellrenderersidebutton.c (original) +++ trunk/gtk/src/pkg/ygtkcellrenderersidebutton.c Sun Jul 24 04:03:33 2011 @@ -19,6 +19,8 @@ G_DEFINE_TYPE (YGtkCellRendererSideButton, ygtk_cell_renderer_side_button, GTK_TYPE_CELL_RENDERER_TEXT) +#define DEPRESS_PAD 1 + static void ygtk_cell_renderer_side_button_init (YGtkCellRendererSideButton *bcell) { g_object_set(GTK_CELL_RENDERER(bcell), "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL); } @@ -156,8 +158,7 @@ icon_area.x += 2; icon_area.y += 2; if (bcell->active) { - icon_area.x += 2; - icon_area.y += 2; + icon_area.x += DEPRESS_PAD; icon_area.y += DEPRESS_PAD; } ensure_pixbuf (bcell, widget); Modified: trunk/gtk/src/pkg/ygtkpkgdetailview.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/pkg/ygtkpkgdetailview.cc?rev=64971&r1=64970&r2=64971&view=diff ============================================================================== --- trunk/gtk/src/pkg/ygtkpkgdetailview.cc (original) +++ trunk/gtk/src/pkg/ygtkpkgdetailview.cc Sun Jul 24 04:03:33 2011 @@ -647,17 +647,21 @@ virtual void setList (Ypp::List list) { if (list.size() == 1) { - gtk_widget_show (expander); - Ypp::Selectable sel = list.get (0); Ypp::Package pkg (sel); + int support = pkg.support(); + std::string label ("<b>" + std::string (_("Supportability:")) + "</b> "); - label += Ypp::Package::supportSummary (pkg.support()); + label += Ypp::Package::supportSummary (support); gtk_expander_set_label (GTK_EXPANDER (expander), label.c_str()); - ygtk_rich_text_set_text (YGTK_RICH_TEXT (text), - Ypp::Package::supportDescription (pkg.support()).c_str()); + Ypp::Package::supportDescription (support).c_str()); + + if (support == 0) + gtk_widget_hide(expander); + else + gtk_widget_show (expander); } else gtk_widget_hide (expander); @@ -665,20 +669,22 @@ }; struct DependenciesExpander : public DetailExpander { - GtkWidget *vbox; + GtkWidget *grid; DependenciesExpander() : DetailExpander (_("Dependencies"), false) { - vbox = gtk_vbox_new (FALSE, 6); - setChild (vbox); + grid = gtk_grid_new(); + gtk_widget_set_hexpand (grid, TRUE); + gtk_widget_set_vexpand (grid, FALSE); + setChild (grid); } void clear() { - GList *children = gtk_container_get_children (GTK_CONTAINER (vbox)); + GList *children = gtk_container_get_children (GTK_CONTAINER (grid)); for (GList *i = children; i; i = i->next) - gtk_container_remove (GTK_CONTAINER (vbox), (GtkWidget *) i->data); + gtk_container_remove (GTK_CONTAINER (grid), (GtkWidget *) i->data); g_list_free (children); } @@ -688,37 +694,31 @@ // if (dep >= 0) // gtk_box_pack_start (GTK_BOX (vbox), gtk_hseparator_new(), FALSE, TRUE, 0); - GtkWidget *hbox = gtk_hbox_new (FALSE, 6); - GtkWidget *col; - col = ygtk_rich_text_new(); - gtk_widget_set_size_request (col, 100, -1); - ygtk_rich_text_set_text (YGTK_RICH_TEXT (col), - ("<i>" + col1 + "</i>").c_str()); - gtk_box_pack_start (GTK_BOX (hbox), col, FALSE, TRUE, 0); - // by settings both the two following "col" text widgets with the same - // fixed width, and expanded=True, we ensure all rows have the same size - col = ygtk_rich_text_new(); - gtk_widget_set_size_request (col, 80, -1); - ygtk_rich_text_set_text (YGTK_RICH_TEXT (col), col2.c_str()); - if (dep == 0) - g_signal_connect (G_OBJECT (col), "link-clicked", - G_CALLBACK (requires_link_cb), NULL); - else if (dep == 2) - g_signal_connect (G_OBJECT (col), "link-clicked", - G_CALLBACK (provides_link_cb), NULL); - gtk_box_pack_start (GTK_BOX (hbox), col, TRUE, TRUE, 0); - col = ygtk_rich_text_new(); - gtk_widget_set_size_request (col, 80, -1); - ygtk_rich_text_set_text (YGTK_RICH_TEXT (col), col3.c_str()); - if (dep == 0) - g_signal_connect (G_OBJECT (col), "link-clicked", - G_CALLBACK (requires_link_cb), NULL); - else if (dep == 2) - g_signal_connect (G_OBJECT (col), "link-clicked", - G_CALLBACK (provides_link_cb), NULL); - gtk_box_pack_start (GTK_BOX (hbox), col, TRUE, TRUE, 0); + GtkWidget *cols[3]; + for(int i = 0; i < 3; i++) { + cols[i] = ygtk_rich_text_new(); + gtk_widget_set_size_request(cols[i], 100, -1); + } + + ygtk_rich_text_set_text (YGTK_RICH_TEXT (cols[0]), ("<i>" + col1 + "</i>").c_str()); + ygtk_rich_text_set_text (YGTK_RICH_TEXT (cols[1]), col2.c_str()); + ygtk_rich_text_set_text (YGTK_RICH_TEXT (cols[2]), col3.c_str()); + + for(int i = 1; i < 3; i++) { + if (dep == 0) + g_signal_connect (G_OBJECT (cols[i]), "link-clicked", + G_CALLBACK (requires_link_cb), NULL); + else if (dep == 2) + g_signal_connect (G_OBJECT (cols[i]), "link-clicked", + G_CALLBACK (provides_link_cb), NULL); + } + + GList *children = gtk_container_get_children(GTK_CONTAINER(grid)); + guint top = g_list_length (children) / 3; + g_list_free (children); - gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); + for(int i = 0; i < 3; i++) + gtk_grid_attach (GTK_GRID (grid), cols[i], i, top, 1, 1); } static void requires_link_cb (GtkWidget *widget, const gchar *link) @@ -754,7 +754,7 @@ if (!inst.empty() || !cand.empty()) addLine (VersionDependencies::getLabel (dep), inst, cand, dep); } - gtk_widget_show_all (vbox); + gtk_widget_show_all (grid); } virtual void showRefreshList (Ypp::List list) Modified: trunk/gtk/src/ygtkimage.c URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/ygtkimage.c?rev=64971&r1=64970&r2=64971&view=diff ============================================================================== --- trunk/gtk/src/ygtkimage.c (original) +++ trunk/gtk/src/ygtkimage.c Sun Jul 24 04:03:33 2011 @@ -211,14 +211,19 @@ } static GdkPixbuf *ygtk_image_render_state (GtkWidget *widget, GdkPixbuf *pixbuf) -{ - // as in GtkImage +{ // as in GtkImage GtkIconSource *source = gtk_icon_source_new(); + GtkStyleContext *style = gtk_widget_get_style_context (widget); + gtk_style_context_save (style); + gtk_style_context_set_state (style, gtk_widget_get_state_flags (widget)); + GdkPixbuf *rendered; gtk_icon_source_set_pixbuf (source, pixbuf); gtk_icon_source_set_size (source, GTK_ICON_SIZE_SMALL_TOOLBAR); gtk_icon_source_set_size_wildcarded (source, FALSE); - rendered = gtk_render_icon_pixbuf (gtk_widget_get_style_context(widget), source, (GtkIconSize)-1); + rendered = gtk_render_icon_pixbuf (style, source, (GtkIconSize)-1); + + gtk_style_context_restore (style); gtk_icon_source_free (source); return rendered; } @@ -256,7 +261,7 @@ else pixbuf = image->pixbuf; - gboolean needs_transform = gtk_widget_get_state (widget) != GTK_STATE_NORMAL; + gboolean needs_transform = gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_INSENSITIVE; if (needs_transform) pixbuf = ygtk_image_render_state (widget, pixbuf); int x = 0, y = 0; @@ -292,6 +297,12 @@ return FALSE; } +static void ygtk_image_state_flags_changed (GtkWidget *widget, GtkStateFlags old_flags) +{ + // it seems like we need to force a redraw in gtk3 when state changes + gtk_widget_queue_draw (widget); +} + GtkWidget* ygtk_image_new (void) { return g_object_new (YGTK_TYPE_IMAGE, NULL); @@ -304,5 +315,6 @@ widget_class->get_preferred_width = ygtk_image_get_preferred_width; widget_class->get_preferred_height = ygtk_image_get_preferred_height; widget_class->destroy = ygtk_image_destroy; + widget_class->state_flags_changed = ygtk_image_state_flags_changed; } -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org