void set_no_focus(GtkWidget *win) { gdk_window_set_override_redirect(gtk_widget_get_window(win), TRUE); gtk_window_set_accept_focus(GTK_WINDOW(win), FALSE); gtk_window_set_focus_on_map (GTK_WINDOW(win), FALSE); gtk_window_set_resizable (GTK_WINDOW (win), FALSE); }
static VALUE gdkwin_set_override_redirect(VALUE self, VALUE override_redirect) { gdk_window_set_override_redirect(_SELF(self), RVAL2CBOOL(override_redirect)); return self; }
JNIEXPORT void JNICALL Java_org_gnome_gdk_GdkWindow_gdk_1window_1set_1override_1redirect ( JNIEnv* env, jclass cls, jlong _self, jboolean _overrideRedirect ) { GdkWindow* self; gboolean overrideRedirect; // convert parameter self self = (GdkWindow*) _self; // convert parameter overrideRedirect overrideRedirect = (gboolean) _overrideRedirect; // call function gdk_window_set_override_redirect(self, overrideRedirect); // cleanup parameter self // cleanup parameter overrideRedirect }
void xmms_fullscreen_leave(GtkWidget * win) { fullscreen_window_t *fwin; FULL_LOCK(); fwin = getwindow(win); if (fwin->is_full && fwin->display->is_full) { /* Release our grabs */ gdk_pointer_ungrab(GDK_CURRENT_TIME); gdk_keyboard_ungrab(GDK_CURRENT_TIME); /* Let the WM manage this window again */ gdk_window_hide(fwin->window->window); gdk_window_set_override_redirect(fwin->window->window, FALSE); gdk_window_show(fwin->window->window); /* Restore size/position */ gdk_window_move_resize(fwin->window->window, fwin->ox, fwin->oy, fwin->owidth, fwin->oheight); XF86VidModeSwitchToMode(fwin->display->display, DefaultScreen(fwin->display->display), fwin->display->origmode); fwin->display->is_full = FALSE; } fwin->is_full = FALSE; FULL_UNLOCK(); }
JS_EXPORT_API void guide_set_focus(gboolean focus) { GdkWindow* gdkwindow = gtk_widget_get_window (get_container()); gdk_window_set_focus_on_map (gdkwindow, focus); gdk_window_set_accept_focus (gdkwindow, focus); gdk_window_set_override_redirect(gdkwindow, !focus); }
JS_EXPORT_API void osd_set_focus(gboolean focus) { gtk_window_set_focus_on_map (GTK_WINDOW (container), focus); gtk_window_set_accept_focus (GTK_WINDOW (container), focus); gtk_window_set_focus_visible (GTK_WINDOW (container), focus); GdkWindow* gdkwindow = gtk_widget_get_window (container); gdk_window_set_focus_on_map (gdkwindow, focus); gdk_window_set_accept_focus (gdkwindow, focus); gdk_window_set_override_redirect(gdkwindow, !focus); }
void set_no_focus(GtkWidget *win) { #if UNIX gdk_window_set_override_redirect(gtk_widget_get_window(win), TRUE); #else gtk_window_set_decorated(GTK_WINDOW(win), FALSE); gtk_window_set_keep_above(GTK_WINDOW(win), TRUE); gtk_window_set_accept_focus(GTK_WINDOW(win), FALSE); gtk_window_set_type_hint(GTK_WINDOW(win), GDK_WINDOW_TYPE_HINT_TOOLTIP); gtk_window_set_skip_taskbar_hint(GTK_WINDOW(win), TRUE); #endif gtk_window_set_accept_focus(GTK_WINDOW(win), FALSE); gtk_window_set_focus_on_map (GTK_WINDOW(win), FALSE); }
void draw_background_by_rect(GtkWidget* widget, struct DisplayInfo info, const gchar* xatom_name) { g_message("[%s], %dx%d(%d,%d)\n", __func__, info.width, info.height, info.x, info.y); gtk_widget_set_size_request(widget, info.width, info.height); gtk_window_move(GTK_WINDOW(widget), info.x, info.y); setup_background(widget,NULL,xatom_name); gtk_widget_realize (widget); GdkWindow* gdkwindow = gtk_widget_get_window (widget); gdk_window_set_accept_focus(gdkwindow,FALSE); gdk_window_set_override_redirect (gdkwindow, TRUE); gtk_widget_show (widget); }
int main (int argc, char **argv) { if (argc == 2 && 0 == g_strcmp0(argv[1], "-d")) g_setenv("G_MESSAGES_DEBUG", "all", FALSE); if (is_livecd()){ dde_session_register(); return 0; } if (is_application_running("com.deepin.dde.guide")) { g_warning("another instance of application dde-guide is running...\n"); return 0; } else { singleton("com.deepin.dde.guide"); } init_i18n (); gtk_init (&argc, &argv); g_log_set_default_handler((GLogFunc)log_to_file, "dde-guide"); if (!guide_is_debug()){ struct DisplayInfo rect_screen; update_screen_info(&rect_screen); widget_move_by_rect(get_container(),rect_screen); listen_monitors_changed_signal(G_CALLBACK(monitors_changed_cb),NULL); } GtkWidget *webview = d_webview_new_with_uri (GET_HTML_PATH("guide")); gtk_container_add (GTK_CONTAINER(get_container()), GTK_WIDGET (webview)); g_signal_connect(webview, "draw", G_CALLBACK(erase_background), NULL); gtk_widget_realize (get_container()); gtk_widget_realize (webview); GdkWindow* gdkwindow = gtk_widget_get_window (get_container()); if (!guide_is_debug()) gdk_window_set_override_redirect (gdkwindow, TRUE); gtk_widget_show_all (get_container()); gtk_main (); return 0; }
gboolean xmms_fullscreen_enter(GtkWidget * win, gint * w, gint * h) { gint i, close, how_close = -1, t, dummy; gboolean retval = FALSE; fullscreen_window_t *fwin; FULL_LOCK(); fwin = getwindow(win); if (!fwin->display->is_full && !fwin->is_full && fwin->display->can_full) { for (close = 0; close < fwin->display->num_modes; close++) { if ((fwin->display->modes[close]->hdisplay >= *w) && (fwin->display->modes[close]->vdisplay >= *h)) { how_close = fwin->display->modes[close]->hdisplay - *w; break; } } for (i = close + 1; i < fwin->display->num_modes; i++) { if (fwin->display->modes[i]->vdisplay < *h) continue; t = fwin->display->modes[i]->hdisplay - *w; if (t >= 0 && t < how_close) { close = i; how_close = t; } } if (close < fwin->display->num_modes) { *w = fwin->display->modes[close]->hdisplay; *h = fwin->display->modes[close]->vdisplay; /* Save the old position/size */ gdk_window_get_root_origin(fwin->window->window, &fwin->ox, &fwin->oy); gdk_window_get_size(fwin->window->window, &fwin->owidth, &fwin->oheight); /* Move it. */ gdk_window_move_resize(fwin->window->window, 0, 0, fwin->display->modes[close]->hdisplay, fwin->display->modes[close]->vdisplay); /* Tell the WM not to mess with this window (no more decor) */ gdk_window_hide(fwin->window->window); gdk_window_set_override_redirect(fwin->window->window, TRUE); gdk_window_show(fwin->window->window); /* * XXX: HACK * Something is ungrabbing the pointer shortly * after the above unmap/override_redirect=TRUE/map * is done. I don't know what at this time, only * that it's not XMMS, and that it's very very evil. */ gdk_flush(); xmms_usleep(50000); /* Steal the keyboard/mouse */ /* XXX: FIXME, use timeouts.. */ for (t = 0; t < 10; t++) { dummy = gdk_pointer_grab(fwin->window->window, TRUE, 0, fwin->window->window, NULL, GDK_CURRENT_TIME); if (dummy == GrabSuccess) break; gtk_main_iteration_do(FALSE); xmms_usleep(10000); } gdk_keyboard_grab(fwin->window->window, TRUE, GDK_CURRENT_TIME); /* Do the video mode switch.. */ XF86VidModeSwitchToMode(fwin->display->display, DefaultScreen(fwin->display->display), fwin->display->modes[close]); XF86VidModeSetViewPort(fwin->display->display, DefaultScreen(fwin->display->display), 0, 0); retval = TRUE; fwin->is_full = TRUE; fwin->display->is_full = TRUE; } } FULL_UNLOCK(); return retval; }