@@ -547,6 +547,46 @@ pointless_eventbox_subclass_get_type (void)
547547 return eventbox_type ;
548548}
549549
550+ static void
551+ override_background_color (GtkWidget * widget ,
552+ GdkRGBA * rgba )
553+ {
554+ gchar * css ;
555+ GtkCssProvider * provider ;
556+
557+ provider = gtk_css_provider_new ();
558+
559+ css = g_strdup_printf ("* { background-color: %s;}" ,
560+ gdk_rgba_to_string (rgba ));
561+ gtk_css_provider_load_from_data (provider , css , -1 , NULL );
562+ g_free (css );
563+
564+ gtk_style_context_add_provider (gtk_widget_get_style_context (widget ),
565+ GTK_STYLE_PROVIDER (provider ),
566+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION );
567+ g_object_unref (provider );
568+ }
569+
570+ static void
571+ override_color (GtkWidget * widget ,
572+ GdkRGBA * rgba )
573+ {
574+ gchar * css ;
575+ GtkCssProvider * provider ;
576+
577+ provider = gtk_css_provider_new ();
578+
579+ css = g_strdup_printf ("* { color: %s;}" ,
580+ gdk_rgba_to_string (rgba ));
581+ gtk_css_provider_load_from_data (provider , css , -1 , NULL );
582+ g_free (css );
583+
584+ gtk_style_context_add_provider (gtk_widget_get_style_context (widget ),
585+ GTK_STYLE_PROVIDER (provider ),
586+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION );
587+ g_object_unref (provider );
588+ }
589+
550590static GtkCellEditable *
551591egg_cell_renderer_keys_start_editing (GtkCellRenderer * cell ,
552592 GdkEvent * event ,
@@ -563,6 +603,9 @@ egg_cell_renderer_keys_start_editing (GtkCellRenderer *cell,
563603 GtkWidget * label ;
564604 GtkWidget * eventbox ;
565605 GValue celltext_editable = {0 };
606+ GdkRGBA box_color ;
607+ GdkRGBA label_color ;
608+ GdkRGBA * c ;
566609
567610 celltext = GTK_CELL_RENDERER_TEXT (cell );
568611 keys = EGG_CELL_RENDERER_KEYS (cell );
@@ -602,11 +645,19 @@ egg_cell_renderer_keys_start_editing (GtkCellRenderer *cell,
602645 label = gtk_label_new (NULL );
603646 gtk_label_set_xalign (GTK_LABEL (label ), 0.0 );
604647
605- gtk_widget_modify_bg (eventbox , GTK_STATE_NORMAL ,
606- & gtk_widget_get_style (widget )-> bg [GTK_STATE_SELECTED ]);
648+ gtk_style_context_get (gtk_widget_get_style_context (widget ), GTK_STATE_INSENSITIVE ,
649+ GTK_STYLE_PROPERTY_BACKGROUND_COLOR ,
650+ & c , NULL );
651+ box_color = * c ;
652+ gdk_rgba_free (c );
653+
654+ override_background_color (eventbox , & box_color );
655+
656+ gtk_style_context_get_color (gtk_widget_get_style_context (widget ),
657+ GTK_STATE_INSENSITIVE ,
658+ & label_color );
607659
608- gtk_widget_modify_fg (label , GTK_STATE_NORMAL ,
609- & gtk_widget_get_style (widget )-> fg [GTK_STATE_SELECTED ]);
660+ override_color (label , & label_color );
610661
611662 gtk_label_set_text (GTK_LABEL (label ),
612663 TOOLTIP_TEXT );
0 commit comments