Changeset 9918


Ignore:
Timestamp:
Jan 12, 2010, 3:48:51 PM (12 years ago)
Author:
charles
Message:

(trunk gtk) sync with http://svn.chipx86.com/trunk/libsexy/libsexy/sexy-icon-entry.c

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/sexy-icon-entry.c

    r9890 r9918  
    208208
    209209                for (i = 0; i < MAX_ICONS; i++)
    210                 {
    211                         if (entry->priv->icons[i].icon != NULL)
    212                                 gdk_window_show(entry->priv->icons[i].window);
    213                 }
     210                        gdk_window_show(entry->priv->icons[i].window);
    214211        }
    215212}
     
    224221
    225222                for (i = 0; i < MAX_ICONS; i++)
    226                 {
    227                         if (entry->priv->icons[i].icon != NULL)
    228                                 gdk_window_hide(entry->priv->icons[i].window);
    229                 }
     223                        gdk_window_hide(entry->priv->icons[i].window);
    230224
    231225                GTK_WIDGET_CLASS(parent_class)->unmap(widget);
     
    339333        GTK_WIDGET_CLASS(parent_class)->realize(widget);
    340334
    341         attributes.x = 0;
    342         attributes.y = 0;
    343         attributes.width = 1;
    344         attributes.height = 1;
    345         attributes.window_type = GDK_WINDOW_CHILD;
    346         attributes.wclass = GDK_INPUT_OUTPUT;
    347         attributes.visual = gtk_widget_get_visual(widget);
    348         attributes.colormap = gtk_widget_get_colormap(widget);
    349         attributes.event_mask = gtk_widget_get_events(widget);
    350         attributes.event_mask |=
    351                 (GDK_EXPOSURE_MASK
    352                  | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
    353                  | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
    354 
    355         attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
    356 
    357335        for (i = 0; i < MAX_ICONS; i++)
    358336        {
    359337                SexyIconInfo *icon_info;
     338
     339                attributes.window_type = GDK_WINDOW_CHILD;
     340                attributes.wclass = GDK_INPUT_OUTPUT;
     341                attributes.visual = gtk_widget_get_visual(widget);
     342                attributes.colormap = gtk_widget_get_colormap(widget);
     343                attributes.event_mask = gtk_widget_get_events(widget);
     344                attributes.event_mask |=
     345                        (GDK_EXPOSURE_MASK
     346                         | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
     347                         | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
     348
     349                attributes_mask = GDK_WA_X | GDK_WA_Y |
     350                                  GDK_WA_VISUAL | GDK_WA_COLORMAP;
    360351
    361352                icon_info = &entry->priv->icons[i];
     
    470461{
    471462        GdkPixbuf *pixbuf = NULL;
    472         const gchar *stock_id;
     463        gchar *stock_id;
    473464        SexyIconInfo *icon_info = &entry->priv->icons[icon_pos];
    474465        GtkIconSize size;
    475         int w, h;
    476466
    477467        switch (gtk_image_get_storage_type(GTK_IMAGE(icon_info->icon)))
     
    483473
    484474                case GTK_IMAGE_STOCK:
    485                         gtk_image_get_stock(GTK_IMAGE(icon_info->icon), (char**)&stock_id, &size);
     475                        gtk_image_get_stock(GTK_IMAGE(icon_info->icon), &stock_id, &size);
    486476                        pixbuf = gtk_widget_render_icon(GTK_WIDGET(entry),
    487477                                                                                        stock_id, size, NULL);
    488                         break;
    489 
    490                 case GTK_IMAGE_ICON_NAME:
    491                         gtk_image_get_icon_name (GTK_IMAGE(icon_info->icon), &stock_id, &size);
    492                         gtk_icon_size_lookup (size, &w, &h);
    493                         pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), stock_id, size, 0, NULL);
    494478                        break;
    495479
     
    556540        gint x, y, width, height;
    557541
    558         if (icon_info->icon == NULL || !GTK_WIDGET_REALIZED(widget))
     542        if (icon_info->icon == NULL)
    559543                return;
    560544
     
    563547
    564548        gdk_drawable_get_size(icon_info->window, &width, &height);
    565 
    566         if (width == 1 || height == 1)
    567         {
    568                 /*
    569                  * size_allocate hasn't been called yet. These are the default values.
    570                  */
    571                 return;
    572         }
    573549
    574550        if (gdk_pixbuf_get_height(pixbuf) > height)
     
    664640                if (strcmp(name, "pixbuf")   && strcmp(name, "stock")  &&
    665641                        strcmp(name, "image")    && strcmp(name, "pixmap") &&
    666                         strcmp(name, "icon-set") && strcmp(name, "pixbuf-animation") &&
    667                         strcmp(name, "icon-name"))
     642                        strcmp(name, "icon_set") && strcmp(name, "pixbuf_animation"))
    668643                {
    669644                        return;
     
    841816                        gtk_widget_destroy(GTK_WIDGET(icon_info->icon));
    842817                        icon_info->icon = NULL;
    843 
    844                         /*
    845                          * Explicitly check, as the pointer may become invalidated
    846                          * during destruction.
    847                          */
    848                         if (icon_info->window != NULL && GDK_IS_WINDOW(icon_info->window))
    849                                 gdk_window_hide(icon_info->window);
    850818                }
    851819        }
    852820        else
    853821        {
    854                 if (icon_info->window != NULL && icon_info->icon == NULL)
    855                         gdk_window_show(icon_info->window);
    856 
    857822                g_signal_connect(G_OBJECT(icon), "notify",
    858823                                                 G_CALLBACK(update_icon), entry);
    859824
    860825                icon_info->icon = icon;
     826
    861827                g_object_ref(icon);
    862828        }
     
    965931        sexy_icon_entry_set_icon_highlight(SEXY_ICON_ENTRY(icon_entry),
    966932                                                                           SEXY_ICON_ENTRY_SECONDARY, TRUE);
     933        g_object_unref(icon);
    967934
    968935        if (icon_entry->priv->icon_released_id != 0)
Note: See TracChangeset for help on using the changeset viewer.