JNIEXPORT jstring JNICALL Java_org_gnome_gtk_GtkWindow_gtk_1window_1get_1role ( JNIEnv* env, jclass cls, jlong _self ) { const gchar* result; jstring _result; GtkWindow* self; // convert parameter self self = (GtkWindow*) _self; // call function result = gtk_window_get_role(self); // cleanup parameter self // translate return value to JNI type _result = (jstring) bindings_java_newString(env, result); // and finally return _result; }
static void window_added_cb (GtkApplication *application, GtkWindow *window, EphySession *session) { GtkWidget *notebook; EphyWindow *ephy_window; ephy_session_save (session, SESSION_STATE); if (!EPHY_IS_WINDOW (window)) return; ephy_window = EPHY_WINDOW (window); notebook = ephy_window_get_notebook (ephy_window); g_signal_connect (notebook, "page-added", G_CALLBACK (notebook_page_added_cb), session); g_signal_connect (notebook, "page-removed", G_CALLBACK (notebook_page_removed_cb), session); g_signal_connect (notebook, "page-reordered", G_CALLBACK (notebook_page_reordered_cb), session); /* Set unique identifier as role, so that on restore, the WM can * place the window on the right workspace */ if (gtk_window_get_role (window) == NULL) { /* I guess rand() is unique enough, otherwise we could use * time + pid or something */ char *role; role = g_strdup_printf ("epiphany-window-%x", rand()); gtk_window_set_role (window, role); g_free (role); } }
static void impl_attach_window (EphyExtension *extension, EphyWindow *window) { EphySession *session = EPHY_SESSION (extension); GtkWidget *notebook; LOG ("impl_attach_window"); session->priv->windows = g_list_append (session->priv->windows, window); ephy_session_save (session, SESSION_STATE); g_signal_connect (window, "focus-in-event", G_CALLBACK (window_focus_in_event_cb), session); notebook = ephy_window_get_notebook (window); g_signal_connect (notebook, "page-added", G_CALLBACK (notebook_page_added_cb), session); g_signal_connect (notebook, "page-removed", G_CALLBACK (notebook_page_removed_cb), session); g_signal_connect (notebook, "page-reordered", G_CALLBACK (notebook_page_reordered_cb), session); /* Set unique identifier as role, so that on restore, the WM can * place the window on the right workspace */ if (gtk_window_get_role (GTK_WINDOW (window)) == NULL) { /* I guess rand() is unique enough, otherwise we could use * time + pid or something */ char *role; role = g_strdup_printf ("epiphany-window-%x", rand()); gtk_window_set_role (GTK_WINDOW (window), role); g_free (role); } }
void bluefish_exit_request() { GList *tmplist; gboolean tmpb; DEBUG_MSG("winefish_exit_request, started\n"); /* if we have modified documents we have to do something, file_close_all_cb() does exactly want we want to do */ tmplist = return_allwindows_documentlist(); tmpb = (tmplist && test_docs_modified(tmplist)); g_list_free(tmplist); tmplist = g_list_first(main_v->bfwinlist); while (tmplist) { /* if there is a project, we anyway want to save & close the project */ if (BFWIN(tmplist->data)->project) { if (!project_save_and_close(BFWIN(tmplist->data))) { /* cancelled or error! */ DEBUG_MSG("winefish_exit_request, project_save_and_close returned FALSE\n"); return; } } if (tmpb) { file_close_all_cb(NULL, BFWIN(tmplist->data)); } tmplist = g_list_next(tmplist); } /* if we still have modified documents we don't do a thing, if we don't have them we can quit */ if (tmpb) { tmplist = return_allwindows_documentlist(); tmpb = (tmplist && test_docs_modified(tmplist)); g_list_free(tmplist); if (tmpb) { return; } } /* gtk_widget_hide(main_v->main_window);*/ tmplist = g_list_first(gtk_window_list_toplevels()); gchar *role=NULL; while (tmplist) { /* BUG#38 */ if (GTK_IS_WIDGET(tmplist->data)) { role = g_strdup(gtk_window_get_role ((GtkWindow*)tmplist->data)); gtk_widget_hide(GTK_WIDGET(tmplist->data)); if (role && strncmp(role,"html_dialog",11) ==0) { window_destroy(GTK_WIDGET(tmplist->data)); } } /* g_print("type = %s, role=%s\n", GTK_OBJECT_TYPE_NAME((GtkObject*) tmplist->data), role); */ tmplist = g_list_next(tmplist); } g_free(role); flush_queue(); rcfile_save_all(); { gchar *filename = g_strconcat(g_get_home_dir(), "/.winefish/dir_history", NULL); put_stringlist_limited(filename, main_v->recent_directories, main_v->props.max_dir_history); g_free(filename); } gtk_main_quit(); }
static gboolean save_session_to_fp(FILE *fp, const char *session_id) { GList *wlink; SLOG("Saving session with id %s", sd->client_id); if (fprintf(fp, "<roxterm_session id='%s'>\n", session_id) < 0) return FALSE; for (wlink = multi_win_all; wlink; wlink = g_list_next(wlink)) { MultiWin *win = wlink->data; GtkWindow *gwin = GTK_WINDOW(multi_win_get_widget(win)); int w, h; int x, y; int result; char *disp = gdk_screen_make_display_name(gtk_window_get_screen(gwin)); const char *tt = multi_win_get_title_template(win); const char *title = multi_win_get_title(win); gpointer user_data = multi_win_get_user_data_for_current_tab(win); VteTerminal *vte; char *font_name; gboolean disable_menu_shortcuts, disable_tab_shortcuts; char *s; SLOG("Saving window with title '%s'", title); if (!user_data) { g_warning(_("Window with no user data")); continue; } vte = roxterm_get_vte_terminal(user_data); font_name = pango_font_description_to_string( vte_terminal_get_font(vte)); multi_win_get_disable_menu_shortcuts(user_data, &disable_menu_shortcuts, &disable_tab_shortcuts); roxterm_get_nonfs_dimensions(user_data, &w, &h); gtk_window_get_position(gwin, &x, &y); s = g_markup_printf_escaped(" <window disp='%s'\n" " geometry='%dx%d+%d+%d'\n" " title_template='%s' font='%s'\n" " title_template_locked='%d'\n" " title='%s' role='%s'\n" " shortcut_scheme='%s' show_menubar='%d'\n" " always_show_tabs='%d' tab_pos='%d'\n" " show_add_tab_btn='%d'\n" " disable_menu_shortcuts='%d' disable_tab_shortcuts='%d'\n" " maximised='%d' fullscreen='%d' zoom='%f'>\n", disp, w, h, x, y, tt ? tt : "", font_name, multi_win_get_title_template_locked(win), title, gtk_window_get_role(gwin), multi_win_get_shortcuts_scheme_name(win), multi_win_get_show_menu_bar(win), multi_win_get_always_show_tabs(win), multi_win_get_tab_pos(win), multi_win_get_show_add_tab_button(win), disable_menu_shortcuts, disable_tab_shortcuts, multi_win_is_maximised(win), multi_win_is_fullscreen(win), roxterm_get_zoom_factor(user_data)); result = fputs(s, fp); g_free(s); g_free(disp); g_free(font_name); SLOG("Saved the window"); if (result < 0) { SLOG("But it failed!"); return FALSE; } multi_win_foreach_tab(win, save_tab_to_fp, fp); if (fprintf(fp, " </window>\n") < 0) return FALSE; } return fprintf(fp, "</roxterm_session>\n") > 0; }