LCOV - code coverage report
Current view: top level - src/plugins/xdp - valent-xdp-utils.c (source / functions) Coverage Total Hit
Test: Code Coverage Lines: 0.0 % 20 0
Test Date: 2024-12-06 20:21:07 Functions: 0.0 % 4 0
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: - 0 0

             Branch data     Line data    Source code
       1                 :             : // SPDX-License-Identifier: GPL-3.0-or-later
       2                 :             : // SPDX-FileCopyrightText: Andy Holmes <andrew.g.r.holmes@gmail.com>
       3                 :             : 
       4                 :             : #define G_LOG_DOMAIN "valent-xdp-utils"
       5                 :             : 
       6                 :             : #include "config.h"
       7                 :             : 
       8                 :             : #include <libportal/portal.h>
       9                 :             : #if defined(HAVE_GTK4) && defined(HAVE_LIBPORTAL_GTK4)
      10                 :             : #include <gtk/gtk.h>
      11                 :             : #include <libportal-gtk4/portal-gtk4.h>
      12                 :             : #endif /* HAVE_GTK4 && HAVE_LIBPORTAL_GTK4 */
      13                 :             : 
      14                 :             : #include "valent-xdp-utils.h"
      15                 :             : 
      16                 :             : 
      17                 :             : static XdpPortal *default_portal = NULL;
      18                 :             : 
      19                 :             : 
      20                 :             : #if defined(HAVE_GTK4) && defined(HAVE_LIBPORTAL_GTK4)
      21                 :             : static GtkWindow *
      22                 :           0 : valent_xdp_get_active_window (void)
      23                 :             : {
      24                 :           0 :   GListModel *windows = NULL;
      25                 :           0 :   unsigned int n_windows = 0;
      26                 :             : 
      27                 :           0 :   windows = gtk_window_get_toplevels ();
      28                 :           0 :   n_windows = g_list_model_get_n_items (windows);
      29                 :             : 
      30                 :           0 :   for (unsigned int i = 0; i < n_windows; i++)
      31                 :             :     {
      32                 :           0 :       g_autoptr (GtkWindow) window = g_list_model_get_item (windows, i);
      33                 :             : 
      34                 :           0 :       if (gtk_window_is_active (window))
      35                 :             :         return g_steal_pointer (&window);
      36                 :             :     }
      37                 :             : 
      38                 :             :   return NULL;
      39                 :             : }
      40                 :             : #endif /* HAVE_GTK4 */
      41                 :             : 
      42                 :             : /**
      43                 :             :  * valent_xdp_get_default:
      44                 :             :  *
      45                 :             :  * Get the default [class@Xdp.Portal] object for Valent.
      46                 :             :  *
      47                 :             :  * Returns: (transfer none): a `XdpPortal`
      48                 :             :  */
      49                 :             : XdpPortal *
      50                 :           0 : valent_xdp_get_default (void)
      51                 :             : {
      52                 :           0 :   if (default_portal == NULL)
      53                 :           0 :     default_portal = xdp_portal_new ();
      54                 :             : 
      55                 :           0 :   return default_portal;
      56                 :             : }
      57                 :             : 
      58                 :             : /**
      59                 :             :  * valent_xdp_get_parent:
      60                 :             :  *
      61                 :             :  * Get an [class@Xdp.Parent], if available.
      62                 :             :  *
      63                 :             :  * If Valent was compiled without support for libportal-gtk4 or there is no
      64                 :             :  * active window, this function will return %NULL.
      65                 :             :  *
      66                 :             :  * Returns: (nullable) (transfer full): a `XdpParent`
      67                 :             :  */
      68                 :             : XdpParent *
      69                 :           0 : valent_xdp_get_parent (void)
      70                 :             : {
      71                 :             : #if defined(HAVE_GTK4) && defined(HAVE_LIBPORTAL_GTK4)
      72                 :           0 :   g_autoptr (GtkWindow) window = NULL;
      73                 :             : 
      74                 :           0 :   window = valent_xdp_get_active_window ();
      75                 :           0 :   if (window != NULL)
      76                 :           0 :     return xdp_parent_new_gtk (window);
      77                 :             : #endif /* HAVE_GTK4 && HAVE_LIBPORTAL_GTK4 */
      78                 :             : 
      79                 :             :   return NULL;
      80                 :             : }
      81                 :             : 
      82                 :             : /**
      83                 :             :  * valent_xdp_has_parent:
      84                 :             :  *
      85                 :             :  * Check if an active parent is available.
      86                 :             :  *
      87                 :             :  * If Valent was compiled without support for libportal-gtk4 or there is no
      88                 :             :  * active window, this function will return %FALSE.
      89                 :             :  *
      90                 :             :  * Returns: %TRUE if there is an active window, or %FALSE if not
      91                 :             :  */
      92                 :             : gboolean
      93                 :           0 : valent_xdp_has_parent (void)
      94                 :             : {
      95                 :           0 :   g_autoptr (XdpParent) parent = valent_xdp_get_parent ();
      96                 :             : 
      97                 :           0 :   return parent != NULL;
      98                 :             : }
      99                 :             : 
        

Generated by: LCOV version 2.0-1