История изменений
Исправление wandrien, (текущая версия) :
Я всерьёз задумываюсь, что у разработчиков gtk3 течёт крыша.
Например.
Была такая функция gtk_widget_modify_font()
, которая меняла шрифт для указанного виджета.
Пытаемся собрать под gtk3 код с этой функцией. Получаем:
info-window.c:79:5: предупреждение: неявная декларация функции «gtk_widget_modify_font»; имелось в виду «gtk_widget_override_font»? [-Wimplicit-function-declaration]
79 | gtk_widget_modify_font (text_view, font_desc);
| ^~~~~~~~~~~~~~~~~~~~~~
| gtk_widget_override_font
При этом код всё равно компилируется и работает.
То есть они убрали функцию из хидера, но оставили символ в библиотеке. И этот символ не заглушка, а рабочая функция.
Но мы хотим сделать по феншую. Открываем документацию:
gtk_widget_modify_font has been deprecated since version 3.0 and should not be used in newly-written code. Use gtk_widget_override_font() instead
То есть, парни, вы тупо переименовали функцию, ЧТОБЫ ЧТО? Эээээ… Ладно. Окей. Правим сорцы:
#if GTK_CHECK_VERSION(3, 0, 0)
gtk_widget_override_font (text_view, font_desc);
#else
gtk_widget_modify_font (text_view, font_desc);
#endif
Компилируем:
info-window.c:80:5: предупреждение: «gtk_widget_override_font» устарело [-Wdeprecated-declarations]
80 | gtk_widget_override_font (text_view, font_desc);
| ^~~~~~~~~~~~~~~~~~~~~~~~
Да м****ь! Смотрим документацию:
gtk_widget_override_font has been deprecated since version 3.16 and should not be used in newly-written code. This function is not useful in the context of CSS-based rendering. If you wish to change the font a widget uses to render its text you should use a custom CSS style, through an application-specific GtkStyleProvider and a CSS style class.
То есть, понятно, да?
В 3.0. они зачем-то переименовывают функцию, которая что под старым именем что под новым работает абсолютно одинаково.
В 3.16 они объявляют её deprecated, потому что прикладной программист слишком мало задолбался, когда переименовывал функции в своём коде. Пускай-ка теперь берёт и реализует an application-specific GtkStyleProvider! А то ишь, расслабился.
Ну и в gtk4, соответственно, этой функции уже не будет.
(Впрочем, чего не будет в gtk4 — это отдельный анекдот.)
Исходная версия wandrien, :
Я всерьёз задумываюсь, что у разработчиков gtk3 течёт крыша.
Например.
Была такая функция gtk_widget_modify_font()
, которая меняла шрифт для указанного виджета.
Пытаемся собрать под gtk3 код с этой функцией. Получаем:
info-window.c:79:5: предупреждение: неявная декларация функции «gtk_widget_modify_font»; имелось в виду «gtk_widget_override_font»? [-Wimplicit-function-declaration]
79 | gtk_widget_modify_font (text_view, font_desc);
| ^~~~~~~~~~~~~~~~~~~~~~
| gtk_widget_override_font
При этом код всё равно компилируется и работает.
То есть они убрали функцию из хидера, но оставили символ в библиотеке. И этот символ не заглушка, а рабочая функция.
Но мы хотим сделать по-феншую. Открываем документацию:
gtk_widget_modify_font has been deprecated since version 3.0 and should not be used in newly-written code. Use gtk_widget_override_font() instead
То есть, парни, вы тупо переименовали функцию, ЧТОБЫ ЧТО? Ладно. Окей. Правим сорцы:
#if GTK_CHECK_VERSION(3, 0, 0)
gtk_widget_override_font (text_view, font_desc);
#else
gtk_widget_modify_font (text_view, font_desc);
#endif
Компилируем:
info-window.c:80:5: предупреждение: «gtk_widget_override_font» устарело [-Wdeprecated-declarations]
80 | gtk_widget_override_font (text_view, font_desc);
| ^~~~~~~~~~~~~~~~~~~~~~~~
Да м****ь! Смотрим документацию:
gtk_widget_override_font has been deprecated since version 3.16 and should not be used in newly-written code. This function is not useful in the context of CSS-based rendering. If you wish to change the font a widget uses to render its text you should use a custom CSS style, through an application-specific GtkStyleProvider and a CSS style class.
То есть, понятно, да?
В 3.0. они зачем-то переименовывают функцию, которая что под старым именем что под новым работает абсолютно одинаково.
В 3.16 они объявляют её deprecated, потому что прикладной программист слишком мало задолбался, когда переименовывал функции в своём коде. Пускай-ка теперь берёт и реализует an application-specific GtkStyleProvider! А то ишь, расслабился.
Ну и в gtk4, соответственно, этой функции уже не будет.
(Впрочем, чего не будет в gtk4 — это отдельный анекдот.)