static void DrawFrame( GtkWidget *widget, int x, int y, int w, int h ) { int org_x = 0; int org_y = 0; gdk_window_get_origin( widget->window, &org_x, &org_y ); x += org_x; y += org_y; GdkGC *gc = gdk_gc_new( GDK_ROOT_PARENT() ); gdk_gc_set_subwindow( gc, GDK_INCLUDE_INFERIORS ); gdk_gc_set_function( gc, GDK_INVERT ); gdk_draw_rectangle( GDK_ROOT_PARENT(), gc, FALSE, x, y, w, h ); gdk_gc_unref( gc ); }
// this function will make sure that everything has been initialized. nsresult nsScreenManagerGtk :: EnsureInit() { if (mCachedScreenArray.Count() > 0) return NS_OK; #if GTK_CHECK_VERSION(2,2,0) mRootWindow = gdk_get_default_root_window(); #else mRootWindow = GDK_ROOT_PARENT(); #endif // GTK_CHECK_VERSION(2,2,0) g_object_ref(mRootWindow); // GDK_STRUCTURE_MASK ==> StructureNotifyMask, for ConfigureNotify // GDK_PROPERTY_CHANGE_MASK ==> PropertyChangeMask, for PropertyNotify gdk_window_set_events(mRootWindow, GdkEventMask(gdk_window_get_events(mRootWindow) | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK)); gdk_window_add_filter(mRootWindow, root_window_event_filter, this); #ifdef MOZ_X11 mNetWorkareaAtom = XInternAtom(GDK_WINDOW_XDISPLAY(mRootWindow), "_NET_WORKAREA", False); #endif return Init(); }
int main (int argc, char *argv[]) { #ifdef ENABLE_NLS bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); textdomain (PACKAGE); #endif gtk_set_locale (); gtk_init (&argc, &argv); add_pixmap_directory (PACKAGE_DATA_DIR "/pixmaps"); add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); e = evas_new(); evas_set_output_method(e, RENDER_METHOD_ALPHA_SOFTWARE); { Visual *vis; Colormap cmap; vis = evas_get_optimal_visual(e, GDK_WINDOW_XDISPLAY(GDK_ROOT_PARENT())); gdk_vis = gdkx_visual_get(XVisualIDFromVisual(vis)); cmap = evas_get_optimal_colormap(e, GDK_WINDOW_XDISPLAY(GDK_ROOT_PARENT())); gdk_cmap = gdkx_colormap_get(cmap); /* workaround for bug in gdk - well oversight in api */ ((GdkColormapPrivate *)gdk_cmap)->visual = gdk_vis; } /* * The following code was added by Glade to create one of each component * (except popup menus), just so that you see something after building * the project. Delete any components that you don't want shown initially. */ mainwin = create_mainwin (); gtk_widget_show (mainwin); gtk_main (); return 0; }
EggTrayIcon * egg_tray_icon_new_for_xscreen (Screen *xscreen, const char *name) { EggTrayIcon *icon; char buffer[256]; GdkWindow *root_window; g_return_val_if_fail (xscreen != NULL, NULL); icon = (EggTrayIcon*)gtk_object_new (EGG_TYPE_TRAY_ICON, NULL); gtk_window_set_title (GTK_WINDOW (icon), name); #if HAVE_GTK_MULTIHEAD gtk_plug_construct_for_display (GTK_PLUG_XEMBED (icon), gdk_screen_get_display (screen), 0); #else gtk_plug_xembed_construct (GTK_PLUG_XEMBED (icon), 0); #endif gtk_widget_realize (GTK_WIDGET (icon)); /* Now see if there's a manager window around */ g_snprintf (buffer, sizeof (buffer), "_NET_SYSTEM_TRAY_S%d", XScreenNumberOfScreen (xscreen)); icon->selection_atom = XInternAtom (DisplayOfScreen (xscreen), buffer, False); icon->manager_atom = XInternAtom (DisplayOfScreen (xscreen), "MANAGER", False); icon->system_tray_opcode_atom = XInternAtom (DisplayOfScreen (xscreen), "_NET_SYSTEM_TRAY_OPCODE", False); egg_tray_icon_update_manager_window (icon); #if HAVE_GTK_MULTIHEAD root_window = gdk_screen_get_root_window (screen); #else root_window = GDK_ROOT_PARENT(); /* gdk_window_lookup (gdk_x11_get_default_root_xwindow ()); */ #endif /* Add a root window filter so that we get changes on MANAGER */ gdk_window_add_filter (root_window, egg_tray_icon_manager_filter, icon); return icon; }
void nsCairoScreen::Init () { #ifdef MOZ_ENABLE_GTK2 mAvailRect = mRect = nsRect(0, 0, gdk_screen_width(), gdk_screen_height()); // We need to account for the taskbar, etc in the available rect. // See http://freedesktop.org/Standards/wm-spec/index.html#id2767771 // XXX It doesn't change that often, but we should probably // listen for changes to _NET_WORKAREA. // XXX do we care about _NET_WM_STRUT_PARTIAL? That will // add much more complexity to the code here (our screen // could have a non-rectangular shape), but should // lead to greater accuracy. #if GTK_CHECK_VERSION(2,2,0) GdkWindow *root_window = gdk_get_default_root_window(); #else GdkWindow *root_window = GDK_ROOT_PARENT(); #endif // GTK_CHECK_VERSION(2,2,0) long *workareas; GdkAtom type_returned; int format_returned; int length_returned; #if GTK_CHECK_VERSION(2,0,0) GdkAtom cardinal_atom = gdk_x11_xatom_to_atom(XA_CARDINAL); #else GdkAtom cardinal_atom = (GdkAtom) XA_CARDINAL; #endif gdk_error_trap_push(); // gdk_property_get uses (length + 3) / 4, hence G_MAXLONG - 3 here. if (!gdk_property_get(root_window, gdk_atom_intern ("_NET_WORKAREA", FALSE), cardinal_atom, 0, G_MAXLONG - 3, FALSE, &type_returned, &format_returned, &length_returned, (guchar **) &workareas)) { // This window manager doesn't support the freedesktop standard. // Nothing we can do about it, so assume full screen size. return; } // Flush the X queue to catch errors now. gdk_flush(); if (!gdk_error_trap_pop() && type_returned == cardinal_atom && length_returned && (length_returned % 4) == 0 && format_returned == 32) { int num_items = length_returned / sizeof(long); for (int i = 0; i < num_items; i += 4) { nsRect workarea(workareas[i], workareas[i + 1], workareas[i + 2], workareas[i + 3]); if (!mRect.Contains(workarea)) { NS_WARNING("Invalid bounds"); continue; } mAvailRect.IntersectRect(mAvailRect, workarea); } } #elif MOZ_ENABLE_XLIB mScreenNum = 0; mRect.x = mAvailRect.x = 0; mRect.y = mAvailRect.y = 0; mRect.width = mAvailRect.width = 1600; mRect.height = mAvailRect.height = 1200; #endif }
int fe_args (int argc, char *argv[]) { #ifdef USE_GNOME struct poptOption options[] = { {"cfgdir", 'd', POPT_ARG_STRING, 0, 0, _("Config dir"), 0}, {"noauto", 'a', POPT_ARG_NONE, 0, 0, _("Don't Auto connect"), 0}, #ifdef USE_PANEL {"no-panel", 'n', POPT_ARG_NONE, 0, 0, _("Don't use GNOME Panel"), 0}, #endif POPT_AUTOHELP {0, '\0', 0, 0} }; #endif if (argc > 1) { if (!strcasecmp (argv[1], "-a") || !strcasecmp (argv[1], "--noauto")) { auto_connect = 0; } #ifdef USE_PANEL if (!strcasecmp (argv[1], "-n") || !strcasecmp (argv[1], "--no-panel")) { nopanel = TRUE; } #endif if (!strcasecmp (argv[1], "-v") || !strcasecmp (argv[1], "--version")) { printf (PACKAGE" "VERSION"\n"); return 0; } #ifndef USE_GNOME #ifdef ENABLE_NLS bindtextdomain (PACKAGE, PREFIX"/share/locale"); textdomain (PACKAGE); #endif if (!strcasecmp (argv[1], "-h") || !strcasecmp (argv[1], "--help")) { printf(_("%s %s Options:\n\n" " --cfgdir <dir> -d\t : use a different config dir\n" " --noauto -a\t : don't auto connect\n" " --version -v\t : show version information\n" ), PACKAGE, VERSION); return 0; } #endif } #ifdef ENABLE_NLS #ifdef USE_GNOME bindtextdomain (PACKAGE, PREFIX"/share/locale"); textdomain (PACKAGE); #endif #endif if (argc > 2) { if (!strcasecmp (argv[1], "-d") || !strcasecmp (argv[1], "--cfgdir")) { xdir = strdup (argv[2]); if (xdir[strlen (xdir) - 1] == '/') xdir[strlen (xdir) - 1] = 0; } } #ifndef USE_GNOME gtk_set_locale (); #endif #ifdef USE_PANEL if (nopanel) gnome_init_with_popt_table (argv[0], VERSION, argc, argv, options, 0, 0); else { CORBA_Environment ev; CORBA_exception_init (&ev); gnome_CORBA_init_with_popt_table (argv[0], VERSION, &argc, argv, options, 0, 0, GNORBA_INIT_SERVER_FUNC, &ev); CORBA_exception_free (&ev); } #else #ifdef USE_GNOME gnome_init_with_popt_table (argv[0], VERSION, argc, argv, options, 0, 0); #else gtk_init (&argc, &argv); #endif #endif #ifndef USE_GNOME #ifdef USE_GDK_PIXBUF gdk_rgb_init(); #endif #endif #ifdef USE_XLIB proxy_invisible = gtk_invisible_new (); gtk_widget_show (proxy_invisible); /* Make the root window send events to the invisible proxy widget */ gdk_window_set_user_data (GDK_ROOT_PARENT (), proxy_invisible); /* Select for PropertyNotify events from the root window */ XSelectInput (GDK_DISPLAY (), GDK_ROOT_WINDOW (), PropertyChangeMask); gtk_signal_connect (GTK_OBJECT (proxy_invisible), "property-notify-event", GTK_SIGNAL_FUNC (handle_property_notify), NULL); #endif return 1; }
static void XF86AudioKeyGrab_init() { gdk_window_add_filter(GDK_ROOT_PARENT(), xf86audio_filter, map); grab_keys(); }