vcl/unx/gtk3/gtkinst.cxx |   24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

New commits:
commit fbfda267e8f4b55dff30a3827bff760565f36fdb
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Apr 15 17:19:05 2022 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Apr 15 20:43:47 2022 +0200

    gtk[3|4] add the css "warning" "error" to GtkEntry when those states fit
    
    Change-Id: I4063155d25b80f6b5912f0b63dc3c8fa21c7263b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133079
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 53f9e3bb644f..50e3b7949877 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -12586,30 +12586,42 @@ public:
 
 namespace
 {
-#if GTK_CHECK_VERSION(4, 0, 0)
     // CSS nodes: entry[.flat][.warning][.error]
     void set_widget_css_message_type(GtkWidget* pWidget, 
weld::EntryMessageType eType)
     {
+#if GTK_CHECK_VERSION(4, 0, 0)
+        gtk_widget_remove_css_class(pWidget, "error");
+        gtk_widget_remove_css_class(pWidget, "warning");
+#else
+        GtkStyleContext *pWidgetContext = 
gtk_widget_get_style_context(pWidget);
+        gtk_style_context_remove_class(pWidgetContext, "error");
+        gtk_style_context_remove_class(pWidgetContext, "warning");
+#endif
+
         switch (eType)
         {
             case weld::EntryMessageType::Normal:
-                gtk_widget_remove_css_class(pWidget, "error");
-                gtk_widget_remove_css_class(pWidget, "warning");
                 break;
             case weld::EntryMessageType::Warning:
-                gtk_widget_remove_css_class(pWidget, "error");
+#if GTK_CHECK_VERSION(4, 0, 0)
                 gtk_widget_add_css_class(pWidget, "warning");
+#else
+                gtk_style_context_add_class(pWidgetContext, "warning");
+#endif
                 break;
             case weld::EntryMessageType::Error:
-                gtk_widget_remove_css_class(pWidget, "warning");
+#if GTK_CHECK_VERSION(4, 0, 0)
                 gtk_widget_add_css_class(pWidget, "error");
+#else
+                gtk_style_context_add_class(pWidgetContext, "error");
+#endif
                 break;
         }
     }
-#endif
 
     void set_entry_message_type(GtkEntry* pEntry, weld::EntryMessageType eType)
     {
+        set_widget_css_message_type(GTK_WIDGET(pEntry), eType);
         switch (eType)
         {
             case weld::EntryMessageType::Normal:

Reply via email to