forked from AuroraMiddleware/gtk
Introduce API to get the preferred visual
Unless GDK_RGBA=0 is set, this will be the RGBA visual. The new function is called gdk_screen_get_preferred_visual(). https://bugzilla.gnome.org/show_bug.cgi?id=630217
This commit is contained in:
parent
15060a8f24
commit
2b95d1a34e
@ -195,6 +195,7 @@ GdkScreen
|
||||
gdk_screen_get_default
|
||||
gdk_screen_get_system_visual
|
||||
gdk_screen_get_rgba_visual
|
||||
gdk_screen_get_preferred_visual
|
||||
gdk_screen_is_composited
|
||||
gdk_screen_get_root_window
|
||||
gdk_screen_get_display
|
||||
|
@ -478,6 +478,15 @@ nevertheless.
|
||||
</para>
|
||||
</formalpara>
|
||||
|
||||
<formalpara>
|
||||
<title><envar>GDK_RGBA</envar></title>
|
||||
|
||||
<para>
|
||||
Since 3.12, this environment variable can be used to prevent
|
||||
using RGBA visuals on the X11 backend by setting GDK_RGBA=0.
|
||||
</para>
|
||||
</formalpara>
|
||||
|
||||
<formalpara>
|
||||
<title><envar>XDG_DATA_HOME</envar>, <envar>XDG_DATA_DIRS</envar></title>
|
||||
|
||||
|
@ -912,6 +912,36 @@ gdk_screen_get_rgba_visual (GdkScreen *screen)
|
||||
return GDK_SCREEN_GET_CLASS (screen)->get_rgba_visual (screen);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_screen_get_preferred_visual:
|
||||
* @screen: a #GdkScreen
|
||||
*
|
||||
* Returns the visual that is preferred when creating windows.
|
||||
*
|
||||
* This will be the visual returned by gdk_screen_get_rgba_visual()
|
||||
* unless that is not available, or unless the environment
|
||||
* variable <envar>GDK_RGBA</envar> is set to 0.
|
||||
*
|
||||
* Return value: (transfer none): the preferred visual to use
|
||||
* for windows
|
||||
*
|
||||
* Since: 3.12
|
||||
*/
|
||||
GdkVisual *
|
||||
gdk_screen_get_preferred_visual (GdkScreen *screen)
|
||||
{
|
||||
GdkVisual *visual;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
|
||||
|
||||
visual = gdk_screen_get_rgba_visual (screen);
|
||||
|
||||
if (visual == NULL || g_strcmp0 (g_getenv ("GDK_RGBA"), "0") == 0)
|
||||
visual = gdk_screen_get_system_visual (screen);
|
||||
|
||||
return visual;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_screen_is_composited:
|
||||
* @screen: a #GdkScreen
|
||||
|
@ -45,6 +45,8 @@ GDK_AVAILABLE_IN_ALL
|
||||
GdkVisual * gdk_screen_get_system_visual (GdkScreen *screen);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GdkVisual * gdk_screen_get_rgba_visual (GdkScreen *screen);
|
||||
GDK_AVAILABLE_IN_3_12
|
||||
GdkVisual * gdk_screen_get_preferred_visual (GdkScreen *screen);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
gboolean gdk_screen_is_composited (GdkScreen *screen);
|
||||
|
||||
|
@ -66,6 +66,7 @@ struct _GdkScreenClass
|
||||
GList * (* list_visuals) (GdkScreen *screen);
|
||||
GdkVisual * (* get_system_visual) (GdkScreen *screen);
|
||||
GdkVisual * (* get_rgba_visual) (GdkScreen *screen);
|
||||
GdkVisual * (* get_preferred_visual) (GdkScreen *screen);
|
||||
gboolean (* is_composited) (GdkScreen *screen);
|
||||
gchar * (* make_display_name) (GdkScreen *screen);
|
||||
GdkWindow * (* get_active_window) (GdkScreen *screen);
|
||||
|
@ -10863,9 +10863,14 @@ gtk_widget_get_visual (GtkWidget *widget)
|
||||
g_warning ("Ignoring visual set on widget `%s' that is not on the correct screen.",
|
||||
gtk_widget_get_name (widget));
|
||||
}
|
||||
}
|
||||
|
||||
return gdk_screen_get_system_visual (screen);
|
||||
visual = gdk_screen_get_rgba_visual (screen);
|
||||
|
||||
if (visual == NULL ||
|
||||
g_strcmp0 (g_getenv ("GDK_RGBA"), "0") != 0)
|
||||
visual = gdk_screen_get_system_visual (screen);
|
||||
|
||||
return visual;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user