JNIEXPORT jboolean JNICALL Java_org_gnome_gdk_GdkWindow_gdk_1window_1set_1static_1gravities ( JNIEnv* env, jclass cls, jlong _self, jboolean _useStatic ) { gboolean result; jboolean _result; GdkWindow* self; gboolean useStatic; // convert parameter self self = (GdkWindow*) _self; // convert parameter useStatic useStatic = (gboolean) _useStatic; // call function result = gdk_window_set_static_gravities(self, useStatic); // cleanup parameter self // cleanup parameter useStatic // translate return value to JNI type _result = (jboolean) result; // and finally return _result; }
static VALUE gdkwin_set_static_gravities(VALUE self, VALUE use_static) { gboolean ret = gdk_window_set_static_gravities(_SELF(self), RVAL2CBOOL(use_static)); if (! ret) rb_raise(rb_eRuntimeError, "couldn't turn on static gravity"); return self; }
static void gtk_pizza_realize (GtkWidget *widget) { GtkPizza *pizza; GdkWindowAttr attributes; gint attributes_mask; GtkPizzaChild *child; GList *children; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_PIZZA (widget)); pizza = GTK_PIZZA (widget); GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); attributes.window_type = GDK_WINDOW_CHILD; attributes.x = widget->allocation.x; attributes.y = widget->allocation.y; attributes.width = widget->allocation.width; attributes.height = widget->allocation.height; #ifndef __WXUNIVERSAL__ if (pizza->shadow_type == GTK_MYSHADOW_NONE) { /* no border, no changes to sizes */ } else if (pizza->shadow_type == GTK_MYSHADOW_THIN) { /* GTK_MYSHADOW_THIN == wxSIMPLE_BORDER */ attributes.x += 1; attributes.y += 1; attributes.width -= 2; attributes.height -= 2; } else { /* GTK_MYSHADOW_IN == wxSUNKEN_BORDER */ /* GTK_MYSHADOW_OUT == wxRAISED_BORDER */ attributes.x += 2; attributes.y += 2; attributes.width -= 4; attributes.height -= 4; } #endif /* __WXUNIVERSAL__ */ /* minimal size */ if (attributes.width < 2) attributes.width = 2; if (attributes.height < 2) attributes.height = 2; attributes.wclass = GDK_INPUT_OUTPUT; attributes.visual = gtk_widget_get_visual (widget); attributes.colormap = gtk_widget_get_colormap (widget); attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; widget->window = gdk_window_new(gtk_widget_get_parent_window (widget), &attributes, attributes_mask); gdk_window_set_user_data (widget->window, widget); attributes.x = 0; attributes.y = 0; attributes.event_mask = gtk_widget_get_events (widget); attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK; pizza->bin_window = gdk_window_new(widget->window, &attributes, attributes_mask); gdk_window_set_user_data (pizza->bin_window, widget); widget->style = gtk_style_attach (widget->style, widget->window); gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); gtk_style_set_background (widget->style, pizza->bin_window, GTK_STATE_NORMAL ); /* gdk_window_set_back_pixmap( widget->window, NULL, FALSE ); gdk_window_set_back_pixmap( pizza->bin_window, NULL, FALSE ); */ /* add filters for intercepting visibility and expose events */ gdk_window_add_filter (widget->window, gtk_pizza_main_filter, pizza); gdk_window_add_filter (pizza->bin_window, gtk_pizza_filter, pizza); /* we NEED gravity or we'll give up */ gravity_works = gdk_window_set_static_gravities (pizza->bin_window, TRUE); /* cannot be done before realisation */ children = pizza->children; while (children) { child = children->data; children = children->next; gtk_widget_set_parent_window (child->widget, pizza->bin_window); } }
GdkSuperWin * gdk_superwin_new (GdkWindow *parent_window, guint x, guint y, guint width, guint height) { GdkWindowAttr attributes; gint attributes_mask; Window bin_xwindow; Display *xdisplay; XSetWindowAttributes xattr; unsigned long xattr_mask; GdkSuperWin *superwin = gtk_type_new(GDK_TYPE_SUPERWIN); superwin->translate_queue = NULL; superwin->shell_func = NULL; superwin->paint_func = NULL; superwin->flush_func = NULL; superwin->func_data = NULL; superwin->notify = NULL; /* Create the shell (clipping) window */ attributes.window_type = GDK_WINDOW_CHILD; attributes.x = x; attributes.y = y; attributes.width = width; attributes.height = height; attributes.wclass = GDK_INPUT_OUTPUT; attributes.colormap = gdk_rgb_get_cmap(); attributes.visual = gdk_rgb_get_visual(); attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK; attributes_mask = GDK_WA_VISUAL | GDK_WA_X | GDK_WA_Y | GDK_WA_COLORMAP; superwin->shell_window = gdk_window_new (parent_window, &attributes, attributes_mask); /* set the back pixmap to None so that you don't end up with the gtk default which is BlackPixel */ gdk_window_set_back_pixmap (superwin->shell_window, NULL, FALSE); /* if we failed to create a window, die a horrible death */ g_assert((superwin->shell_window)); /* Create the bin window for drawing */ attributes.x = 0; attributes.y = 0; attributes.event_mask = GDK_EXPOSURE_MASK; superwin->bin_window = gdk_window_new (superwin->shell_window, &attributes, attributes_mask); /* set the back pixmap to None so that you don't end up with the gtk default which is BlackPixel */ gdk_window_set_back_pixmap (superwin->bin_window, NULL, FALSE); /* set the backing store for the bin window */ bin_xwindow = GDK_WINDOW_XWINDOW(superwin->bin_window); xdisplay = GDK_WINDOW_XDISPLAY(superwin->bin_window); /* XXX should we make this Always? */ xattr.backing_store = WhenMapped; xattr_mask = CWBackingStore; /* XChangeWindowAttributes(xdisplay, bin_xwindow, xattr_mask, &xattr); */ gdk_window_show (superwin->bin_window); gdk_window_add_filter (superwin->shell_window, gdk_superwin_shell_filter, superwin); gdk_window_add_filter (superwin->bin_window, gdk_superwin_bin_filter, superwin); gravity_works = gdk_window_set_static_gravities (superwin->bin_window, TRUE); return superwin; }