scale: Don't leave css nodes behind
We create and destroy gadgets inside the scale hierarchy here, and if we don't explicitly remove their CSS nodes from the parent, they stick around.
This commit is contained in:
		@ -1869,8 +1869,12 @@ gtk_scale_mark_free (gpointer data)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  GtkScaleMark *mark = data;
 | 
					  GtkScaleMark *mark = data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (mark->label_gadget)
 | 
				
			||||||
 | 
					    gtk_css_node_set_parent (gtk_css_gadget_get_node (mark->label_gadget), NULL);
 | 
				
			||||||
  g_clear_object (&mark->label_gadget);
 | 
					  g_clear_object (&mark->label_gadget);
 | 
				
			||||||
 | 
					  gtk_css_node_set_parent (gtk_css_gadget_get_node (mark->indicator_gadget), NULL);
 | 
				
			||||||
  g_object_unref (mark->indicator_gadget);
 | 
					  g_object_unref (mark->indicator_gadget);
 | 
				
			||||||
 | 
					  gtk_css_node_set_parent (gtk_css_gadget_get_node (mark->gadget), NULL);
 | 
				
			||||||
  g_object_unref (mark->gadget);
 | 
					  g_object_unref (mark->gadget);
 | 
				
			||||||
  g_free (mark->markup);
 | 
					  g_free (mark->markup);
 | 
				
			||||||
  g_free (mark);
 | 
					  g_free (mark);
 | 
				
			||||||
@ -1896,7 +1900,11 @@ gtk_scale_clear_marks (GtkScale *scale)
 | 
				
			|||||||
  g_slist_free_full (priv->marks, gtk_scale_mark_free);
 | 
					  g_slist_free_full (priv->marks, gtk_scale_mark_free);
 | 
				
			||||||
  priv->marks = NULL;
 | 
					  priv->marks = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (priv->top_marks_gadget)
 | 
				
			||||||
 | 
					    gtk_css_node_set_parent (gtk_css_gadget_get_node (priv->top_marks_gadget), NULL);
 | 
				
			||||||
  g_clear_object (&priv->top_marks_gadget);
 | 
					  g_clear_object (&priv->top_marks_gadget);
 | 
				
			||||||
 | 
					  if (priv->bottom_marks_gadget)
 | 
				
			||||||
 | 
					    gtk_css_node_set_parent (gtk_css_gadget_get_node (priv->bottom_marks_gadget), NULL);
 | 
				
			||||||
  g_clear_object (&priv->bottom_marks_gadget);
 | 
					  g_clear_object (&priv->bottom_marks_gadget);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _gtk_range_set_stop_values (GTK_RANGE (scale), NULL, 0);
 | 
					  _gtk_range_set_stop_values (GTK_RANGE (scale), NULL, 0);
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user