JNIEXPORT void JNICALL Java_org_gnome_gdk_GdkWindow_gdk_1window_1set_1type_1hint ( JNIEnv* env, jclass cls, jlong _self, jint _hint ) { GdkWindow* self; GdkWindowTypeHint hint; // convert parameter self self = (GdkWindow*) _self; // convert parameter hint hint = (GdkWindowTypeHint) _hint; // call function gdk_window_set_type_hint(self, hint); // cleanup parameter self // cleanup parameter hint }
static void hildon_home_window_show (GtkWidget *widget) { gtk_widget_realize (widget); gdk_window_set_type_hint (widget->window, GDK_WINDOW_TYPE_HINT_DESKTOP); GTK_WIDGET_CLASS (hildon_home_window_parent_class)->show (widget); }
static void docked_move_resize(void) { GdkScreen *screen; int y = 0; if (!window_docked) return; screen = gtk_window_get_screen(GTK_WINDOW(window)); if (window_docked == WINDOW_DOCKED_BOTTOM) y = gdk_screen_get_height(screen) - window_frame.height; set_geometry_hints(); gtk_window_move(GTK_WINDOW(window), 0, y); cell_widget_pack(); key_widget_resize(key_widget); trace("y=%d", y); if (window_struts) gdk_window_set_type_hint(GDK_WINDOW(window->window), GDK_WINDOW_TYPE_HINT_DOCK); }
static void hildon_banner_realize (GtkWidget *widget) { GdkWindow *gdkwin; GdkScreen *screen; GdkAtom atom; guint32 portrait = 1; const gchar *notification_type = "_HILDON_NOTIFICATION_TYPE_BANNER"; HildonBannerPrivate *priv = HILDON_BANNER_GET_PRIVATE (widget); g_assert (priv); /* We let the parent to init widget->window before we need it */ if (GTK_WIDGET_CLASS (hildon_banner_parent_class)->realize) GTK_WIDGET_CLASS (hildon_banner_parent_class)->realize (widget); /* We use special hint to turn the banner into information notification. */ gdk_window_set_type_hint (widget->window, GDK_WINDOW_TYPE_HINT_NOTIFICATION); gtk_window_set_transient_for (GTK_WINDOW (widget), (GtkWindow *) priv->parent); gdkwin = widget->window; /* Set the _HILDON_NOTIFICATION_TYPE property so Matchbox places the window correctly */ atom = gdk_atom_intern ("_HILDON_NOTIFICATION_TYPE", FALSE); gdk_property_change (gdkwin, atom, gdk_x11_xatom_to_atom (XA_STRING), 8, GDK_PROP_MODE_REPLACE, (gpointer) notification_type, strlen (notification_type)); /* HildonBanner supports portrait mode */ atom = gdk_atom_intern ("_HILDON_PORTRAIT_MODE_SUPPORT", FALSE); gdk_property_change (gdkwin, atom, gdk_x11_xatom_to_atom (XA_CARDINAL), 32, GDK_PROP_MODE_REPLACE, (gpointer) &portrait, 1); /* Manage override flag */ if ((priv->require_override_dnd)&&(!priv->overrides_dnd)) { hildon_banner_set_override_flag (HILDON_BANNER (widget)); priv->overrides_dnd = TRUE; } screen = gtk_widget_get_screen (widget); g_signal_connect (screen, "size-changed", G_CALLBACK (screen_size_changed), widget); }
static VALUE gdkwin_set_type_hint(VALUE self, VALUE hint) { gdk_window_set_type_hint(_SELF(self), RVAL2GENUM(hint, GDK_TYPE_WINDOW_TYPE_HINT)); return self; }
gint notification_window_open(const gchar *message, const gchar *submessage, guint timeout) { GtkWidget *window; GtkWidget *vbox; GtkWidget *msglabel; GtkWidget *sublabel; GdkRectangle rect; gint x, y; GtkRequisition requisition; if (notify_window.window) { notification_window_destroy(); } window = gtk_window_new(GTK_WINDOW_POPUP); gtk_window_set_title(GTK_WINDOW(window), _("Notification")); gtk_window_set_wmclass(GTK_WINDOW(window), "notification", "Sylpheed"); gtk_container_set_border_width(GTK_CONTAINER(window), 8); gtk_widget_set_events(window, GDK_EXPOSURE_MASK|GDK_BUTTON_MOTION_MASK|GDK_POINTER_MOTION_MASK|GDK_POINTER_MOTION_HINT_MASK|GDK_BUTTON_PRESS_MASK|GDK_BUTTON_RELEASE_MASK|GDK_ENTER_NOTIFY_MASK|GDK_LEAVE_NOTIFY_MASK); gtk_window_set_skip_taskbar_hint(GTK_WINDOW(window), TRUE); gtk_window_set_gravity(GTK_WINDOW(window), GDK_GRAVITY_SOUTH_EAST); gtk_widget_set_size_request(window, NOTIFICATIONWINDOW_WIDTH, -1); gtk_widget_realize(window); gdk_window_set_type_hint(window->window, GDK_WINDOW_TYPE_HINT_NOTIFICATION); /* move window bottom-right */ get_work_area(&rect); x = rect.x + rect.width - NOTIFICATIONWINDOW_WIDTH - 2; if (x < 0) x = 0; y = rect.y + rect.height - NOTIFICATIONWINDOW_HEIGHT - 2; if (y < 0) y = 0; gtk_window_move(GTK_WINDOW(window), x, y); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(nwin_destroy_cb), NULL); g_signal_connect(G_OBJECT(window), "button_press_event", G_CALLBACK(nwin_button_pressed), NULL); g_signal_connect(G_OBJECT(window), "enter_notify_event", G_CALLBACK(nwin_entered), NULL); g_signal_connect(G_OBJECT(window), "motion_notify_event", G_CALLBACK(nwin_motion_notify), NULL); vbox = gtk_vbox_new(FALSE, 8); gtk_container_add(GTK_CONTAINER(window), vbox); msglabel = gtk_label_new(message); gtk_box_pack_start(GTK_BOX(vbox), msglabel, FALSE, FALSE, 0); sublabel = gtk_label_new(""); gtk_label_set_ellipsize(GTK_LABEL(sublabel), PANGO_ELLIPSIZE_END); gtk_label_set_markup(GTK_LABEL(sublabel), submessage); gtk_box_pack_start(GTK_BOX(vbox), sublabel, FALSE, FALSE, 0); gtk_label_set_justify(GTK_LABEL(sublabel), GTK_JUSTIFY_LEFT); gtk_misc_set_alignment(GTK_MISC(sublabel), 0.0, 0.5); gtk_widget_show_all(window); /* adjust window size and position */ gtk_widget_get_child_requisition(window, &requisition); notify_window.width = NOTIFICATIONWINDOW_WIDTH; notify_window.height = MAX(requisition.height, NOTIFICATIONWINDOW_HEIGHT); gtk_widget_set_size_request(window, NOTIFICATIONWINDOW_WIDTH, notify_window.height); y = rect.y + rect.height - notify_window.height - 2; if (y < 0) y = 0; gtk_window_move(GTK_WINDOW(window), x, y); if (timeout == 0) timeout = 1; notify_window.notify_tag = g_timeout_add(timeout * 1000, notify_timeout_cb, NULL); debug_print("notification window created\n"); notify_window.window = window; notify_window.msglabel = msglabel; notify_window.sublabel = sublabel; notify_window.x = x; notify_window.y = y; notify_window.fade_length = 0; notify_window.fade_count = 0; notify_window.notify_event_count = 0; notify_window.timeout = timeout; return 0; }
void panel_start_gui(panel *p) { ENTER; //gtk_rc_parse_string(transparent_rc); p->topgwin = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width(GTK_CONTAINER(p->topgwin), 0); gtk_window_set_resizable(GTK_WINDOW(p->topgwin), FALSE); gtk_window_set_wmclass(GTK_WINDOW(p->topgwin), "panel", "trayer"); gtk_window_set_title(GTK_WINDOW(p->topgwin), "panel"); gtk_window_set_position(GTK_WINDOW(p->topgwin), GTK_WIN_POS_CENTER); g_signal_connect ( G_OBJECT(p->topgwin) , "delete-event" , G_CALLBACK(panel_delete_event) , p); g_signal_connect ( G_OBJECT(p->topgwin) , "destroy-event", G_CALLBACK(panel_destroy_event), p); g_signal_connect ( G_OBJECT (p->topgwin), "size-request" , G_CALLBACK(panel_size_req) , p); g_signal_connect ( G_OBJECT (p->topgwin), "size-allocate", G_CALLBACK(panel_size_alloc), p); if (p->transparent) { g_signal_connect (G_OBJECT (p->topgwin), "configure-event", G_CALLBACK(panel_configure_event), p); g_signal_connect (G_OBJECT (p->topgwin), "style-set", G_CALLBACK( panel_style_set), p); } if (p->on_primary) { GdkDisplay *display = gdk_display_get_default (); GdkScreen *screen = gdk_display_get_screen(display, 0); g_signal_connect ( screen, "monitors-changed", G_CALLBACK(panel_monitors_changed), (gpointer)p ); p->monitor = gdk_screen_get_primary_monitor(screen); } gtk_widget_realize(p->topgwin); gdk_window_set_decorations(p->topgwin->window, 0); gtk_widget_set_app_paintable(p->topgwin, TRUE); p->lbox = p->my_box_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(p->lbox), 0); gtk_container_add(GTK_CONTAINER(p->topgwin), p->lbox); gtk_widget_show(p->lbox); if (p->allign == ALLIGN_RIGHT) { GtkWidget * expander = p->my_box_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(p->lbox), expander, TRUE, TRUE, 0); gtk_widget_show(expander); } p->box = p->my_box_new(FALSE, 1); gtk_container_set_border_width(GTK_CONTAINER(p->box), 1); gtk_box_pack_start(GTK_BOX(p->lbox), p->box, FALSE, TRUE, padding); gtk_widget_show(p->box); // get properties on topgwin p->topGdkWindow = gtk_widget_get_window(p->topgwin); p->topxwin = GDK_WINDOW_XWINDOW(GTK_WIDGET(p->topgwin)->window); bg_init(gdk_helper_display()); /* make our window unfocusable */ gdk_window_set_accept_focus(p->topGdkWindow,False); if (p->setdocktype) { gdk_window_set_type_hint(p->topGdkWindow,GDK_WINDOW_TYPE_HINT_DOCK); } Xclimsg(p->topxwin, a_NET_WM_DESKTOP, 0xFFFFFFFF, 0, 0, 0, 0); /************************/ /* Window Mapping Point */ gtk_widget_show_all(p->topgwin); Xclimsg(p->topxwin, a_NET_WM_DESKTOP, 0xFFFFFFFF, 0, 0, 0, 0); gdk_window_stick ( p->topGdkWindow); gdk_window_set_skip_pager_hint ( p->topGdkWindow, True ); gdk_window_set_skip_taskbar_hint ( p->topGdkWindow, True ); XSelectInput (gdk_helper_display(), GDK_ROOT_WINDOW(), PropertyChangeMask); XSelectInput (gdk_helper_display(), p->topxwin, PropertyChangeMask | FocusChangeMask | StructureNotifyMask); gdk_window_add_filter(gdk_get_default_root_window (), (GdkFilterFunc)panel_wm_events, p); calculate_position(p, distance,distancefrom); gdk_window_move_resize(p->topgwin->window, p->ax, p->ay, p->aw, p->ah); if (p->setstrut) panel_set_wm_strut(p); if (p->lower) XLowerWindow(gdk_helper_display(), p->topxwin); RET(); }
static void hd_incoming_event_window_realize (GtkWidget *widget) { HDIncomingEventWindowPrivate *priv = HD_INCOMING_EVENT_WINDOW (widget)->priv; GdkScreen *screen; const gchar *notification_type, *icon; GtkIconSize icon_size; GdkPixmap *pixmap; cairo_t *cr; screen = gtk_widget_get_screen (widget); gtk_widget_set_colormap (widget, gdk_screen_get_rgba_colormap (screen)); gtk_widget_set_app_paintable (widget, TRUE); gtk_window_set_decorated (GTK_WINDOW (widget), FALSE); GTK_WIDGET_CLASS (hd_incoming_event_window_parent_class)->realize (widget); /* Notification window */ gdk_window_set_type_hint (widget->window, GDK_WINDOW_TYPE_HINT_NOTIFICATION); /* Set the _NET_WM_WINDOW_TYPE property to _HILDON_WM_WINDOW_TYPE_HOME_APPLET */ if (priv->preview) notification_type = "_HILDON_NOTIFICATION_TYPE_PREVIEW"; else notification_type = "_HILDON_NOTIFICATION_TYPE_INCOMING_EVENT"; hd_incoming_event_window_set_string_xwindow_property (widget, "_HILDON_NOTIFICATION_TYPE", notification_type); /* Assume the properties have already been set. Earlier these X window * properties couldn't be set because we weren't realized. */ gtk_image_get_icon_name (GTK_IMAGE (priv->icon), &icon, &icon_size); hd_incoming_event_window_set_string_xwindow_property (widget, "_HILDON_INCOMING_EVENT_NOTIFICATION_ICON", icon); hd_incoming_event_window_set_string_xwindow_property (widget, "_HILDON_INCOMING_EVENT_NOTIFICATION_SUMMARY", gtk_label_get_text (GTK_LABEL (priv->title))); hd_incoming_event_window_set_string_xwindow_property (widget, "_HILDON_INCOMING_EVENT_NOTIFICATION_MESSAGE", gtk_label_get_label (GTK_LABEL (priv->message))); hd_incoming_event_window_set_string_xwindow_property (widget, "_HILDON_INCOMING_EVENT_NOTIFICATION_DESTINATION", priv->destination); /* Update time of nopreview windows */ if (!priv->preview && hd_incoming_events_get_display_on ()) hd_incoming_event_window_update_time (HD_INCOMING_EVENT_WINDOW (widget)); hd_incoming_event_window_update_title_and_amount (HD_INCOMING_EVENT_WINDOW (widget)); /* Set background to transparent pixmap */ pixmap = gdk_pixmap_new (GDK_DRAWABLE (widget->window), 1, 1, -1); cr = gdk_cairo_create (GDK_DRAWABLE (pixmap)); cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.0); cairo_paint (cr); cairo_destroy (cr); gdk_window_set_back_pixmap (widget->window, pixmap, FALSE); g_object_unref(pixmap); }
static VALUE rg_set_type_hint(VALUE self, VALUE hint) { gdk_window_set_type_hint(_SELF(self), RVAL2GDKWINDOWHINT(hint)); return self; }