📄 gdkwindow.c
字号:
return; size_hints.flags = 0; if (geom_mask & GDK_HINT_POS) { size_hints.flags |= PPosition; /* We need to initialize the following obsolete fields because KWM * apparently uses these fields if they are non-zero. * #@#!#!$!. */ size_hints.x = 0; size_hints.y = 0; } if (geom_mask & GDK_HINT_MIN_SIZE) { size_hints.flags |= PMinSize; size_hints.min_width = geometry->min_width; size_hints.min_height = geometry->min_height; } if (geom_mask & GDK_HINT_MAX_SIZE) { size_hints.flags |= PMaxSize; size_hints.max_width = MAX (geometry->max_width, 1); size_hints.max_height = MAX (geometry->max_height, 1); } if (geom_mask & GDK_HINT_BASE_SIZE) { size_hints.flags |= PBaseSize; size_hints.base_width = geometry->base_width; size_hints.base_height = geometry->base_height; } if (geom_mask & GDK_HINT_RESIZE_INC) { size_hints.flags |= PResizeInc; size_hints.width_inc = geometry->width_inc; size_hints.height_inc = geometry->height_inc; } if (geom_mask & GDK_HINT_ASPECT) { size_hints.flags |= PAspect; if (geometry->min_aspect <= 1) { size_hints.min_aspect.x = 65536 * geometry->min_aspect; size_hints.min_aspect.y = 65536; } else { size_hints.min_aspect.x = 65536; size_hints.min_aspect.y = 65536 / geometry->min_aspect;; } if (geometry->max_aspect <= 1) { size_hints.max_aspect.x = 65536 * geometry->max_aspect; size_hints.max_aspect.y = 65536; } else { size_hints.max_aspect.x = 65536; size_hints.max_aspect.y = 65536 / geometry->max_aspect;; } } /* FIXME: Would it be better to delete this property of * geom_mask == 0? It would save space on the server */ XSetWMNormalHints (private->xdisplay, private->xwindow, &size_hints);}voidgdk_window_set_title (GdkWindow *window, const gchar *title){ GdkWindowPrivate *private; g_return_if_fail (window != NULL); private = (GdkWindowPrivate*) window; if (!private->destroyed) XmbSetWMProperties (private->xdisplay, private->xwindow, title, title, NULL, 0, NULL, NULL, NULL);}void gdk_window_set_role (GdkWindow *window, const gchar *role){ GdkWindowPrivate *private; g_return_if_fail (window != NULL); private = (GdkWindowPrivate*) window; if (role) XChangeProperty (private->xdisplay, private->xwindow, gdk_atom_intern ("WM_WINDOW_ROLE", FALSE), XA_STRING, 8, PropModeReplace, role, strlen (role)); else XDeleteProperty (private->xdisplay, private->xwindow, gdk_atom_intern ("WM_WINDOW_ROLE", FALSE));}void gdk_window_set_transient_for (GdkWindow *window, GdkWindow *parent){ GdkWindowPrivate *private; GdkWindowPrivate *parent_private; g_return_if_fail (window != NULL); private = (GdkWindowPrivate*) window; parent_private = (GdkWindowPrivate*) parent; if (!private->destroyed && !parent_private->destroyed) XSetTransientForHint (private->xdisplay, private->xwindow, parent_private->xwindow);}voidgdk_window_set_background (GdkWindow *window, GdkColor *color){ GdkWindowPrivate *private; g_return_if_fail (window != NULL); private = (GdkWindowPrivate*) window; if (!private->destroyed) XSetWindowBackground (private->xdisplay, private->xwindow, color->pixel);}voidgdk_window_set_back_pixmap (GdkWindow *window, GdkPixmap *pixmap, gint parent_relative){ GdkWindowPrivate *window_private; GdkPixmapPrivate *pixmap_private; Pixmap xpixmap; g_return_if_fail (window != NULL); window_private = (GdkWindowPrivate*) window; pixmap_private = (GdkPixmapPrivate*) pixmap; if (pixmap) xpixmap = pixmap_private->xwindow; else xpixmap = None; if (parent_relative) xpixmap = ParentRelative; if (!window_private->destroyed) XSetWindowBackgroundPixmap (window_private->xdisplay, window_private->xwindow, xpixmap);}voidgdk_window_set_cursor (GdkWindow *window, GdkCursor *cursor){ GdkWindowPrivate *window_private; GdkCursorPrivate *cursor_private; Cursor xcursor; g_return_if_fail (window != NULL); window_private = (GdkWindowPrivate*) window; cursor_private = (GdkCursorPrivate*) cursor; if (!cursor) xcursor = None; else xcursor = cursor_private->xcursor; if (!window_private->destroyed) XDefineCursor (window_private->xdisplay, window_private->xwindow, xcursor);}voidgdk_window_set_colormap (GdkWindow *window, GdkColormap *colormap){ GdkWindowPrivate *window_private; GdkColormapPrivate *colormap_private; g_return_if_fail (window != NULL); g_return_if_fail (colormap != NULL); window_private = (GdkWindowPrivate*) window; colormap_private = (GdkColormapPrivate*) colormap; if (!window_private->destroyed) { XSetWindowColormap (window_private->xdisplay, window_private->xwindow, colormap_private->xcolormap); if (window_private->colormap) gdk_colormap_unref (window_private->colormap); window_private->colormap = colormap; gdk_colormap_ref (window_private->colormap); if (window_private->window_type != GDK_WINDOW_TOPLEVEL) gdk_window_add_colormap_windows (window); }}voidgdk_window_get_user_data (GdkWindow *window, gpointer *data){ g_return_if_fail (window != NULL); *data = window->user_data;}voidgdk_window_get_geometry (GdkWindow *window, gint *x, gint *y, gint *width, gint *height, gint *depth){ GdkWindowPrivate *window_private; Window root; gint tx; gint ty; guint twidth; guint theight; guint tborder_width; guint tdepth; if (!window) window = (GdkWindow*) &gdk_root_parent; window_private = (GdkWindowPrivate*) window; if (!window_private->destroyed) { XGetGeometry (window_private->xdisplay, window_private->xwindow, &root, &tx, &ty, &twidth, &theight, &tborder_width, &tdepth); if (x) *x = tx; if (y) *y = ty; if (width) *width = twidth; if (height) *height = theight; if (depth) *depth = tdepth; }}voidgdk_window_get_position (GdkWindow *window, gint *x, gint *y){ GdkWindowPrivate *window_private; g_return_if_fail (window != NULL); window_private = (GdkWindowPrivate*) window; if (x) *x = window_private->x; if (y) *y = window_private->y;}voidgdk_window_get_size (GdkWindow *window, gint *width, gint *height){ GdkWindowPrivate *window_private; g_return_if_fail (window != NULL); window_private = (GdkWindowPrivate*) window; if (width) *width = window_private->width; if (height) *height = window_private->height;}GdkVisual*gdk_window_get_visual (GdkWindow *window){ GdkWindowPrivate *window_private; XWindowAttributes window_attributes; g_return_val_if_fail (window != NULL, NULL); window_private = (GdkWindowPrivate*) window; /* Huh? ->parent is never set for a pixmap. We should just return * null immeditately */ while (window_private && (window_private->window_type == GDK_WINDOW_PIXMAP)) window_private = (GdkWindowPrivate*) window_private->parent; if (window_private && !window_private->destroyed) { if (window_private->colormap == NULL) { XGetWindowAttributes (window_private->xdisplay, window_private->xwindow, &window_attributes); return gdk_visual_lookup (window_attributes.visual); } else return ((GdkColormapPrivate *)window_private->colormap)->visual; } return NULL;}GdkColormap*gdk_window_get_colormap (GdkWindow *window){ GdkWindowPrivate *window_private; XWindowAttributes window_attributes; g_return_val_if_fail (window != NULL, NULL); window_private = (GdkWindowPrivate*) window; g_return_val_if_fail (window_private->window_type != GDK_WINDOW_PIXMAP, NULL); if (!window_private->destroyed) { if (window_private->colormap == NULL) { XGetWindowAttributes (window_private->xdisplay, window_private->xwindow, &window_attributes); return gdk_colormap_lookup (window_attributes.colormap); } else return window_private->colormap; } return NULL;}GdkWindowTypegdk_window_get_type (GdkWindow *window){ GdkWindowPrivate *window_private; g_return_val_if_fail (window != NULL, (GdkWindowType) -1); window_private = (GdkWindowPrivate*) window; return window_private->window_type;}gintgdk_window_get_origin (GdkWindow *window, gint *x, gint *y){ GdkWindowPrivate *private; gint return_val; Window child; gint tx = 0; gint ty = 0; g_return_val_if_fail (window != NULL, 0); private = (GdkWindowPrivate*) window; if (!private->destroyed) { return_val = XTranslateCoordinates (private->xdisplay, private->xwindow, gdk_root_window, 0, 0, &tx, &ty, &child); } else return_val = 0; if (x) *x = tx; if (y) *y = ty; return return_val;}gbooleangdk_window_get_deskrelative_origin (GdkWindow *window, gint *x, gint *y){ GdkWindowPrivate *private; gboolean return_val = FALSE; gint num_children, format_return; Window win, *child, parent, root; gint tx = 0; gint ty = 0; Atom type_return; static Atom atom = 0; gulong number_return, bytes_after_return; guchar *data_return; g_return_val_if_fail (window != NULL, 0); private = (GdkWindowPrivate*) window; if (!private->destroyed) { if (!atom) atom = XInternAtom (private->xdisplay, "ENLIGHTENMENT_DESKTOP", False); win = private->xwindow; while (XQueryTree (private->xdisplay, win, &root, &parent, &child, (unsigned int *)&num_children)) { if ((child) && (num_children > 0)) XFree (child); if (!parent) break; else win = parent; if (win == root) break; data_return = NULL; XGetWindowProperty (private->xdisplay, win, atom, 0, 0, False, XA_CARDINAL, &type_return, &format_return, &number_return, &bytes_after_return, &data_return); if (type_return == XA_CARDINAL) { XFree (data_return); break; } } return_val = XTranslateCoordinates (private->xdisplay, private->xwindow, win, 0, 0, &tx, &ty, &root); if (x) *x = tx; if (y) *y = ty; } return return_val;}voidgdk_window_get_root_origin (GdkWindow *window, gint *x, gint *y){ GdkWindowPrivate *private; Window xwindow; Window xparent; Window root; Window *children; unsigned int nchildren; g_return_if_fail (window != NULL); private = (GdkWindowPrivate*) window; if (x) *x = 0; if (y) *y = 0; if (private->destroyed) return; while (private->parent && ((GdkWindowPrivate*) private->parent)->parent) private = (GdkWindowPrivate*) private->parent; if (private->destroyed) return; xparent = private->xwindow; do { xwindow = xparent; if (!XQueryTree (private->xdisplay, xwindow, &root, &xparent, &children, &nchildren)) return; if (children) XFree (children); } while (xparent != root); if (xparent == root) { unsigned int ww, wh, wb, wd; int wx, wy; if (XGetGeometry (private->xdisplay, xwindow, &root, &wx, &wy, &ww, &wh, &wb, &wd)) { if (x) *x = wx; if (y) *y = wy; } }}GdkWindow*gdk_window_get_pointer (GdkWindow *window, gint *x, gint *y, GdkModifierType *mask){ GdkWindowPrivate *private; GdkWindow *return_val; Window root; Window child; int rootx, rooty; int winx = 0; int winy = 0; unsigned int xmask = 0; if (!window) window = (GdkWindow*) &gdk_root_parent; private = (GdkWindowPrivate*) window; return_val = NULL; if (!private->destroyed && XQueryPointer (private->xdisplay, private->xwindow, &root, &child, &rootx, &rooty, &winx, &winy, &xmask)) { if (child) return_val = gdk_window_lookup (child); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -