Skip to content

Instantly share code, notes, and snippets.

@anatol
Created October 1, 2014 07:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anatol/0b566007276271dcc733 to your computer and use it in GitHub Desktop.
Save anatol/0b566007276271dcc733 to your computer and use it in GitHub Desktop.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7a07dbc..99ad5d6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,9 +23,9 @@ IF (NOT GTK_FOUND)
MESSAGE(FATAL_ERROR "You don't seem to have gtk >= 3.0 development libraries installed...")
ENDIF (NOT GTK_FOUND)
-pkg_check_modules (VTE REQUIRED vte-2.90)
+pkg_check_modules (VTE REQUIRED vte-2.91)
IF (NOT VTE_FOUND)
- MESSAGE(FATAL_ERROR "You don't seem to have vte >= 2.90 development libraries installed...")
+ MESSAGE(FATAL_ERROR "You don't seem to have vte >= 2.91 development libraries installed...")
ENDIF (NOT VTE_FOUND)
FIND_PROGRAM(POD2MAN pod2man)
diff --git a/src/sakura.c b/src/sakura.c
index 84b5a5f..0987c17 100644
--- a/src/sakura.c
+++ b/src/sakura.c
@@ -225,7 +225,7 @@ static struct {
glong columns;
glong rows;
gint label_count;
- VteTerminalCursorShape cursor_type;
+ VteCursorShape cursor_type;
bool first_tab;
bool show_scrollbar;
bool show_resize_grip;
@@ -282,7 +282,7 @@ struct terminal {
GtkWidget *label;
gchar *label_text;
bool label_set_byuser;
- GtkBorder *border; /* inner-property data */
+ GtkBorder padding; /* inner-property data */
int colorset;
};
@@ -858,7 +858,7 @@ sakura_delete_event (GtkWidget *widget, void *data)
for (i=0; i < npages; i++) {
term = sakura_get_page_term(sakura, i);
- pgid = tcgetpgrp(vte_terminal_get_pty(VTE_TERMINAL(term->vte)));
+ pgid = tcgetpgrp(vte_pty_get_fd(vte_terminal_get_pty(VTE_TERMINAL(term->vte))));
/* If running processes are found, we ask one time and exit */
if ( (pgid != -1) && (pgid != term->pid)) {
@@ -1010,14 +1010,14 @@ sakura_set_colors ()
/* This is needed for set_opacity to have effect. The opacity does
take effect when switching tabs, so this setting to white is
actually needed only in the shown tab.*/
- vte_terminal_set_color_background_rgba(VTE_TERMINAL (term->vte), &white);
- vte_terminal_set_opacity(VTE_TERMINAL (term->vte), (int)((sakura.backcolors[term->colorset].alpha)*65535));
+ vte_terminal_set_color_background(VTE_TERMINAL (term->vte), &white);
+ //vte_terminal_set_alpha(VTE_TERMINAL (term->vte), sakura.backcolors[term->colorset].alpha);
}
- vte_terminal_set_colors_rgba(VTE_TERMINAL(term->vte),
+ vte_terminal_set_colors(VTE_TERMINAL(term->vte),
&sakura.forecolors[term->colorset],
&sakura.backcolors[term->colorset],
sakura.palette, PALETTE_SIZE);
- vte_terminal_set_color_cursor_rgba(VTE_TERMINAL(term->vte), &sakura.curscolors[term->colorset]);
+ vte_terminal_set_color_cursor(VTE_TERMINAL(term->vte), &sakura.curscolors[term->colorset]);
}
}
@@ -1338,7 +1338,7 @@ sakura_clear (GtkWidget *widget, void *data)
gtk_widget_hide(sakura.item_clear_background);
- vte_terminal_set_background_image(VTE_TERMINAL(term->vte), NULL);
+ //vte_terminal_set_background_image(VTE_TERMINAL(term->vte), NULL);
sakura_set_config_string("background", "none");
@@ -1476,10 +1476,10 @@ sakura_visible_bell (GtkWidget *widget, void *data)
term = sakura_get_page_term(sakura, page);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
- vte_terminal_set_visible_bell (VTE_TERMINAL(term->vte), TRUE);
+ //vte_terminal_set_visible_bell (VTE_TERMINAL(term->vte), TRUE);
sakura_set_config_string("visible_bell", "Yes");
} else {
- vte_terminal_set_visible_bell (VTE_TERMINAL(term->vte), FALSE);
+ //vte_terminal_set_visible_bell (VTE_TERMINAL(term->vte), FALSE);
sakura_set_config_string("visible_bell", "No");
}
}
@@ -1558,11 +1558,11 @@ sakura_set_palette(GtkWidget *widget, void *data)
for (i = (n_pages - 1); i >= 0; i--) {
term = sakura_get_page_term(sakura, i);
- vte_terminal_set_colors_rgba(VTE_TERMINAL(term->vte),
+ vte_terminal_set_colors(VTE_TERMINAL(term->vte),
&sakura.forecolors[term->colorset],
&sakura.backcolors[term->colorset],
sakura.palette, PALETTE_SIZE);
- vte_terminal_set_color_cursor_rgba(VTE_TERMINAL(term->vte), &sakura.curscolors[term->colorset]);
+ vte_terminal_set_color_cursor(VTE_TERMINAL(term->vte), &sakura.curscolors[term->colorset]);
}
sakura_set_config_string("palette", palette);
@@ -1692,7 +1692,7 @@ sakura_close_tab (GtkWidget *widget, void *data)
}
/* Check if there are running processes for this tab. Use tcgetpgrp to compare to the shell PGID */
- pgid = tcgetpgrp(vte_terminal_get_pty(VTE_TERMINAL(term->vte)));
+ pgid = tcgetpgrp(vte_pty_get_fd(vte_terminal_get_pty(VTE_TERMINAL(term->vte))));
if ( (pgid != -1) && (pgid != term->pid) && (!sakura.less_questions) ) {
dialog=gtk_message_dialog_new(GTK_WINDOW(sakura.main_window), GTK_DIALOG_MODAL,
@@ -1748,7 +1748,7 @@ sakura_closebutton_clicked(GtkWidget *widget, void *data)
}
/* Check if there are running processes for this tab. Use tcgetpgrp to compare to the shell PGID */
- pgid = tcgetpgrp(vte_terminal_get_pty(VTE_TERMINAL(term->vte)));
+ pgid = tcgetpgrp(vte_pty_get_fd(vte_terminal_get_pty(VTE_TERMINAL(term->vte))));
if ( (pgid != -1) && (pgid != term->pid) && (!sakura.less_questions) ) {
dialog=gtk_message_dialog_new(GTK_WINDOW(sakura.main_window), GTK_DIALOG_MODAL,
@@ -2478,9 +2478,11 @@ sakura_set_size(void)
sakura.resized=FALSE;
}
- gtk_widget_style_get(term->vte, "inner-border", &term->border, NULL);
- pad_x = term->border->left + term->border->right;
- pad_y = term->border->top + term->border->bottom;
+ gtk_style_context_get_padding(gtk_widget_get_style_context(term->vte),
+ gtk_widget_get_state_flags(term->vte),
+ &term->padding);
+ pad_x = term->padding.left + term->padding.right;
+ pad_y = term->padding.top + term->padding.bottom;
SAY("padding x %d y %d", pad_x, pad_y);
char_width = vte_terminal_get_char_width(VTE_TERMINAL(term->vte));
char_height = vte_terminal_get_char_height(VTE_TERMINAL(term->vte));
@@ -2664,7 +2666,7 @@ sakura_add_tab()
vte_terminal_match_add_gregex(VTE_TERMINAL(term->vte), sakura.http_regexp, 0);
vte_terminal_set_mouse_autohide(VTE_TERMINAL(term->vte), TRUE);
- term->scrollbar=gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, vte_terminal_get_adjustment(VTE_TERMINAL(term->vte)));
+ term->scrollbar=gtk_vscrollbar_new(gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(term->vte)));
gtk_box_pack_start(GTK_BOX(term->hbox), term->vte, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(term->hbox), term->scrollbar, FALSE, FALSE, 0);
@@ -2799,8 +2801,8 @@ sakura_add_tab()
if (command_argc > 0) {
path=g_find_program_in_path(command_argv[0]);
if (path) {
- if (!vte_terminal_fork_command_full(VTE_TERMINAL(term->vte), VTE_PTY_DEFAULT, NULL, command_argv, NULL,
- G_SPAWN_SEARCH_PATH, NULL, NULL, &term->pid, &gerror)) {
+ if (!vte_terminal_spawn_sync(VTE_TERMINAL(term->vte), VTE_PTY_DEFAULT, NULL, command_argv, NULL,
+ G_SPAWN_SEARCH_PATH, NULL, NULL, &term->pid, NULL, &gerror)) {
SAY("error: %s", gerror->message);
}
} else {
@@ -2819,8 +2821,8 @@ sakura_add_tab()
sakura_error("Hold option given without any command");
option_hold=FALSE;
}
- vte_terminal_fork_command_full(VTE_TERMINAL(term->vte), VTE_PTY_DEFAULT, cwd, sakura.argv, NULL,
- G_SPAWN_SEARCH_PATH|G_SPAWN_FILE_AND_ARGV_ZERO, NULL, NULL, &term->pid, NULL);
+ vte_terminal_spawn_sync(VTE_TERMINAL(term->vte), VTE_PTY_DEFAULT, cwd, sakura.argv, NULL,
+ G_SPAWN_SEARCH_PATH|G_SPAWN_FILE_AND_ARGV_ZERO, NULL, NULL, &term->pid, NULL, NULL);
}
/* Not the first tab */
} else {
@@ -2838,23 +2840,23 @@ sakura_add_tab()
* function in the window is not visible *sigh*. Gtk documentation
* says this is for "historical" reasons. Me arse */
gtk_notebook_set_current_page(GTK_NOTEBOOK(sakura.notebook), index);
- vte_terminal_fork_command_full(VTE_TERMINAL(term->vte), VTE_PTY_DEFAULT, cwd, sakura.argv, NULL,
- G_SPAWN_SEARCH_PATH|G_SPAWN_FILE_AND_ARGV_ZERO, NULL, NULL, &term->pid, NULL);
+ vte_terminal_spawn_sync(VTE_TERMINAL(term->vte), VTE_PTY_DEFAULT, cwd, sakura.argv, NULL,
+ G_SPAWN_SEARCH_PATH|G_SPAWN_FILE_AND_ARGV_ZERO, NULL, NULL, &term->pid, NULL, NULL);
}
free(cwd);
/* Configuration for the newly created terminal */
GdkRGBA white={255, 255, 255, 1};
- vte_terminal_set_color_background_rgba(VTE_TERMINAL (term->vte), &white);
+ vte_terminal_set_color_background(VTE_TERMINAL (term->vte), &white);
vte_terminal_set_backspace_binding(VTE_TERMINAL(term->vte), VTE_ERASE_ASCII_DELETE);
- vte_terminal_set_colors_rgba(VTE_TERMINAL(term->vte),
+ vte_terminal_set_colors(VTE_TERMINAL(term->vte),
&sakura.forecolors[term->colorset],
&sakura.backcolors[term->colorset],
sakura.palette, PALETTE_SIZE);
- vte_terminal_set_color_cursor_rgba(VTE_TERMINAL(term->vte), &sakura.curscolors[term->colorset]);
+ vte_terminal_set_color_cursor(VTE_TERMINAL(term->vte), &sakura.curscolors[term->colorset]);
if (sakura.has_rgba) {
- vte_terminal_set_opacity(VTE_TERMINAL (term->vte), (int)((sakura.backcolors[term->colorset].alpha)*65535));
+ //vte_terminal_set_alpha(VTE_TERMINAL (term->vte), sakura.backcolors[term->colorset].alpha);
}
if (sakura.background) {
@@ -2862,12 +2864,12 @@ sakura_add_tab()
}
if (sakura.word_chars) {
- vte_terminal_set_word_chars( VTE_TERMINAL (term->vte), sakura.word_chars );
+ //vte_terminal_set_word_chars( VTE_TERMINAL (term->vte), sakura.word_chars );
}
/* Get rid of these nasty bells */
vte_terminal_set_audible_bell (VTE_TERMINAL(term->vte), sakura.audible_bell ? TRUE : FALSE);
- vte_terminal_set_visible_bell (VTE_TERMINAL(term->vte), sakura.visible_bell ? TRUE : FALSE);
+ //vte_terminal_set_visible_bell (VTE_TERMINAL(term->vte), sakura.visible_bell ? TRUE : FALSE);
/* Disable stupid blinking cursor */
vte_terminal_set_cursor_blink_mode (VTE_TERMINAL(term->vte), sakura.blinking_cursor ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF);
@@ -2949,9 +2951,9 @@ sakura_set_bgimage(char *infile)
if (!pixbuf) {
sakura_error("Error loading image file: %s\n", gerror->message);
} else {
- vte_terminal_set_background_image(VTE_TERMINAL(term->vte), pixbuf);
- vte_terminal_set_background_saturation(VTE_TERMINAL(term->vte), TRUE);
- vte_terminal_set_background_transparent(VTE_TERMINAL(term->vte),FALSE);
+ //vte_terminal_set_background_image(VTE_TERMINAL(term->vte), pixbuf);
+ //vte_terminal_set_background_saturation(VTE_TERMINAL(term->vte), TRUE);
+ //vte_terminal_set_background_transparent(VTE_TERMINAL(term->vte),FALSE);
sakura_set_config_string("background", infile);
}
@swordhui
Copy link

I tried it on Sakura-3.2.0, but failed. then I changed some lines, finally it works, thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment