⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdkmain-x11.c

📁 linux下电话本所依赖的一些图形库
💻 C
📖 第 1 页 / 共 2 页
字号:
      while (tmp && tmp != private)	tmp = tmp->parent;      if (tmp)	display_x11->pointer_xgrab_window = NULL;      }  if (display_x11->keyboard_xgrab_window &&      serial >= display_x11->keyboard_xgrab_serial)    {      GdkWindowObject *private = GDK_WINDOW_OBJECT (window);      GdkWindowObject *tmp = display_x11->keyboard_xgrab_window;            while (tmp && tmp != private)	tmp = tmp->parent;      if (tmp)	display_x11->keyboard_xgrab_window = NULL;      }}/** * _gdk_xgrab_check_destroy: * @window: a #GdkWindow *  * Checks to see if window is the current grab window, and if * so, clear the current grab window. **/void_gdk_xgrab_check_destroy (GdkWindow *window){  GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (gdk_drawable_get_display (window));    if ((GdkWindowObject *)window == display_x11->pointer_xgrab_window)     display_x11->pointer_xgrab_window = NULL;  if ((GdkWindowObject *)window ==  display_x11->keyboard_xgrab_window)     display_x11->keyboard_xgrab_window = NULL;}void_gdk_windowing_display_set_sm_client_id (GdkDisplay  *display,					 const gchar *sm_client_id){  GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);  if (display->closed)    return;  if (sm_client_id && strcmp (sm_client_id, ""))    {      XChangeProperty (display_x11->xdisplay, display_x11->leader_window,		       gdk_x11_get_xatom_by_name_for_display (display, "SM_CLIENT_ID"),		       XA_STRING, 8, PropModeReplace, sm_client_id,		       strlen (sm_client_id));    }  else    XDeleteProperty (display_x11->xdisplay, display_x11->leader_window,		     gdk_x11_get_xatom_by_name_for_display (display, "SM_CLIENT_ID"));}/* Close all open displays */void_gdk_windowing_exit (void){  GSList *tmp_list = _gdk_displays;      while (tmp_list)    {      XCloseDisplay (GDK_DISPLAY_XDISPLAY (tmp_list->data));            tmp_list = tmp_list->next;  }}/* *-------------------------------------------------------------- * gdk_x_error * *   The X error handling routine. * * Arguments: *   "display" is the X display the error orignated from. *   "error" is the XErrorEvent that we are handling. * * Results: *   Either we were expecting some sort of error to occur, *   in which case we set the "_gdk_error_code" flag, or this *   error was unexpected, in which case we will print an *   error message and exit. (Since trying to continue will *   most likely simply lead to more errors). * * Side effects: * *-------------------------------------------------------------- */static intgdk_x_error (Display	 *display,	     XErrorEvent *error){  if (error->error_code)    {      if (_gdk_error_warnings)	{	  gchar buf[64];          gchar *msg;          	  XGetErrorText (display, error->error_code, buf, 63);          msg =            g_strdup_printf ("The program '%s' received an X Window System error.\n"                             "This probably reflects a bug in the program.\n"                             "The error was '%s'.\n"                             "  (Details: serial %ld error_code %d request_code %d minor_code %d)\n"                             "  (Note to programmers: normally, X errors are reported asynchronously;\n"                             "   that is, you will receive the error a while after causing it.\n"                             "   To debug your program, run it with the --sync command line\n"                             "   option to change this behavior. You can then get a meaningful\n"                             "   backtrace from your debugger if you break on the gdk_x_error() function.)",                             g_get_prgname (),                             buf,                             error->serial,                              error->error_code,                              error->request_code,                             error->minor_code);          #ifdef G_ENABLE_DEBUG	  	  g_error ("%s", msg);#else /* !G_ENABLE_DEBUG */	  g_fprintf (stderr, "%s\n", msg);	  exit (1);#endif /* G_ENABLE_DEBUG */	}      _gdk_error_code = error->error_code;    }    return 0;}/* *-------------------------------------------------------------- * gdk_x_io_error * *   The X I/O error handling routine. * * Arguments: *   "display" is the X display the error orignated from. * * Results: *   An X I/O error basically means we lost our connection *   to the X server. There is not much we can do to *   continue, so simply print an error message and exit. * * Side effects: * *-------------------------------------------------------------- */static intgdk_x_io_error (Display *display){  /* This is basically modelled after the code in XLib. We need   * an explicit error handler here, so we can disable our atexit()   * which would otherwise cause a nice segfault.   * We fprintf(stderr, instead of g_warning() because g_warning()   * could possibly be redirected to a dialog   */  if (errno == EPIPE)    {      g_fprintf (stderr,               "The application '%s' lost its connection to the display %s;\n"               "most likely the X server was shut down or you killed/destroyed\n"               "the application.\n",               g_get_prgname (),               display ? DisplayString (display) : gdk_get_display_arg_name ());    }  else    {      g_fprintf (stderr, "%s: Fatal IO error %d (%s) on X server %s.\n",               g_get_prgname (),	       errno, g_strerror (errno),	       display ? DisplayString (display) : gdk_get_display_arg_name ());    }  exit(1);}/************************************************************* * gdk_error_trap_push: *     Push an error trap. X errors will be trapped until *     the corresponding gdk_error_pop(), which will return *     the error code, if any. *   arguments: *      *   results: *************************************************************/voidgdk_error_trap_push (void){  GSList *node;  GdkErrorTrap *trap;  if (gdk_error_trap_free_list)    {      node = gdk_error_trap_free_list;      gdk_error_trap_free_list = gdk_error_trap_free_list->next;    }  else    {      node = g_slist_alloc ();      node->data = g_new (GdkErrorTrap, 1);    }  node->next = gdk_error_traps;  gdk_error_traps = node;    trap = node->data;  trap->old_handler = XSetErrorHandler (gdk_x_error);  trap->error_code = _gdk_error_code;  trap->error_warnings = _gdk_error_warnings;  _gdk_error_code = 0;  _gdk_error_warnings = 0;}/************************************************************* * gdk_error_trap_pop: *     Pop an error trap added with gdk_error_push() *   arguments: *      *   results: *     0, if no error occured, otherwise the error code. *************************************************************/gintgdk_error_trap_pop (void){  GSList *node;  GdkErrorTrap *trap;  gint result;  g_return_val_if_fail (gdk_error_traps != NULL, 0);  node = gdk_error_traps;  gdk_error_traps = gdk_error_traps->next;  node->next = gdk_error_trap_free_list;  gdk_error_trap_free_list = node;    result = _gdk_error_code;    trap = node->data;  _gdk_error_code = trap->error_code;  _gdk_error_warnings = trap->error_warnings;  XSetErrorHandler (trap->old_handler);    return result;}gchar *gdk_get_display (void){  return g_strdup (gdk_display_get_name (gdk_display_get_default ()));}/** * _gdk_send_xevent: * @display: #GdkDisplay which @window is on * @window: window ID to which to send the event * @propagate: %TRUE if the event should be propagated if the target window *             doesn't handle it. * @event_mask: event mask to match against, or 0 to send it to @window *              without regard to event masks. * @event_send: #XEvent to send *  * Send an event, like XSendEvent(), but trap errors and check * the result. *  * Return value: %TRUE if sending the event succeeded. **/gint _gdk_send_xevent (GdkDisplay *display,		  Window      window, 		  gboolean    propagate, 		  glong       event_mask,		  XEvent     *event_send){  gboolean result;  if (display->closed)    return FALSE;  gdk_error_trap_push ();  result = XSendEvent (GDK_DISPLAY_XDISPLAY (display), window, 		       propagate, event_mask, event_send);  XSync (GDK_DISPLAY_XDISPLAY (display), False);    return result && gdk_error_trap_pop() == Success;}void_gdk_region_get_xrectangles (GdkRegion   *region,                             gint         x_offset,                             gint         y_offset,                             XRectangle **rects,                             gint        *n_rects){  XRectangle *rectangles = g_new (XRectangle, region->numRects);  GdkRegionBox *boxes = region->rects;  gint i;    for (i = 0; i < region->numRects; i++)    {      rectangles[i].x = CLAMP (boxes[i].x1 + x_offset, G_MINSHORT, G_MAXSHORT);      rectangles[i].y = CLAMP (boxes[i].y1 + y_offset, G_MINSHORT, G_MAXSHORT);      rectangles[i].width = CLAMP (boxes[i].x2 + x_offset, G_MINSHORT, G_MAXSHORT) - rectangles[i].x;      rectangles[i].height = CLAMP (boxes[i].y2 + y_offset, G_MINSHORT, G_MAXSHORT) - rectangles[i].y;    }  *rects = rectangles;  *n_rects = region->numRects;}/** * gdk_x11_grab_server: *  * Call gdk_x11_display_grab() on the default display.  * To ungrab the server again, use gdk_x11_ungrab_server().  * * gdk_x11_grab_server()/gdk_x11_ungrab_server() calls can be nested. **/ voidgdk_x11_grab_server (void){  gdk_x11_display_grab (gdk_display_get_default ());}/** * gdk_x11_ungrab_server: * * Ungrab the default display after it has been grabbed with  * gdk_x11_grab_server().  **/voidgdk_x11_ungrab_server (void){  gdk_x11_display_ungrab (gdk_display_get_default ());}/** * gdk_x11_get_default_screen: *  * Gets the default GTK+ screen number. *  * Return value: returns the screen number specified by *   the --display command line option or the DISPLAY environment *   variable when gdk_init() calls XOpenDisplay(). **/gintgdk_x11_get_default_screen (void){  return gdk_screen_get_number (gdk_screen_get_default ());}/** * gdk_x11_get_default_root_xwindow: *  * Gets the root window of the default screen  * (see gdk_x11_get_default_screen()).   *  * Return value: an Xlib <type>Window</type>. **/Windowgdk_x11_get_default_root_xwindow (void){  return GDK_SCREEN_XROOTWIN (gdk_screen_get_default ());}/** * gdk_x11_get_default_xdisplay: *  * Gets the default GTK+ display. *  * Return value: the Xlib <type>Display*</type> for the display * specified in the <option>--display</option> command line option  * or the <envar>DISPLAY</envar> environment variable. **/Display *gdk_x11_get_default_xdisplay (void){  return GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());}#define __GDK_MAIN_X11_C__#include "gdkaliasdef.c"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -