changeset 2284:3361ce6070ce

Add DW_FEATURE_TASK_BAR to the feature tests, for taskbar icon support. Not having this earlier was probably an oversight, but added it because GTK4 removes the widget that allowed this support.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 03 Feb 2021 21:44:15 +0000
parents 0c88059df8e9
children 5113afb0aea9
files dw.h dwtest.c gtk/dw.c gtk3/dw.c gtk4/dw.c mac/dw.m os2/dw.c win/dw.c
diffstat 8 files changed, 33 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/dw.h	Wed Feb 03 20:55:51 2021 +0000
+++ b/dw.h	Wed Feb 03 21:44:15 2021 +0000
@@ -1524,6 +1524,7 @@
     DW_FEATURE_NOTIFICATION,            /* Supports sending system notifications */
     DW_FEATURE_UTF8_UNICODE,            /* Supports UTF8 encoded Unicode text */
     DW_FEATURE_MLE_RICH_EDIT,           /* Supports Rich Edit based MLE control (Windows) */
+    DW_FEATURE_TASK_BAR,                /* Supports icons in the taskbar or similar system widget */
     DW_FEATURE_MAX
 } DWFEATURE;
 
--- a/dwtest.c	Wed Feb 03 20:55:51 2021 +0000
+++ b/dwtest.c	Wed Feb 03 21:44:15 2021 +0000
@@ -1987,6 +1987,7 @@
     "Supports sending system notifications",
     "Supports UTF8 encoded Unicode text",
     "Supports Rich Edit based MLE control (Windows)",
+    "Supports icons in the taskbar or similar system widget",
     NULL };
 
 /*
--- a/gtk/dw.c	Wed Feb 03 20:55:51 2021 +0000
+++ b/gtk/dw.c	Wed Feb 03 21:44:15 2021 +0000
@@ -13981,6 +13981,9 @@
 #ifdef DW_INCLUDE_DEPRECATED
         case DW_FEATURE_MDI:
 #endif
+#if GTK_CHECK_VERSION(2,10,0)
+        case DW_FEATURE_TASK_BAR:
+#endif
         case DW_FEATURE_CONTAINER_STRIPE:
         case DW_FEATURE_UTF8_UNICODE:
         case DW_FEATURE_MLE_WORD_WRAP:
@@ -14017,6 +14020,9 @@
 #ifdef DW_INCLUDE_DEPRECATED
         case DW_FEATURE_MDI:
 #endif
+#if GTK_CHECK_VERSION(2,10,0)
+        case DW_FEATURE_TASK_BAR:
+#endif
         case DW_FEATURE_CONTAINER_STRIPE:
         case DW_FEATURE_UTF8_UNICODE:
         case DW_FEATURE_MLE_WORD_WRAP:
--- a/gtk3/dw.c	Wed Feb 03 20:55:51 2021 +0000
+++ b/gtk3/dw.c	Wed Feb 03 21:44:15 2021 +0000
@@ -12484,6 +12484,7 @@
 #if !GTK_CHECK_VERSION(3,14,0)
         case DW_FEATURE_CONTAINER_STRIPE:
 #endif
+        case DW_FEATURE_TASK_BAR:
         case DW_FEATURE_UTF8_UNICODE:
         case DW_FEATURE_MLE_WORD_WRAP:
             return DW_FEATURE_ENABLED;
@@ -12525,6 +12526,7 @@
 #if !GTK_CHECK_VERSION(3,14,0)
         case DW_FEATURE_CONTAINER_STRIPE:
 #endif
+        case DW_FEATURE_TASK_BAR:
         case DW_FEATURE_UTF8_UNICODE:
         case DW_FEATURE_MLE_WORD_WRAP:
             return DW_ERROR_GENERAL;
--- a/gtk4/dw.c	Wed Feb 03 20:55:51 2021 +0000
+++ b/gtk4/dw.c	Wed Feb 03 21:44:15 2021 +0000
@@ -2226,14 +2226,14 @@
 {
    if(menu && *menu)
    {
-      GtkWidget *window;
+      GtkWidget *window = NULL;
 
       /* If it is a menu bar, try to delete the reference to it */
       if(GTK_IS_POPOVER_MENU_BAR(*menu) &&
          (window = GTK_WIDGET(g_object_get_data(G_OBJECT(*menu), "_dw_window"))))
             g_object_set_data(G_OBJECT(window), "_dw_menubar", NULL);
       /* Actually destroy the menu */
-      if(GTK_IS_WIDGET(*menu))
+      if(GTK_IS_WIDGET(*menu) && window)
       {
          GtkWidget *box = GTK_WIDGET(g_object_get_data(G_OBJECT(window), "_dw_grid"));
          if(box && GTK_IS_GRID(box))
--- a/mac/dw.m	Wed Feb 03 20:55:51 2021 +0000
+++ b/mac/dw.m	Wed Feb 03 21:44:15 2021 +0000
@@ -13096,6 +13096,9 @@
 #ifdef BUILDING_FOR_MOUNTAIN_LION
         case DW_FEATURE_NOTIFICATION:
 #endif
+#ifdef BUILDING_FOR_YOSEMITE
+        case DW_FEATURE_TASK_BAR:
+#endif
         case DW_FEATURE_HTML:
         case DW_FEATURE_HTML_RESULT:
         case DW_FEATURE_CONTAINER_STRIPE:
@@ -13153,6 +13156,9 @@
 #ifdef BUILDING_FOR_MOUNTAIN_LION
         case DW_FEATURE_NOTIFICATION:
 #endif
+#ifdef BUILDING_FOR_YOSEMITE
+        case DW_FEATURE_TASK_BAR:
+#endif
         case DW_FEATURE_HTML:
         case DW_FEATURE_HTML_RESULT:
         case DW_FEATURE_CONTAINER_STRIPE:
--- a/os2/dw.c	Wed Feb 03 20:55:51 2021 +0000
+++ b/os2/dw.c	Wed Feb 03 21:44:15 2021 +0000
@@ -13860,6 +13860,12 @@
         case DW_FEATURE_NOTEBOOK_STATUS_TEXT:
         case DW_FEATURE_MDI:
             return DW_FEATURE_ENABLED;
+        case DW_FEATURE_TASK_BAR:
+        {
+            if(hwndTrayServer)
+                return DW_ERROR_ENABLED;
+            return DW_FEATURE_UNSUPPORTED;
+        }
         default:
             return DW_FEATURE_UNSUPPORTED;
     }
@@ -13891,6 +13897,12 @@
         case DW_FEATURE_NOTEBOOK_STATUS_TEXT:
         case DW_FEATURE_MDI:
             return DW_ERROR_GENERAL;
+        case DW_FEATURE_TASK_BAR:
+        {
+            if(hwndTrayServer)
+                return DW_ERROR_GENERAL;
+            return DW_FEATURE_UNSUPPORTED;
+        }
         /* These features are supported and configurable */
         default:
             return DW_FEATURE_UNSUPPORTED;
--- a/win/dw.c	Wed Feb 03 20:55:51 2021 +0000
+++ b/win/dw.c	Wed Feb 03 21:44:15 2021 +0000
@@ -13891,6 +13891,7 @@
             return DW_FEATURE_UNSUPPORTED;
         }
 #endif
+        case DW_FEATURE_TASK_BAR:  
         default:
             return DW_FEATURE_UNSUPPORTED;
     }
@@ -13969,6 +13970,8 @@
             return DW_ERROR_GENERAL;
         }
 #endif
+        case DW_FEATURE_TASK_BAR:  
+            return DW_ERROR_GENERAL;
         default:
             return DW_FEATURE_UNSUPPORTED;
     }