Merge branch 'matthiasc/for-master' into 'master'

Matthiasc/for master

See merge request GNOME/gtk!1967
This commit is contained in:
Matthias Clasen 2020-05-27 03:54:59 +00:00
commit 9f4da7dfd1
12 changed files with 63 additions and 425 deletions

View File

@ -174,7 +174,6 @@ gdk_rgba_get_type
GdkSurface GdkSurface
GdkGravity GdkGravity
GdkSurfaceEdge GdkSurfaceEdge
GdkSurfaceTypeHint
GdkSurfaceState GdkSurfaceState
gdk_surface_new_toplevel gdk_surface_new_toplevel
gdk_surface_new_popup gdk_surface_new_popup
@ -470,7 +469,6 @@ gdk_seat_capabilities_get_type
<FILE>events</FILE> <FILE>events</FILE>
GdkEvent GdkEvent
GdkEventType GdkEventType
GdkEventMask
GdkKeyMatch GdkKeyMatch
GdkTouchpadGesturePhase GdkTouchpadGesturePhase
GdkScrollDirection GdkScrollDirection

View File

@ -296,57 +296,6 @@ gdk_should_use_portal (void)
return use_portal[0] == '1'; return use_portal[0] == '1';
} }
/**
* SECTION:threads
* @Short_description: Functions for using GDK in multi-threaded programs
* @Title: Threads
*
* For thread safety, GDK relies on the thread primitives in GLib,
* and on the thread-safe GLib main loop.
*
* GLib is completely thread safe (all global data is automatically
* locked), but individual data structure instances are not automatically
* locked for performance reasons. So e.g. you must coordinate
* accesses to the same #GHashTable from multiple threads.
*
* GTK, however, is not thread safe. You should only use GTK and GDK
* from the thread gtk_init() and gtk_main() were called on.
* This is usually referred to as the main thread.
*
* Signals on GTK and GDK types, as well as non-signal callbacks, are
* emitted in the main thread.
*
* You can schedule work in the main thread safely from other threads
* by using g_main_context_invoke(), g_idle_add(), and g_timeout_add():
*
* |[<!-- language="C" -->
* static void
* worker_thread (void)
* {
* ExpensiveData *expensive_data = do_expensive_computation ();
*
* g_main_context_invoke (NULL, got_value, expensive_data);
* }
*
* static gboolean
* got_value (gpointer user_data)
* {
* ExpensiveData *expensive_data = user_data;
*
* my_app->expensive_data = expensive_data;
* gtk_button_set_sensitive (my_app->button, TRUE);
* gtk_button_set_label (my_app->button, expensive_data->result_label);
*
* return G_SOURCE_REMOVE;
* }
* ]|
*
* For more information on this "worker thread" pattern, you should
* also look at #GTask, which gives you high-level tools to perform
* expensive tasks from worker threads, and will handle thread
* management for you.
*/
PangoDirection PangoDirection
gdk_unichar_direction (gunichar ch) gdk_unichar_direction (gunichar ch)
{ {

View File

@ -577,53 +577,6 @@ _gdk_event_queue_append (GdkDisplay *display,
return g_queue_peek_tail_link (&display->queued_events); return g_queue_peek_tail_link (&display->queued_events);
} }
/**
* _gdk_event_queue_insert_after:
* @display: a #GdkDisplay
* @sibling: Append after this event.
* @event: Event to append.
*
* Appends an event after the specified event, or if it isnt in
* the queue, onto the tail of the event queue.
*/
void
_gdk_event_queue_insert_after (GdkDisplay *display,
GdkEvent *sibling,
GdkEvent *event)
{
GList *prev = g_queue_find (&display->queued_events, sibling);
if (prev)
g_queue_insert_after (&display->queued_events, prev, event);
else
g_queue_push_tail (&display->queued_events, event);
}
/**
* _gdk_event_queue_insert_before:
* @display: a #GdkDisplay
* @sibling: Append before this event
* @event: Event to prepend
*
* Prepends an event before the specified event, or if it isnt in
* the queue, onto the head of the event queue.
*
* Returns: the newly prepended list node.
*/
void
_gdk_event_queue_insert_before (GdkDisplay *display,
GdkEvent *sibling,
GdkEvent *event)
{
GList *next = g_queue_find (&display->queued_events, sibling);
if (next)
g_queue_insert_before (&display->queued_events, next, event);
else
g_queue_push_head (&display->queued_events, event);
}
/** /**
* _gdk_event_queue_remove_link: * _gdk_event_queue_remove_link:
* @display: a #GdkDisplay * @display: a #GdkDisplay

View File

@ -437,127 +437,6 @@ out:
cairo_region_destroy (clip_region); cairo_region_destroy (clip_region);
} }
/* This is always called with the paint context current */
void
gdk_gl_texture_from_surface (cairo_surface_t *cairo_surface,
cairo_region_t *region)
{
GdkGLContext *paint_context;
cairo_surface_t *image;
double device_x_offset, device_y_offset;
cairo_rectangle_int_t rect, e;
int n_rects, i;
GdkSurface *surface;
int unscaled_surface_height;
unsigned int texture_id;
int surface_scale;
double sx, sy;
float umax, vmax;
gboolean use_texture_rectangle;
guint target;
paint_context = gdk_gl_context_get_current ();
#ifdef G_ENABLE_DEBUG
if (paint_context != NULL)
{
GdkDisplay *display = gdk_draw_context_get_display (GDK_DRAW_CONTEXT (paint_context));
if (GDK_DISPLAY_DEBUG_CHECK (display, GL_SOFTWARE) == 0)
return;
}
#endif
if (paint_context != NULL &&
GDK_GL_CONTEXT_GET_CLASS (paint_context)->texture_from_surface &&
GDK_GL_CONTEXT_GET_CLASS (paint_context)->texture_from_surface (paint_context, cairo_surface, region))
return;
/* Software fallback */
use_texture_rectangle = gdk_gl_context_use_texture_rectangle (paint_context);
surface = gdk_gl_context_get_surface (paint_context);
surface_scale = gdk_surface_get_scale_factor (surface);
gdk_surface_get_unscaled_size (surface, NULL, &unscaled_surface_height);
sx = sy = 1;
cairo_surface_get_device_scale (cairo_surface, &sx, &sy);
cairo_surface_get_device_offset (cairo_surface, &device_x_offset, &device_y_offset);
glGenTextures (1, &texture_id);
if (use_texture_rectangle)
target = GL_TEXTURE_RECTANGLE_ARB;
else
target = GL_TEXTURE_2D;
glBindTexture (target, texture_id);
glEnable (GL_SCISSOR_TEST);
glTexParameteri (target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri (target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri (target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri (target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
n_rects = cairo_region_num_rectangles (region);
#define FLIP_Y(_y) (unscaled_surface_height - (_y))
for (i = 0; i < n_rects; i++)
{
cairo_region_get_rectangle (region, i, &rect);
glScissor (rect.x * surface_scale, FLIP_Y ((rect.y + rect.height) * surface_scale),
rect.width * surface_scale, rect.height * surface_scale);
e = rect;
e.x *= sx;
e.y *= sy;
e.x += (int)device_x_offset;
e.y += (int)device_y_offset;
e.width *= sx;
e.height *= sy;
image = cairo_surface_map_to_image (cairo_surface, &e);
gdk_gl_context_upload_texture (paint_context,
cairo_image_surface_get_data (image),
e.width,
e.height,
cairo_image_surface_get_stride (image),
target);
cairo_surface_unmap_image (cairo_surface, image);
if (use_texture_rectangle)
{
umax = rect.width * sx;
vmax = rect.height * sy;
}
else
{
umax = 1.0;
vmax = 1.0;
}
{
GdkTexturedQuad quad = {
rect.x * surface_scale, FLIP_Y(rect.y * surface_scale),
(rect.x + rect.width) * surface_scale, FLIP_Y((rect.y + rect.height) * surface_scale),
0, 0,
umax, vmax,
};
/* We don't want to combine the quads here, because they have different textures.
* And we don't want to upload the unused source areas to make it one texture. */
gdk_gl_texture_quads (paint_context, target, 1, &quad, TRUE);
}
}
#undef FLIP_Y
glDisable (GL_SCISSOR_TEST);
glDeleteTextures (1, &texture_id);
}
/** /**
* gdk_cairo_surface_upload_to_gl: * gdk_cairo_surface_upload_to_gl:
* @surface: a Cairo surface * @surface: a Cairo surface

View File

@ -94,8 +94,6 @@ void gdk_display_set_debug_flags (GdkDisplay *display,
/* Event handling */ /* Event handling */
typedef struct _GdkEventPrivate GdkEventPrivate;
typedef enum typedef enum
{ {
/* Following flag is set for events on the event queue during /* Following flag is set for events on the event queue during
@ -115,8 +113,6 @@ typedef struct _GdkSurfacePaint GdkSurfacePaint;
#define GDK_SURFACE_TYPE(d) ((((GdkSurface *)(d)))->surface_type) #define GDK_SURFACE_TYPE(d) ((((GdkSurface *)(d)))->surface_type)
#define GDK_SURFACE_DESTROYED(d) (((GdkSurface *)(d))->destroyed) #define GDK_SURFACE_DESTROYED(d) (((GdkSurface *)(d))->destroyed)
extern gint _gdk_screen_number;
GdkEvent* _gdk_event_unqueue (GdkDisplay *display); GdkEvent* _gdk_event_unqueue (GdkDisplay *display);
void _gdk_event_emit (GdkEvent *event); void _gdk_event_emit (GdkEvent *event);
@ -125,27 +121,12 @@ void _gdk_event_queue_remove_link (GdkDisplay *display,
GList *node); GList *node);
GList* _gdk_event_queue_append (GdkDisplay *display, GList* _gdk_event_queue_append (GdkDisplay *display,
GdkEvent *event); GdkEvent *event);
void _gdk_event_queue_insert_after (GdkDisplay *display,
GdkEvent *after_event,
GdkEvent *event);
void _gdk_event_queue_insert_before(GdkDisplay *display,
GdkEvent *after_event,
GdkEvent *event);
void _gdk_event_queue_handle_motion_compression (GdkDisplay *display); void _gdk_event_queue_handle_motion_compression (GdkDisplay *display);
void _gdk_event_queue_flush (GdkDisplay *display); void _gdk_event_queue_flush (GdkDisplay *display);
void _gdk_event_button_generate (GdkDisplay *display,
GdkEvent *event);
void _gdk_windowing_event_data_copy (GdkEvent *src,
GdkEvent *dst);
void _gdk_windowing_event_data_free (GdkEvent *event);
gboolean _gdk_cairo_surface_extents (cairo_surface_t *surface, gboolean _gdk_cairo_surface_extents (cairo_surface_t *surface,
GdkRectangle *extents); GdkRectangle *extents);
void gdk_gl_texture_from_surface (cairo_surface_t *surface,
cairo_region_t *region);
typedef struct { typedef struct {
float x1, y1, x2, y2; float x1, y1, x2, y2;
@ -193,12 +174,6 @@ void gdk_surface_leave_monitor (GdkSurface *surface,
* Interfaces provided by windowing code * * Interfaces provided by windowing code *
*****************************************/ *****************************************/
/* Font/string functions implemented in module-specific code */
void _gdk_cursor_destroy (GdkCursor *cursor);
extern const GOptionEntry _gdk_windowing_args[];
void _gdk_windowing_got_event (GdkDisplay *display, void _gdk_windowing_got_event (GdkDisplay *display,
GList *event_link, GList *event_link,
GdkEvent *event, GdkEvent *event,
@ -268,6 +243,34 @@ typedef enum
GDK_OWNERSHIP_APPLICATION GDK_OWNERSHIP_APPLICATION
} GdkGrabOwnership; } GdkGrabOwnership;
typedef enum
{
GDK_EXPOSURE_MASK = 1 << 1,
GDK_POINTER_MOTION_MASK = 1 << 2,
GDK_BUTTON_MOTION_MASK = 1 << 4,
GDK_BUTTON1_MOTION_MASK = 1 << 5,
GDK_BUTTON2_MOTION_MASK = 1 << 6,
GDK_BUTTON3_MOTION_MASK = 1 << 7,
GDK_BUTTON_PRESS_MASK = 1 << 8,
GDK_BUTTON_RELEASE_MASK = 1 << 9,
GDK_KEY_PRESS_MASK = 1 << 10,
GDK_KEY_RELEASE_MASK = 1 << 11,
GDK_ENTER_NOTIFY_MASK = 1 << 12,
GDK_LEAVE_NOTIFY_MASK = 1 << 13,
GDK_FOCUS_CHANGE_MASK = 1 << 14,
GDK_STRUCTURE_MASK = 1 << 15,
GDK_PROPERTY_CHANGE_MASK = 1 << 16,
GDK_PROXIMITY_IN_MASK = 1 << 18,
GDK_PROXIMITY_OUT_MASK = 1 << 19,
GDK_SUBSTRUCTURE_MASK = 1 << 20,
GDK_SCROLL_MASK = 1 << 21,
GDK_TOUCH_MASK = 1 << 22,
GDK_SMOOTH_SCROLL_MASK = 1 << 23,
GDK_TOUCHPAD_GESTURE_MASK = 1 << 24,
GDK_TABLET_PAD_MASK = 1 << 25,
GDK_ALL_EVENTS_MASK = 0x3FFFFFE
} GdkEventMask;
GdkGrabStatus gdk_device_grab (GdkDevice *device, GdkGrabStatus gdk_device_grab (GdkDevice *device,
GdkSurface *surface, GdkSurface *surface,
GdkGrabOwnership grab_ownership, GdkGrabOwnership grab_ownership,
@ -313,6 +316,26 @@ typedef enum
GDK_HINT_USER_SIZE = 1 << 8 GDK_HINT_USER_SIZE = 1 << 8
} GdkSurfaceHints; } GdkSurfaceHints;
typedef enum
{
GDK_SURFACE_TYPE_HINT_NORMAL,
GDK_SURFACE_TYPE_HINT_DIALOG,
GDK_SURFACE_TYPE_HINT_MENU, /* Torn off menu */
GDK_SURFACE_TYPE_HINT_TOOLBAR,
GDK_SURFACE_TYPE_HINT_SPLASHSCREEN,
GDK_SURFACE_TYPE_HINT_UTILITY,
GDK_SURFACE_TYPE_HINT_DOCK,
GDK_SURFACE_TYPE_HINT_DESKTOP,
GDK_SURFACE_TYPE_HINT_DROPDOWN_MENU, /* A drop down menu (from a menubar) */
GDK_SURFACE_TYPE_HINT_POPUP_MENU, /* A popup menu (from right-click) */
GDK_SURFACE_TYPE_HINT_TOOLTIP,
GDK_SURFACE_TYPE_HINT_NOTIFICATION,
GDK_SURFACE_TYPE_HINT_COMBO,
GDK_SURFACE_TYPE_HINT_DND
} GdkSurfaceTypeHint;
typedef struct _GdkGeometry GdkGeometry;
struct _GdkGeometry struct _GdkGeometry
{ {
gint min_width; gint min_width;

View File

@ -44,7 +44,7 @@
*/ */
#include <gdk/gdkconfig.h> #include <gdk/gdkconfig.h>
/* some common magic values */ G_BEGIN_DECLS
/** /**
* GDK_CURRENT_TIME: * GDK_CURRENT_TIME:
@ -53,19 +53,6 @@
*/ */
#define GDK_CURRENT_TIME 0L #define GDK_CURRENT_TIME 0L
/**
* GDK_PARENT_RELATIVE:
*
* A special value, indicating that the background
* for a surface should be inherited from the parent surface.
*/
#define GDK_PARENT_RELATIVE 1L
G_BEGIN_DECLS
/** /**
* GdkPoint: * GdkPoint:
* @x: the x coordinate of the point * @x: the x coordinate of the point
@ -126,8 +113,6 @@ typedef struct _GdkAppLaunchContext GdkAppLaunchContext;
typedef struct _GdkSeat GdkSeat; typedef struct _GdkSeat GdkSeat;
typedef struct _GdkSnapshot GdkSnapshot; typedef struct _GdkSnapshot GdkSnapshot;
typedef struct _GdkGeometry GdkGeometry;
typedef struct _GdkDrawingContext GdkDrawingContext; typedef struct _GdkDrawingContext GdkDrawingContext;
typedef struct _GdkDrawContext GdkDrawContext; typedef struct _GdkDrawContext GdkDrawContext;
typedef struct _GdkCairoContext GdkCairoContext; typedef struct _GdkCairoContext GdkCairoContext;
@ -152,11 +137,7 @@ typedef struct _GdkVulkanContext GdkVulkanContext;
* @GDK_GRAVITY_STATIC: the reference point is at the top left corner of the * @GDK_GRAVITY_STATIC: the reference point is at the top left corner of the
* surface itself, ignoring window manager decorations. * surface itself, ignoring window manager decorations.
* *
* Defines the reference point of a surface and the meaning of coordinates * Defines the reference point of a surface and is used in #GdkPopupLayout.
* passed to gtk_window_move(). See gtk_window_move() and the "implementation
* notes" section of the
* [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec)
* specification for more details.
*/ */
typedef enum typedef enum
{ {
@ -172,24 +153,6 @@ typedef enum
GDK_GRAVITY_STATIC GDK_GRAVITY_STATIC
} GdkGravity; } GdkGravity;
/**
* GdkByteOrder:
* @GDK_LSB_FIRST: The values are stored with the least-significant byte
* first. For instance, the 32-bit value 0xffeecc would be stored
* in memory as 0xcc, 0xee, 0xff, 0x00.
* @GDK_MSB_FIRST: The values are stored with the most-significant byte
* first. For instance, the 32-bit value 0xffeecc would be stored
* in memory as 0x00, 0xff, 0xee, 0xcc.
*
* A set of values describing the possible byte-orders
* for storing pixel values in memory.
*/
typedef enum
{
GDK_LSB_FIRST,
GDK_MSB_FIRST
} GdkByteOrder;
/* Types of modifiers. /* Types of modifiers.
*/ */
/** /**
@ -247,74 +210,6 @@ typedef enum
GDK_BUTTON1_MASK|GDK_BUTTON2_MASK|GDK_BUTTON3_MASK| \ GDK_BUTTON1_MASK|GDK_BUTTON2_MASK|GDK_BUTTON3_MASK| \
GDK_BUTTON4_MASK|GDK_BUTTON5_MASK) GDK_BUTTON4_MASK|GDK_BUTTON5_MASK)
/**
* GdkEventMask:
* @GDK_EXPOSURE_MASK: receive expose events
* @GDK_POINTER_MOTION_MASK: receive all pointer motion events
* @GDK_BUTTON_MOTION_MASK: receive pointer motion events while any button is pressed
* @GDK_BUTTON1_MOTION_MASK: receive pointer motion events while 1 button is pressed
* @GDK_BUTTON2_MOTION_MASK: receive pointer motion events while 2 button is pressed
* @GDK_BUTTON3_MOTION_MASK: receive pointer motion events while 3 button is pressed
* @GDK_BUTTON_PRESS_MASK: receive button press events
* @GDK_BUTTON_RELEASE_MASK: receive button release events
* @GDK_KEY_PRESS_MASK: receive key press events
* @GDK_KEY_RELEASE_MASK: receive key release events
* @GDK_ENTER_NOTIFY_MASK: receive surface enter events
* @GDK_LEAVE_NOTIFY_MASK: receive surface leave events
* @GDK_FOCUS_CHANGE_MASK: receive focus change events
* @GDK_STRUCTURE_MASK: receive events about surface configuration change
* @GDK_PROPERTY_CHANGE_MASK: receive property change events
* @GDK_PROXIMITY_IN_MASK: receive proximity in events
* @GDK_PROXIMITY_OUT_MASK: receive proximity out events
* @GDK_SUBSTRUCTURE_MASK: receive events about surface configuration changes of child surfaces
* @GDK_SCROLL_MASK: receive scroll events
* @GDK_TOUCH_MASK: receive touch events
* @GDK_SMOOTH_SCROLL_MASK: receive smooth scrolling events
@GDK_TOUCHPAD_GESTURE_MASK: receive touchpad gesture events
* @GDK_TABLET_PAD_MASK: receive tablet pad events
* @GDK_ALL_EVENTS_MASK: the combination of all the above event masks.
*
* A set of bit-flags to indicate which events a surface is to receive.
* Most of these masks map onto one or more of the #GdkEventType event types
* above.
*
* See the [input handling overview][chap-input-handling] for details of
* [event masks][event-masks] and [event propagation][event-propagation].
*
* If %GDK_TOUCH_MASK is enabled, the surface will receive touch events
* from touch-enabled devices. Those will come as sequences of #GdkEventTouch
* with type %GDK_TOUCH_UPDATE, enclosed by two events with
* type %GDK_TOUCH_BEGIN and %GDK_TOUCH_END (or %GDK_TOUCH_CANCEL).
* gdk_event_get_event_sequence() returns the event sequence for these
* events, so different sequences may be distinguished.
*/
typedef enum
{
GDK_EXPOSURE_MASK = 1 << 1,
GDK_POINTER_MOTION_MASK = 1 << 2,
GDK_BUTTON_MOTION_MASK = 1 << 4,
GDK_BUTTON1_MOTION_MASK = 1 << 5,
GDK_BUTTON2_MOTION_MASK = 1 << 6,
GDK_BUTTON3_MOTION_MASK = 1 << 7,
GDK_BUTTON_PRESS_MASK = 1 << 8,
GDK_BUTTON_RELEASE_MASK = 1 << 9,
GDK_KEY_PRESS_MASK = 1 << 10,
GDK_KEY_RELEASE_MASK = 1 << 11,
GDK_ENTER_NOTIFY_MASK = 1 << 12,
GDK_LEAVE_NOTIFY_MASK = 1 << 13,
GDK_FOCUS_CHANGE_MASK = 1 << 14,
GDK_STRUCTURE_MASK = 1 << 15,
GDK_PROPERTY_CHANGE_MASK = 1 << 16,
GDK_PROXIMITY_IN_MASK = 1 << 18,
GDK_PROXIMITY_OUT_MASK = 1 << 19,
GDK_SUBSTRUCTURE_MASK = 1 << 20,
GDK_SCROLL_MASK = 1 << 21,
GDK_TOUCH_MASK = 1 << 22,
GDK_SMOOTH_SCROLL_MASK = 1 << 23,
GDK_TOUCHPAD_GESTURE_MASK = 1 << 24,
GDK_TABLET_PAD_MASK = 1 << 25,
GDK_ALL_EVENTS_MASK = 0x3FFFFFE
} GdkEventMask;
/** /**
* GdkGLError: * GdkGLError:
@ -347,54 +242,6 @@ typedef enum {
GDK_VULKAN_ERROR_NOT_AVAILABLE, GDK_VULKAN_ERROR_NOT_AVAILABLE,
} GdkVulkanError; } GdkVulkanError;
/**
* GdkSurfaceTypeHint:
* @GDK_SURFACE_TYPE_HINT_NORMAL: Normal toplevel window.
* @GDK_SURFACE_TYPE_HINT_DIALOG: Dialog window.
* @GDK_SURFACE_TYPE_HINT_MENU: Window used to implement a menu; GTK uses
* this hint only for torn-off menus, see #GtkTearoffMenuItem.
* @GDK_SURFACE_TYPE_HINT_TOOLBAR: Window used to implement toolbars.
* @GDK_SURFACE_TYPE_HINT_SPLASHSCREEN: Window used to display a splash
* screen during application startup.
* @GDK_SURFACE_TYPE_HINT_UTILITY: Utility windows which are not detached
* toolbars or dialogs.
* @GDK_SURFACE_TYPE_HINT_DOCK: Used for creating dock or panel windows.
* @GDK_SURFACE_TYPE_HINT_DESKTOP: Used for creating the desktop background
* window.
* @GDK_SURFACE_TYPE_HINT_DROPDOWN_MENU: A menu that belongs to a menubar.
* @GDK_SURFACE_TYPE_HINT_POPUP_MENU: A menu that does not belong to a menubar,
* e.g. a context menu.
* @GDK_SURFACE_TYPE_HINT_TOOLTIP: A tooltip.
* @GDK_SURFACE_TYPE_HINT_NOTIFICATION: A notification - typically a bubble
* that belongs to a status icon.
* @GDK_SURFACE_TYPE_HINT_COMBO: A popup from a combo box.
* @GDK_SURFACE_TYPE_HINT_DND: A window that is used to implement a DND cursor.
*
* These are hints for the window manager that indicate what type of function
* the window has. The window manager can use this when determining decoration
* and behaviour of the window. The hint must be set before mapping the window.
*
* See the [Extended Window Manager Hints](http://www.freedesktop.org/Standards/wm-spec)
* specification for more details about window types.
*/
typedef enum
{
GDK_SURFACE_TYPE_HINT_NORMAL,
GDK_SURFACE_TYPE_HINT_DIALOG,
GDK_SURFACE_TYPE_HINT_MENU, /* Torn off menu */
GDK_SURFACE_TYPE_HINT_TOOLBAR,
GDK_SURFACE_TYPE_HINT_SPLASHSCREEN,
GDK_SURFACE_TYPE_HINT_UTILITY,
GDK_SURFACE_TYPE_HINT_DOCK,
GDK_SURFACE_TYPE_HINT_DESKTOP,
GDK_SURFACE_TYPE_HINT_DROPDOWN_MENU, /* A drop down menu (from a menubar) */
GDK_SURFACE_TYPE_HINT_POPUP_MENU, /* A popup menu (from right-click) */
GDK_SURFACE_TYPE_HINT_TOOLTIP,
GDK_SURFACE_TYPE_HINT_NOTIFICATION,
GDK_SURFACE_TYPE_HINT_COMBO,
GDK_SURFACE_TYPE_HINT_DND
} GdkSurfaceTypeHint;
/** /**
* GdkAxisUse: * GdkAxisUse:
* @GDK_AXIS_IGNORE: the axis is ignored. * @GDK_AXIS_IGNORE: the axis is ignored.

View File

@ -49,23 +49,6 @@
static gboolean gdk_synchronize = FALSE; static gboolean gdk_synchronize = FALSE;
static gboolean dummy;
const GOptionEntry _gdk_windowing_args[] = {
{ "sync", 0, 0, G_OPTION_ARG_NONE, &gdk_synchronize,
/* Description of --sync in --help output */ N_("Dont batch GDI requests"), NULL },
{ "no-wintab", 0, 0, G_OPTION_ARG_NONE, &_gdk_input_ignore_wintab,
/* Description of --no-wintab in --help output */ N_("Dont use the Wintab API for tablet support"), NULL },
{ "ignore-wintab", 0, 0, G_OPTION_ARG_NONE, &_gdk_input_ignore_wintab,
/* Description of --ignore-wintab in --help output */ N_("Same as --no-wintab"), NULL },
{ "use-wintab", 0, 0, G_OPTION_ARG_NONE, &dummy,
/* Description of --use-wintab in --help output */ N_("Do use the Wintab API [default]"), NULL },
{ "max-colors", 0, 0, G_OPTION_ARG_INT, &_gdk_max_colors,
/* Description of --max-colors=COLORS in --help output */ N_("Size of the palette in 8 bit mode"),
/* Placeholder in --max-colors=COLORS in --help output */ N_("COLORS") },
{ NULL }
};
void void
_gdk_win32_surfaceing_init (void) _gdk_win32_surfaceing_init (void)
{ {

View File

@ -20,6 +20,7 @@
#include "gdktypes.h" #include "gdktypes.h"
#include "gdkdisplay.h" #include "gdkdisplay.h"
#include "gdkinternals.h"
#include <X11/Xlib.h> #include <X11/Xlib.h>

View File

@ -46,6 +46,12 @@ typedef enum
GDK_VISUAL_DIRECT_COLOR GDK_VISUAL_DIRECT_COLOR
} GdkVisualType; } GdkVisualType;
typedef enum
{
GDK_LSB_FIRST,
GDK_MSB_FIRST
} GdkByteOrder;
struct _GdkX11Visual struct _GdkX11Visual
{ {
GObject parent_instance; GObject parent_instance;

View File

@ -933,7 +933,10 @@ gtk_accelerator_print_label (GString *gstring,
if (accelerator_key >= GDK_KEY_KP_Space && if (accelerator_key >= GDK_KEY_KP_Space &&
accelerator_key <= GDK_KEY_KP_Equal) accelerator_key <= GDK_KEY_KP_Equal)
{ {
/* Translators: "KP" means "numeric key pad" */ /* Translators: "KP" means "numeric key pad". This string will
* be used in accelerators such as "Ctrl+Shift+KP 1" in menus,
* and therefore the translation needs to be very short.
*/
g_string_append (gstring, C_("keyboard label", "KP")); g_string_append (gstring, C_("keyboard label", "KP"));
g_string_append (gstring, ""); g_string_append (gstring, "");
} }

View File

@ -241,8 +241,6 @@ typedef struct
guint hide_on_close : 1; guint hide_on_close : 1;
guint in_emit_close_request : 1; guint in_emit_close_request : 1;
GdkSurfaceTypeHint type_hint;
GtkGesture *click_gesture; GtkGesture *click_gesture;
GtkEventController *key_controller; GtkEventController *key_controller;
GtkEventController *application_shortcut_controller; GtkEventController *application_shortcut_controller;
@ -3602,9 +3600,8 @@ gtk_window_resize (GtkWindow *window,
* ]| * ]|
* *
* If you are getting a window size in order to position the window * If you are getting a window size in order to position the window
* on the screen, you should, instead, simply set the windows semantic * on the screen, don't. You should, instead, simply let the window
* type with gtk_window_set_type_hint(), which allows the window manager * manager place windows. Also, if you set the transient parent of
* to e.g. center dialogs. Also, if you set the transient parent of
* dialogs with gtk_window_set_transient_for() window managers will * dialogs with gtk_window_set_transient_for() window managers will
* often center the dialog over its parent window. It's much preferred * often center the dialog over its parent window. It's much preferred
* to let the window manager handle these cases rather than doing it * to let the window manager handle these cases rather than doing it

View File

@ -56,7 +56,6 @@ list_ignore_properties (gboolean buglist)
{ "GtkWidget", "parent", NULL, }, /* needs working parent widget */ { "GtkWidget", "parent", NULL, }, /* needs working parent widget */
{ "GtkWidget", "has-default", (void*) TRUE, }, /* conflicts with toplevel-less widgets */ { "GtkWidget", "has-default", (void*) TRUE, }, /* conflicts with toplevel-less widgets */
{ "GtkWidget", "display", (void*) MATCH_ANY_VALUE }, { "GtkWidget", "display", (void*) MATCH_ANY_VALUE },
{ "GtkWindow", "type-hint", (void*) GDK_SURFACE_TYPE_HINT_DND, }, /* conflicts with ::visible=TRUE */
{ "GtkCellView", "background", (void*) "", }, /* "" is not a valid background color */ { "GtkCellView", "background", (void*) "", }, /* "" is not a valid background color */
{ "GtkFileChooserButton", "select-multiple", (void*) MATCH_ANY_VALUE }, /* property disabled */ { "GtkFileChooserButton", "select-multiple", (void*) MATCH_ANY_VALUE }, /* property disabled */
{ "GtkFileChooserButton", "action", (void*) GTK_FILE_CHOOSER_ACTION_SAVE }, { "GtkFileChooserButton", "action", (void*) GTK_FILE_CHOOSER_ACTION_SAVE },