From bc555cd64fade1cba2649b7e7618dff340026858 Mon Sep 17 00:00:00 2001 From: Daniel Boles Date: Sat, 2 Sep 2017 12:18:07 +0100 Subject: [PATCH] imcontextxim: Fix showing glyph in status window This custom drawing code was broken, which meant the current mode indicator/character did not show, severely hindering XIM users. Fix by simply removing the custom drawing and just being a GtkWindow, by cherry-picking these two from GTK+ 3: commit 211ccb5c73a444683d493588c3eb29b457a5586b commit c750cea4e57ed3bcb5ba7eada95d0be380aa2fe5t https://bugzilla.gnome.org/show_bug.cgi?id=696624 --- modules/input/gtkimcontextxim.c | 48 --------------------------------- 1 file changed, 48 deletions(-) diff --git a/modules/input/gtkimcontextxim.c b/modules/input/gtkimcontextxim.c index 044055382c..622f727d40 100644 --- a/modules/input/gtkimcontextxim.c +++ b/modules/input/gtkimcontextxim.c @@ -1747,48 +1747,6 @@ status_window_get (GtkWidget *toplevel) return status_window; } -/* Draw the background (normally white) and border for the status window - */ -static gboolean -on_status_window_expose_event (GtkWidget *widget, - GdkEventExpose *event) -{ - cairo_t *cr; - - cr = gdk_cairo_create (widget->window); - - gdk_cairo_set_source_color (cr, &widget->style->base[GTK_STATE_NORMAL]); - cairo_rectangle (cr, - 0, 0, - widget->allocation.width, widget->allocation.height); - cairo_fill (cr); - - gdk_cairo_set_source_color (cr, &widget->style->text[GTK_STATE_NORMAL]); - cairo_rectangle (cr, - 0, 0, - widget->allocation.width - 1, widget->allocation.height - 1); - cairo_fill (cr); - - return FALSE; -} - -/* We watch the ::style-set signal for our label widget - * and use that to change it's foreground color to match - * the 'text' color of the toplevel window. The text/base - * pair of colors might be reversed from the fg/bg pair - * that are normally used for labels. - */ -static void -on_status_window_style_set (GtkWidget *toplevel, - GtkStyle *previous_style, - GtkWidget *label) -{ - gint i; - - for (i = 0; i < 5; i++) - gtk_widget_modify_fg (label, i, &toplevel->style->text[i]); -} - /* Creates the widgets for the status window; called when we * first need to show text for the status window. */ @@ -1802,19 +1760,13 @@ status_window_make_window (StatusWindow *status_window) window = status_window->window; gtk_window_set_resizable (GTK_WINDOW (window), FALSE); - gtk_widget_set_app_paintable (window, TRUE); status_label = gtk_label_new (""); gtk_misc_set_padding (GTK_MISC (status_label), 1, 1); gtk_widget_show (status_label); - g_signal_connect (window, "style-set", - G_CALLBACK (on_status_window_style_set), status_label); gtk_container_add (GTK_CONTAINER (window), status_label); - g_signal_connect (window, "expose-event", - G_CALLBACK (on_status_window_expose_event), NULL); - gtk_window_set_screen (GTK_WINDOW (status_window->window), gtk_widget_get_screen (status_window->toplevel));