From 09caed9efba94d1eeb898350b6ccca9e0860f38a Mon Sep 17 00:00:00 2001 From: Viktor Odintsev <zakhams@gmail.com> Date: Tue, 4 Jul 2017 02:03:46 +0300 Subject: [PATCH] Fix remaining deprecations --- src/frame.c | 1 + src/hints.c | 5 +++-- src/menu.c | 6 +++++- src/placement.c | 3 --- src/screen.c | 22 ++++++++++++++++++++-- src/screen.h | 4 +++- src/settings.c | 17 ++++++++--------- 7 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/frame.c b/src/frame.c index 19e571291..b5a917fbf 100644 --- a/src/frame.c +++ b/src/frame.c @@ -443,6 +443,7 @@ frameCreateTitlePixmap (Client * c, int state, int left, int right, xfwmPixmap * } layout = gtk_widget_create_pango_layout (myScreenGetGtkWidget (screen_info), c->name); + pango_layout_set_font_description (layout, myScreenGetFontDescription (screen_info)); pango_layout_set_auto_dir (layout, FALSE); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); diff --git a/src/hints.c b/src/hints.c index 1dce39cb5..c86e28c27 100644 --- a/src/hints.c +++ b/src/hints.c @@ -652,8 +652,9 @@ text_property_to_utf8 (DisplayInfo *display_info, const XTextProperty * prop) TRACE ("entering text_property_to_utf8"); list = NULL; - count = gdk_text_property_to_utf8_list (gdk_x11_xatom_to_atom (prop->encoding), - prop->format, prop->value, prop->nitems, &list); + count = gdk_text_property_to_utf8_list_for_display (display_info->gdisplay, + gdk_x11_xatom_to_atom (prop->encoding), + prop->format, prop->value, prop->nitems, &list); if (count == 0) { TRACE ("gdk_text_property_to_utf8_list returned 0"); diff --git a/src/menu.c b/src/menu.c index 04f20b42a..c31d56498 100644 --- a/src/menu.c +++ b/src/menu.c @@ -112,7 +112,7 @@ popup_position_func (GtkMenu * menu, gint * x, gint * y, gboolean * push_in, pos = user_data; - gtk_widget_size_request (GTK_WIDGET (menu), &req); + gtk_widget_get_preferred_size (GTK_WIDGET (menu), NULL, &req); xfwm_get_screen_dimensions (&width, &height); @@ -291,12 +291,16 @@ menu_default (GdkScreen *gscr, Window xid, MenuOp ops, MenuOp insensitive, MenuF default: if (menuitems[i].image_name) { +G_GNUC_BEGIN_IGNORE_DEPRECATIONS menuitem = gtk_image_menu_item_new_with_mnemonic (label); +G_GNUC_END_IGNORE_DEPRECATIONS image = gtk_image_new_from_icon_name (menuitems[i].image_name, GTK_ICON_SIZE_MENU); gtk_widget_show (image); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image); +G_GNUC_END_IGNORE_DEPRECATIONS } else { diff --git a/src/placement.c b/src/placement.c index d679bf83a..a26522991 100644 --- a/src/placement.c +++ b/src/placement.c @@ -473,7 +473,6 @@ clientConstrainPos (Client * c, gboolean show_full) static void clientKeepVisible (Client * c, gint n_monitors, GdkRectangle *monitor_rect) { - ScreenInfo *screen_info; gboolean centered; int diff_x, diff_y; @@ -481,8 +480,6 @@ clientKeepVisible (Client * c, gint n_monitors, GdkRectangle *monitor_rect) TRACE ("entering clientKeepVisible"); TRACE ("client \"%s\" (0x%lx)", c->name, c->window); - screen_info = c->screen_info; - centered = FALSE; /* We only center dialogs */ if (c->type & (WINDOW_TYPE_DIALOG)) diff --git a/src/screen.c b/src/screen.c index 907726013..02ce61d8b 100644 --- a/src/screen.c +++ b/src/screen.c @@ -305,6 +305,7 @@ myScreenInit (DisplayInfo *display_info, GdkScreen *gscr, unsigned long event_ma #endif screen_info->font_height = 0; + screen_info->font_desc = NULL; screen_info->box_gc = None; for (i = 0; i < SIDE_COUNT; i++) @@ -842,6 +843,23 @@ myScreenGetXineramaMonitorGeometry (ScreenInfo *screen_info, gint monitor_num, G XFree (infos); } +PangoFontDescription * +myScreenGetFontDescription (ScreenInfo *screen_info) +{ + GtkWidget *widget; + + g_return_val_if_fail (screen_info != NULL, FALSE); + TRACE ("entering myScreenGetFontDescription"); + + if (screen_info->font_desc != NULL) + { + return screen_info->font_desc; + } + + widget = myScreenGetGtkWidget (screen_info); + return getUIPangoFontDesc (widget); +} + gboolean myScreenUpdateFontHeight (ScreenInfo *screen_info) { @@ -854,10 +872,10 @@ myScreenUpdateFontHeight (ScreenInfo *screen_info) TRACE ("entering myScreenUpdateFontHeight"); widget = myScreenGetGtkWidget (screen_info); + desc = myScreenGetFontDescription (screen_info); context = getUIPangoContext (widget); - desc = getUIPangoFontDesc (widget); - if (desc && context) + if (desc != NULL && context != NULL) { metrics = pango_context_get_metrics (context, desc, NULL); screen_info->font_height = diff --git a/src/screen.h b/src/screen.h index 87256d4b6..5bb790505 100644 --- a/src/screen.h +++ b/src/screen.h @@ -97,8 +97,9 @@ struct _ScreenInfo /* Per screen graphic contexts */ GC box_gc; - /* Title font height */ + /* Title font */ gint font_height; + PangoFontDescription *font_desc; /* Screen data */ Colormap cmap; @@ -268,6 +269,7 @@ void myScreenFindMonitorAtPoint (ScreenInfo *, gint, gint, GdkRectangle *); +PangoFontDescription * myScreenGetFontDescription (ScreenInfo *); gboolean myScreenUpdateFontHeight (ScreenInfo *); void myScreenGetXineramaMonitorGeometry (ScreenInfo *, gint, diff --git a/src/settings.c b/src/settings.c index 5b1be4c61..e0284277c 100644 --- a/src/settings.c +++ b/src/settings.c @@ -367,13 +367,11 @@ loadTheme (ScreenInfo *screen_info, Settings *rc) GtkWidget *widget; gchar *theme; const gchar *font; - PangoFontDescription *desc; guint i, j; widget = myScreenGetGtkWidget (screen_info); display_info = screen_info->display_info; - desc = NULL; i = 0; /* Load gtk theme colors first */ @@ -451,14 +449,9 @@ loadTheme (ScreenInfo *screen_info, Settings *rc) font = getStringValue ("title_font", rc); if (font && strlen (font)) { - desc = pango_font_description_from_string (font); - if (desc) - { - gtk_widget_modify_font (widget, desc); - pango_font_description_free (desc); - myScreenUpdateFontHeight (screen_info); - } + screen_info->font_desc = pango_font_description_from_string (font); } + myScreenUpdateFontHeight (screen_info); gdk_rgba_parse (&screen_info->title_colors[ACTIVE], getStringValue ("active_text_color", rc)); gdk_rgba_parse (&screen_info->title_colors[INACTIVE], getStringValue ("inactive_text_color", rc)); @@ -895,6 +888,12 @@ unloadTheme (ScreenInfo *screen_info) TRACE ("entering unloadTheme"); + if (screen_info->font_desc != NULL) + { + pango_font_description_free (screen_info->font_desc); + screen_info->font_desc = NULL; + } + for (i = 0; i < SIDE_COUNT; i++) { xfwmPixmapFree (&screen_info->sides[i][ACTIVE]); -- GitLab