Changeset 545

Show
Ignore:
Timestamp:
03/07/08 14:52:50 (6 months ago)
Author:
kickback
Message:

sweep: more cleanups. fix ref counting bug

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sweep/trunk/src/sample-display.c

    r532 r545  
    273273      old_color = s->gc_colors[element]; 
    274274         
    275     s->gc_colors[element] = copy_gdk_colour (scheme->scheme_colors[element]); 
     275    s->gc_colors[element] = copy_gdk_colour (scheme->colors[element]); 
    276276    s->gcs[element]       = gdk_gc_new (GTK_WIDGET (s)->window); 
    277277                                              
  • sweep/trunk/src/schemes.c

    r542 r545  
    194194       
    195195    default_scheme = sweep_scheme_new (); 
    196     g_object_ref (default_scheme);   
    197        
    198      FOR_EACH_ELEMENT { 
    199        
    200       gdk_color_parse (default_colors[element], default_scheme->scheme_colors[element]); 
    201       default_scheme->element_enabled[element] = TRUE; 
     196       
     197    FOR_EACH_ELEMENT { 
     198       
     199      gdk_color_parse (default_colors[element], default_scheme->colors[element]); 
     200      default_scheme->enabled[element] = TRUE; 
    202201         
    203202    } 
     
    298297      gtk_combo_box_append_text (GTK_COMBO_BOX (schemes_combo),  
    299298                                  SWEEP_SCHEME (list->data)->name); 
    300          
     299 
    301300    } 
    302301    if ((gtk_combo_box_get_active (schemes_combo) == -1) && (index >= 0)) 
     
    385384      sweep_scheme_set_element_color (scheme, element, color); 
    386385    
    387       scheme->element_enabled[element] =  
     386      scheme->enabled[element] =  
    388387       (g_ascii_strncasecmp (string_list[2], "ENABLED", 7) == 0) ? TRUE : FALSE; 
    389388     
    390       scheme->element_style[element]   = element_get_style_type (string_list[1]); 
     389      scheme->styles[element]   = element_get_style_type (string_list[1]); 
    391390       
    392391      default_name = prefs_get_string ("user-default-scheme"); 
     
    414413    
    415414  g_return_if_fail (scheme != NULL); 
    416        
     415     
    417416    if (prepend) 
    418417      schemes_list = g_list_prepend (schemes_list, scheme); 
    419418    else 
    420419      schemes_list = g_list_append (schemes_list, scheme); 
    421        
     420 
    422421    schemes_refresh_combo ((prepend ? 0 : (g_list_length (schemes_list) - 1))); 
    423        
     422               
    424423    if (gtk_main_level() > 0) { 
    425424      /* trigger color schemes menu refresh */ 
     
    434433     
    435434  g_return_if_fail (scheme != NULL); 
    436      
    437   // unref scheme triggering signals etc 
    438435  schemes_list = g_list_remove (schemes_list, scheme); 
    439   g_object_unref ((gpointer) scheme); 
     436  schemes_refresh_combo (0); 
    440437  schemes_modified = TRUE; 
    441   schemes_refresh_combo (0); 
    442  
    443438  g_signal_emit_by_name ((gpointer)menu_item_proxy, "event", NULL, &ret, NULL); 
    444439  gtk_combo_box_set_active (schemes_combo, 0); 
     440  g_object_unref ((gpointer) scheme); 
    445441} 
    446442 
     
    682678    FOR_EACH_ELEMENT { 
    683679         
    684       string_list[0] = gdk_color_to_string (scheme->scheme_colors[element]); 
    685       string_list[1] = style_types[scheme->element_style[element]]; 
     680      string_list[0] = gdk_color_to_string (scheme->colors[element]); 
     681      string_list[1] = style_types[scheme->styles[element]]; 
    686682      string_list[2] =  
    687          scheme->element_enabled ? g_strdup ("ENABLED") : g_strdup ("DISABLED"); 
     683         scheme->enabled ? g_strdup ("ENABLED") : g_strdup ("DISABLED"); 
    688684       
    689685      g_key_file_set_string_list (key_file, scheme->name, 
     
    870866  if (scheme == NULL) 
    871867    return; 
    872    
     868 
    873869  FOR_EACH_ELEMENT { 
    874870       
    875     fill_pixmap_from_scheme_color (scheme->scheme_colors[element],  
     871    fill_pixmap_from_scheme_color (scheme->colors[element],  
    876872                                   &color_swatches[element]); 
    877873       
     
    884880                        SCHEME_OBJECT_COLUMN, scheme, 
    885881                        ELEMENT_NUMBER_COLUMN, element, 
    886                         -1);       
     882                        -1);  
    887883  } 
    888884  treeview_set_selected (GTK_TREE_VIEW (treeview), 0, 0); 
     
    903899 
    904900  gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (colorselection), 
    905                                          scheme->scheme_colors[element]); 
     901                                         scheme->colors[element]); 
    906902  gtk_color_selection_set_previous_color (GTK_COLOR_SELECTION (colorselection), 
    907                                          scheme->scheme_colors[element]); 
     903                                         scheme->colors[element]); 
    908904     
    909905  g_signal_handlers_unblock_by_func     (colorselection,  
     
    919915   
    920916   
    921   elements_store = gtk_list_store_new (N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_OBJECT, G_TYPE_STRING, G_TYPE_INT); 
     917  elements_store = gtk_list_store_new (N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_INT); 
    922918  treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (elements_store)); 
    923919   
     
    969965    sweep_scheme_set_element_color (scheme, element, color); 
    970966                                             
    971     fill_pixmap_from_scheme_color (scheme->scheme_colors[element],  
     967    fill_pixmap_from_scheme_color (scheme->colors[element],  
    972968                                   &color_swatches[element]); 
    973969                                              
  • sweep/trunk/src/sweep-scheme.c

    r542 r545  
    7777 
    7878static void 
     79sweep_scheme_dispose (GObject * object)  
     80{ 
     81  g_object_unref ((gpointer) SWEEP_SCHEME (object)->preview_icon); 
     82     
     83  G_OBJECT_CLASS (sweep_scheme_parent_class)->dispose (object); 
     84} 
     85 
     86static void 
    7987sweep_scheme_finalize (GObject * object)  
    8088{ 
    81      
    8289  gint element; 
    8390  SweepScheme * scheme = SWEEP_SCHEME (object); 
    84   g_object_unref ((gpointer) scheme->preview_icon); 
    85      
     91 
    8692  g_free (scheme->name); 
    8793   
    8894  for (element = 0; element < SCHEME_ELEMENT_LAST; element++) 
    8995  {       
    90     g_free (scheme->scheme_colors[element]); 
     96    g_free (scheme->colors[element]); 
    9197  } 
    92   g_free (scheme); 
    93      
    94   if (G_OBJECT_CLASS (sweep_scheme_parent_class)->finalize) 
    95     G_OBJECT_CLASS (sweep_scheme_parent_class)->finalize (object); 
    96        
     98  G_OBJECT_CLASS (sweep_scheme_parent_class)->finalize (object);       
    9799} 
    98100static void 
    99101sweep_scheme_init (SweepScheme * scheme) 
    100102{ 
    101    
    102103  gint element; 
    103104  GdkVisual *visual; 
     
    110111  for (element = 0; element < SCHEME_ELEMENT_LAST; element++) 
    111112  { 
    112     scheme->scheme_colors[element] = g_new0 (GdkColor, 1); 
    113     scheme->element_enabled[element] = TRUE;  
     113    scheme->colors[element]  = g_new0 (GdkColor, 1); 
     114    scheme->enabled[element] = TRUE; 
     115    scheme->styles[element]  = SCHEME_GTK_STYLE_NONE; 
    114116  } 
    115117} 
     
    121123  GObjectClass *gobject_class = G_OBJECT_CLASS (klass); 
    122124 
    123   //gobject_class->dispose = gtk_object_dispose; 
     125  gobject_class->dispose  = sweep_scheme_dispose; 
    124126  gobject_class->finalize = sweep_scheme_finalize; 
    125  
    126   //klass->destroy = gtk_object_real_destroy; 
    127127 
    128128  object_signals[DESTROY] = 
     
    161161sweep_scheme_new (void)  
    162162{ 
    163      
    164163    return g_object_new (SWEEP_TYPE_SCHEME, NULL); 
    165      
    166164} 
    167165 
     
    172170  GdkGC       * gc = gdk_gc_new (preview_icon); 
    173171     
    174   gdk_gc_set_rgb_fg_color (gc, scheme->scheme_colors[SCHEME_ELEMENT_BG]); 
     172  gdk_gc_set_rgb_fg_color (gc, scheme->colors[SCHEME_ELEMENT_BG]); 
    175173  gdk_draw_rectangle (preview_icon,  
    176174                      gc, 
    177175                      TRUE, 0, 0, 16, 16); 
    178176     
    179   gdk_gc_set_rgb_fg_color (gc, scheme->scheme_colors[SCHEME_ELEMENT_FG]); 
     177  gdk_gc_set_rgb_fg_color (gc, scheme->colors[SCHEME_ELEMENT_FG]); 
    180178  gdk_draw_rectangle (preview_icon,  
    181179                      gc, 
     
    205203    for (element = 0; element < SCHEME_ELEMENT_LAST; element++) 
    206204    { 
    207         scheme_copy->scheme_colors[element]->red   = scheme->scheme_colors[element]->red; 
    208         scheme_copy->scheme_colors[element]->green = scheme->scheme_colors[element]->green; 
    209         scheme_copy->scheme_colors[element]->blue  = scheme->scheme_colors[element]->blue; 
    210         scheme_copy->element_enabled[element]      = scheme->element_enabled[element];  
     205        scheme_copy->colors[element]->red   = scheme->colors[element]->red; 
     206        scheme_copy->colors[element]->green = scheme->colors[element]->green; 
     207        scheme_copy->colors[element]->blue  = scheme->colors[element]->blue; 
     208        scheme_copy->enabled[element]       = scheme->enabled[element]; 
     209        scheme_copy->styles[element]        = scheme->styles[element]; 
    211210    } 
    212211    update_scheme_preview (scheme_copy); 
     
    224223  GdkColor * old_color; 
    225224     
    226   if ((scheme != NULL) || 
    227       (color != NULL)) { 
    228          
    229     if ((element < 0) || (element >= SCHEME_ELEMENT_LAST)) 
    230       return; 
    231        
    232     old_color = scheme->scheme_colors[element]; 
    233     scheme->scheme_colors[element] = copy_gdk_colour (color); 
    234     g_free (old_color); 
     225  g_return_if_fail (scheme != NULL); 
     226  g_return_if_fail (color != NULL); 
     227  g_return_if_fail ((element >= 0) || (element < SCHEME_ELEMENT_LAST)); 
     228       
     229  old_color = scheme->colors[element]; 
     230  scheme->colors[element] = copy_gdk_colour (color); 
     231  g_free (old_color); 
    235232           
    236     g_signal_emit_by_name ((gpointer) scheme, "changed"); 
     233  g_signal_emit_by_name ((gpointer) scheme, "changed"); 
    237234       
    238235  if ((element == SCHEME_ELEMENT_FG) || (element == SCHEME_ELEMENT_BG)) 
    239236    update_scheme_preview (scheme); 
    240   }  
    241      
    242237} 
    243238 
     
    247242                                  gboolean is_enabled) 
    248243{ 
    249   if (scheme != NULL) { 
    250          
    251     if ((element < 0) || (element >= SCHEME_ELEMENT_LAST)) 
     244  g_return_if_fail (scheme != NULL); 
     245  g_return_if_fail ((element >= 0) || (element < SCHEME_ELEMENT_LAST)); 
     246 
     247    if (scheme->enabled[element] == is_enabled) /* no change */ 
    252248      return; 
    253     if (scheme->element_enabled[element] == is_enabled) /* no change */ 
    254       return; 
    255    
    256     scheme->element_enabled[element] = is_enabled; 
     249   
     250    scheme->enabled[element] = is_enabled; 
    257251             
    258252    g_signal_emit_by_name ((gpointer) scheme, "changed"); 
    259   }  
    260253} 
    261254 
     
    265258                                gint style) 
    266259{ 
    267   if (scheme != NULL) { 
     260  g_return_if_fail (scheme != NULL); 
     261  g_return_if_fail ((element >= 0) || (element < SCHEME_ELEMENT_LAST)); 
     262  g_return_if_fail ((element >= 0) || (element < SCHEME_GTK_STYLE_LAST)); 
    268263         
    269     if ((element < 0) || (element >= SCHEME_ELEMENT_LAST)) 
    270       return; 
    271     if ((style < 0) || (style >= SCHEME_GTK_STYLE_LAST)) 
    272       return; 
    273     if (scheme->element_style[element] == style) /* no change */ 
    274       return; 
    275    
    276     scheme->element_style[element] = style; 
     264  if (scheme->styles[element] == style) /* no change */ 
     265    return; 
     266   
     267  scheme->styles[element] = style; 
    277268             
    278     g_signal_emit_by_name ((gpointer) scheme, "changed"); 
    279        
    280     if ((element == SCHEME_ELEMENT_FG) || (element == SCHEME_ELEMENT_BG)) 
    281       update_scheme_preview (scheme); 
    282   }  
    283      
    284 
    285  
    286  
    287  
     269  g_signal_emit_by_name ((gpointer) scheme, "changed"); 
     270       
     271  if ((element == SCHEME_ELEMENT_FG) || (element == SCHEME_ELEMENT_BG)) 
     272    update_scheme_preview (scheme); 
     273
     274 
     275 
     276 
  • sweep/trunk/src/sweep-scheme.h

    r542 r545  
    8383   
    8484  GObject     parent; 
    85   GdkColor  * scheme_colors[SCHEME_ELEMENT_LAST]; 
    86   gboolean    element_enabled[SCHEME_ELEMENT_LAST]; /* always true for some elements */ 
    87   gint        element_style[SCHEME_ELEMENT_LAST]; /* overrides custom colors if > 0 */ 
     85  GdkColor  * colors[SCHEME_ELEMENT_LAST]; 
     86  gboolean    enabled[SCHEME_ELEMENT_LAST]; /* always true for some elements */ 
     87  gint        styles[SCHEME_ELEMENT_LAST]; /* overrides custom colors if > 0 */ 
    8888  gchar     * name; 
    8989  gboolean    modified;