void apply_font_to_every_vte(GtkWidget *window, gchar *new_font_name, glong column, glong row) { #ifdef DETAIL g_debug("! Launch apply_font_to_every_vte() with window = %p, new_font_name = %s," " column = %ld, row = %ld", window, new_font_name, column, row); #endif #ifdef SAFEMODE if ((window==NULL) || (new_font_name==NULL) || (column<1) || (row<1)) return; #endif struct Window *win_data = (struct Window *)g_object_get_data(G_OBJECT(window), "Win_Data"); // g_debug("Get win_data = %d when apply font to every vte!", win_data); #ifdef SAFEMODE if (win_data==NULL) return; #endif struct Page *page_data = NULL; gint i; // g_debug("Trying to apply every vte to %dx%d!", column, row); // g_debug("Trying to apply font %s to every vte!", new_font_name); for (i=0; i<gtk_notebook_get_n_pages(GTK_NOTEBOOK(win_data->notebook)); i++) { page_data = get_page_data_from_nth_page(win_data, i); #ifdef SAFEMODE if (page_data==NULL) continue; #endif #ifdef USE_GTK3_GEOMETRY_METHOD save_current_vte_geometry(win_data, page_data->vte); #endif // g_debug("The default font for %d page is: %s (%s)", i, page_data->font_name, new_font_name); vte_terminal_set_font_from_string_full(VTE_TERMINAL(page_data->vte), new_font_name, win_data->font_anti_alias); vte_terminal_set_size(VTE_TERMINAL(page_data->vte), column, row); #ifdef USE_GTK3_GEOMETRY_METHOD page_data->column = column; page_data->row = row; # ifdef GEOMETRY g_debug("@ apply_font_to_every_vte (for %p): Trying set the geometry to %ld x %ld", window, column, row); # endif #endif g_free(page_data->font_name); page_data->font_name = g_strdup(new_font_name); // g_debug("The new font for %d page is: %s (%s)", i, page_data->font_name, new_font_name); } // g_debug("Set hints to FALSE!"); win_data->update_hints = 1; // win_data->keep_vte_size |= 0x30; // g_debug("window_resizable in apply_font_to_every_vte!"); // window_resizable(window, page_data->vte, 2, 1); // g_debug("apply_font_to_every_vte(): launch keep_window_size()!"); #ifdef USE_GTK2_GEOMETRY_METHOD # ifdef GEOMETRY g_debug("@ apply_font_to_every_vte(): Call keep_gtk2_window_size() with win_data->unfullscreen = %d", win_data->unfullscreen); # endif // Don't need to call keep_gtk2_window_size() when fullscreen switch (win_data->unfullscreen) { case FULLSCREEN_NORMAL: case FULLSCREEN_UNFS_OK: # ifdef GEOMETRY g_debug("@ apply_font_to_every_vte(): Call keep_gtk2_window_size() with keep_vte_size = %x", win_data->keep_vte_size); # endif keep_gtk2_window_size (win_data, page_data->vte, 0x380); break; default: break; } #endif #ifdef USE_GTK3_GEOMETRY_METHOD win_data->keep_vte_size += 2; # ifdef GEOMETRY g_debug("@ apply_font_to_every_vte(for %p): Set win_data->keep_vte_size to %d", win_data->window, win_data->keep_vte_size); # endif #endif }
gboolean update_page_name(GtkWidget *window, GtkWidget *vte, gchar *page_name, GtkWidget *label, gint page_no, gchar *custom_page_name, const gchar *tab_color, gboolean is_root, gboolean is_bold, gboolean show_encoding, gchar *encoding_str, gboolean custom_window_title, gboolean lost_focus) { #ifdef DETAIL g_debug("! Launch update_page_name() with vte = %p, label_name = %s, page_no = %d, " "custom_page_name = %s, tab_color = %s, is_root = %d, is_bold = %d, " "show_encoding = %d, encoding_str = %s", vte, page_name, page_no, custom_page_name, tab_color, is_root, is_bold, show_encoding, encoding_str); #endif #ifdef DEFENSIVE if (vte==NULL) return FALSE; #endif // page_name = NULL when initing a new page. if (page_name == NULL) { struct Page *page_data = (struct Page *)g_object_get_data(G_OBJECT(vte), "Page_Data"); #ifdef DEFENSIVE if (page_data==NULL) return FALSE; #endif // g_debug("page_name = NULL!! trying to call get_and_update_page_name()"); get_and_update_page_name(page_data, FALSE); } gboolean page_name_updated = FALSE; struct Window *win_data = (struct Window *)g_object_get_data(G_OBJECT(window), "Win_Data"); #ifdef DEFENSIVE if (win_data==NULL) return FALSE; #endif // We don't update label name when the size of window is changing. // 0xfe = 11,111,110 // g_debug("win_data->keep_vte_size = %x", win_data->keep_vte_size); #ifdef USE_GTK2_GEOMETRY_METHOD if (!(win_data->keep_vte_size&0xfffc)) { #endif // g_debug("Updating %d page name to %s...", page_no, page_name); gchar *label_name = NULL; if (custom_page_name==NULL) label_name = page_name; else label_name = custom_page_name; #ifdef ENABLE_SET_TOOLTIP_TEXT if (! lost_focus) gtk_widget_set_tooltip_text(label, label_name); #endif // g_debug("[1] Updating %d page name to %s...", page_no, label_name); // FIXME: label_name = NULL when initing page. if (label_name==NULL) return FALSE; if (win_data->page_shows_number) label_name = g_strdup_printf("(%d) %s", page_no, label_name); else label_name = g_strdup(label_name); // g_debug("[2] Updating %d page name to %s...", page_no, label_name); // label_name will be freed later. if (win_data->page_shows_encoding && show_encoding && encoding_str) { gchar *temp_str = g_strdup_printf("%s (%s)", label_name, encoding_str); g_free(label_name); label_name = temp_str; // g_debug("[3] Updating %d page name to %s...", page_no, label_name); } // if the window is lost focus, don't update the tab name // g_debug("lost_focus = %d", lost_focus); if (! lost_focus) { // win_data->keep_vte_size |= 1; // g_debug("window_resizable in update_page_name! and keep_vte_size =%d", keep_vte_size); // window_resizable(window, vte, 2, 1); // DANGEROUS: remark the following keep_window_size() // will break the geometry of window when drag and drop. // g_debug("update_page_name(): launch keep_window_size()!"); #ifdef USE_GTK2_GEOMETRY_METHOD # ifdef GEOMETRY g_debug("@ update_page_name(): Call keep_gtk2_window_size() with keep_vte_size = %x", win_data->keep_vte_size); # endif keep_gtk2_window_size (win_data, vte, 0x3); #endif #ifdef USE_GTK3_GEOMETRY_METHOD win_data->keep_vte_size++; #endif if (win_data->use_color_page && (tab_color != NULL)) { // g_debug("[Debug] Updating %d page name to %s...", page_no, label_name); gchar *color_label_name; if (is_bold) color_label_name = convert_text_to_html (&label_name, FALSE, (gchar *)tab_color, "b", NULL); else color_label_name = convert_text_to_html (&label_name, FALSE, (gchar *)tab_color, NULL); gtk_label_set_markup (GTK_LABEL(label), color_label_name); // g_debug("[FINAL] Updating %d page name to %s...", page_no, color_label_name); g_free(color_label_name); } else gtk_label_set_text(GTK_LABEL(label), label_name); // g_debug("Updated the tab name to %s!", page_name); page_name_updated = TRUE; } // else // g_debug("!!! the window is lost focus, don't update the tab name"); // free the data g_free(label_name); #ifdef USE_GTK2_GEOMETRY_METHOD } #endif // we should update window title if page name changed. check_and_update_window_title(win_data, custom_window_title, page_no, custom_page_name, page_name); // g_debug("(update_page_name): page_name_updated = %d", page_name_updated); return page_name_updated; }
void apply_font_to_every_vte(GtkWidget *window, gchar *new_font_name, glong column, glong row) { #ifdef DETAIL g_debug("! Launch apply_font_to_every_vte() with window = %p, new_font_name = %s," " column = %ld, row = %ld", window, new_font_name, column, row); #endif #ifdef SAFEMODE if ((window==NULL) || (new_font_name==NULL) || (column<1) || (row<1)) return; #endif struct Window *win_data = (struct Window *)g_object_get_data(G_OBJECT(window), "Win_Data"); // g_debug("Get win_data = %d when apply font to every vte!", win_data); #ifdef SAFEMODE if (win_data==NULL) return; #endif struct Page *page_data = NULL; gint i; // g_debug("Trying to apply every vte to %dx%d!", column, row); // g_debug("Trying to apply font %s to every vte!", new_font_name); for (i=0; i<gtk_notebook_get_n_pages(GTK_NOTEBOOK(win_data->notebook)); i++) { page_data = get_page_data_from_nth_page(win_data, i); #ifdef SAFEMODE if (page_data==NULL) continue; #endif // g_debug("The default font for %d page is: %s (%s)", i, page_data->font_name, new_font_name); fake_vte_terminal_set_font_from_string( page_data->vte, new_font_name, win_data->font_anti_alias); vte_terminal_set_size(VTE_TERMINAL(page_data->vte), column, row); g_free(page_data->font_name); page_data->font_name = g_strdup(new_font_name); // g_debug("The new font for %d page is: %s (%s)", i, page_data->font_name, new_font_name); } // g_debug("* Set hints to HINTS_FONT_BASE!, win_data->window_status = %d", win_data->window_status); win_data->hints_type = HINTS_FONT_BASE; // win_data->keep_vte_size |= 0x30; // g_debug("window_resizable in apply_font_to_every_vte!"); // window_resizable(window, page_data->vte, 2, 1); // g_debug("apply_font_to_every_vte(): launch keep_window_size()!"); #ifdef USE_GTK2_GEOMETRY_METHOD // Don't need to call keep_gtk2_window_size() when fullscreen switch (win_data->window_status) { case FULLSCREEN_NORMAL: case FULLSCREEN_UNFS_OK: # ifdef GEOMETRY g_debug("@ apply_font_to_every_vte(): Call keep_gtk2_window_size() with keep_vte_size = 0x%X", win_data->keep_vte_size); # endif keep_gtk2_window_size (win_data, page_data->vte, GEOMETRY_CHANGING_FONT); break; default: break; } #endif }
void apply_font_to_every_vte(GtkWidget *window, gchar *new_font_name, glong column, glong row) { #ifdef DETAIL g_debug("! Launch apply_font_to_every_vte() with window = %p, new_font_name = %s," " column = %ld, row = %ld", window, new_font_name, column, row); #endif #ifdef SAFEMODE if ((window==NULL) || (new_font_name==NULL) || (column<1) || (row<1)) return; #endif struct Window *win_data = (struct Window *)g_object_get_data(G_OBJECT(window), "Win_Data"); // g_debug("Get win_data = %d when apply font to every vte!", win_data); #ifdef SAFEMODE if (win_data==NULL) return; #endif struct Page *page_data = NULL; gint i; // g_debug("Trying to apply every vte to %dx%d!", column, row); // g_debug("Trying to apply font %s to every vte!", new_font_name); for (i=0; i<gtk_notebook_get_n_pages(GTK_NOTEBOOK(win_data->notebook)); i++) { page_data = get_page_data_from_nth_page(win_data, i); #ifdef SAFEMODE if (page_data==NULL) continue; #endif // g_debug("The default font for %d page is: %s (%s)", i, page_data->font_name, new_font_name); vte_terminal_set_font_from_string_full(VTE_TERMINAL(page_data->vte), new_font_name, win_data->font_anti_alias); vte_terminal_set_size(VTE_TERMINAL(page_data->vte), column, row); g_free(page_data->font_name); page_data->font_name = g_strdup(new_font_name); // g_debug("The new font for %d page is: %s (%s)", i, page_data->font_name, new_font_name); } // g_debug("* Set hints to HINTS_FONT_BASE!, win_data->window_status = %d", win_data->window_status); win_data->hints_type = HINTS_FONT_BASE; // win_data->keep_vte_size |= 0x30; // g_debug("window_resizable in apply_font_to_every_vte!"); // window_resizable(window, page_data->vte, 2, 1); // g_debug("apply_font_to_every_vte(): launch keep_window_size()!"); // Don't need to call keep_gtk2_window_size() when fullscreen switch (win_data->window_status) { #ifdef USE_GTK2_GEOMETRY_METHOD case FULLSCREEN_NORMAL: case FULLSCREEN_UNFS_OK: # ifdef GEOMETRY g_debug("@ apply_font_to_every_vte(): Call keep_gtk2_window_size() with keep_vte_size = %x", win_data->keep_vte_size); # endif keep_gtk2_window_size (win_data, page_data->vte, 0x380); #endif #ifdef USE_GTK3_GEOMETRY_METHOD case WINDOW_NORMAL: case WINDOW_APPLY_PROFILE_NORMAL: # ifdef GEOMETRY fprintf(stderr, "\033[1;%dm!! apply_font_to_every_vte(win_data %p): Calling keep_gtk3_window_size() with hints_type = %d\n", ANSI_COLOR_MAGENTA, win_data, win_data->hints_type); # endif window_resizable(win_data->window, win_data->current_vte, win_data->hints_type); if (win_data->window_status==WINDOW_NORMAL) win_data->resize_type = GEOMETRY_AUTOMATIC; else win_data->resize_type = GEOMETRY_CUSTOM; win_data->geometry_width = column; win_data->geometry_height = row; keep_gtk3_window_size(win_data, TRUE); #endif break; default: break; } }