diff -Naur Terminal-0.2.5.8rc2/terminal/main.c Terminal-0.2.6/terminal/main.c --- Terminal-0.2.5.8rc2/terminal/main.c 2006-11-04 08:29:35.000000000 -0500 +++ Terminal-0.2.6/terminal/main.c 2007-01-20 09:30:51.000000000 -0500 @@ -1,6 +1,6 @@ -/* $Id: main.c 23532 2006-10-27 16:22:08Z benny $ */ +/* $Id: main.c 24238 2007-01-02 11:42:49Z benny $ */ /*- - * Copyright (c) 2004-2005 os-cillation e.K. + * Copyright (c) 2004-2007 os-cillation e.K. * * Written by Benedikt Meurer . * @@ -160,12 +160,13 @@ if (G_UNLIKELY (options->show_version)) { g_print (_("%s (Xfce %s)\n\n" - "Copyright (c) 2003-2006\n" + "Copyright (c) %s\n" " os-cillation e.K. All rights reserved.\n\n" "Written by Benedikt Meurer .\n\n" "Built with Gtk+-%d.%d.%d, running with Gtk+-%d.%d.%d.\n\n" "Please report bugs to <%s>.\n"), PACKAGE_STRING, xfce_version_string (), + "2003-2007", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, gtk_major_version, gtk_minor_version, gtk_micro_version, PACKAGE_BUGREPORT); diff -Naur Terminal-0.2.5.8rc2/terminal/Makefile Terminal-0.2.6/terminal/Makefile --- Terminal-0.2.5.8rc2/terminal/Makefile 2008-06-15 17:40:15.000000000 -0400 +++ Terminal-0.2.6/terminal/Makefile 2008-06-15 18:00:09.000000000 -0400 @@ -14,7 +14,7 @@ -# $Id: Makefile.am 23537 2006-10-28 09:34:53Z benny $ +# $Id: Makefile.am 24630 2007-01-20 14:29:37Z benny $ SOURCES = $(Terminal_SOURCES) @@ -119,16 +119,16 @@ ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /home/dennis/Terminal-0.2.5.8rc2/missing --run aclocal-1.9 +ACLOCAL = ${SHELL} /home/dennis/Terminal-0.2.6/missing --run aclocal-1.9 AMDEP_FALSE = # AMDEP_TRUE = -AMTAR = ${SHELL} /home/dennis/Terminal-0.2.5.8rc2/missing --run tar +AMTAR = ${SHELL} /home/dennis/Terminal-0.2.6/missing --run tar AR = ar -AUTOCONF = ${SHELL} /home/dennis/Terminal-0.2.5.8rc2/missing --run autoconf -AUTOHEADER = ${SHELL} /home/dennis/Terminal-0.2.5.8rc2/missing --run autoheader -AUTOMAKE = ${SHELL} /home/dennis/Terminal-0.2.5.8rc2/missing --run automake-1.9 +AUTOCONF = ${SHELL} /home/dennis/Terminal-0.2.6/missing --run autoconf +AUTOHEADER = ${SHELL} /home/dennis/Terminal-0.2.6/missing --run autoheader +AUTOMAKE = ${SHELL} /home/dennis/Terminal-0.2.6/missing --run automake-1.9 AWK = mawk -CATALOGS = ca.gmo cs.gmo de.gmo dz.gmo el.gmo en_GB.gmo eo.gmo es.gmo eu.gmo fi.gmo fr.gmo gl.gmo he.gmo hu.gmo it.gmo ja.gmo ko.gmo lt.gmo nl.gmo pl.gmo pt_BR.gmo ru.gmo sk.gmo sv.gmo uk.gmo vi.gmo zh_CN.gmo zh_TW.gmo +CATALOGS = be.gmo ca.gmo cs.gmo de.gmo dz.gmo el.gmo en_GB.gmo eo.gmo es.gmo eu.gmo fi.gmo fr.gmo gl.gmo he.gmo hu.gmo it.gmo ja.gmo ko.gmo lt.gmo nl.gmo pa.gmo pl.gmo pt_BR.gmo ru.gmo sk.gmo sv.gmo uk.gmo vi.gmo zh_CN.gmo zh_TW.gmo CATOBJEXT = .gmo CC = gcc CCDEPMODE = depmode=gcc3 @@ -159,12 +159,12 @@ EXEEXT = EXO_CFLAGS = -I/usr/include/exo-0.3 -I/usr/include/gtk-2.0 -I/usr/include/xfce4 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 EXO_LIBS = -lexo-0.3 -lgtk-x11-2.0 -lxfce4util -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -EXO_REQUIRED_VERSION = 0.3.1.12 +EXO_REQUIRED_VERSION = 0.3.2 EXO_VERSION = 0.3.4 F77 = FFLAGS = GETTEXT_PACKAGE = Terminal -GMOFILES = ca.gmo cs.gmo de.gmo dz.gmo el.gmo en_GB.gmo eo.gmo es.gmo eu.gmo fi.gmo fr.gmo gl.gmo he.gmo hu.gmo it.gmo ja.gmo ko.gmo lt.gmo nl.gmo pl.gmo pt_BR.gmo ru.gmo sk.gmo sv.gmo uk.gmo vi.gmo zh_CN.gmo zh_TW.gmo +GMOFILES = be.gmo ca.gmo cs.gmo de.gmo dz.gmo el.gmo en_GB.gmo eo.gmo es.gmo eu.gmo fi.gmo fr.gmo gl.gmo he.gmo hu.gmo it.gmo ja.gmo ko.gmo lt.gmo nl.gmo pa.gmo pl.gmo pt_BR.gmo ru.gmo sk.gmo sv.gmo uk.gmo vi.gmo zh_CN.gmo zh_TW.gmo GMSGFMT = /usr/bin/msgfmt GTK_CFLAGS = -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 @@ -218,24 +218,22 @@ MAINT = # MAINTAINER_MODE_FALSE = MAINTAINER_MODE_TRUE = # -MAKEINFO = ${SHELL} /home/dennis/Terminal-0.2.5.8rc2/missing --run makeinfo +MAKEINFO = ${SHELL} /home/dennis/Terminal-0.2.6/missing --run makeinfo MKINSTALLDIRS = ./mkinstalldirs MSGFMT = /usr/bin/msgfmt OBJEXT = o PACKAGE = Terminal PACKAGE_BUGREPORT = http://bugzilla.xfce.org/ PACKAGE_NAME = Terminal -PACKAGE_STRING = Terminal 0.2.5.8rc2 +PACKAGE_STRING = Terminal 0.2.6 PACKAGE_TARNAME = Terminal -PACKAGE_VERSION = 0.2.5.8rc2 +PACKAGE_VERSION = 0.2.6 PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config PLATFORM_CFLAGS = PLATFORM_CPPFLAGS = -DG_DISABLE_CAST_CHECKS PLATFORM_LDFLAGS = -Wl,-O1 -PLATFORM_WIN32_FALSE = -PLATFORM_WIN32_TRUE = # -POFILES = ca.po cs.po de.po dz.po el.po en_GB.po eo.po es.po eu.po fi.po fr.po gl.po he.po hu.po it.po ja.po ko.po lt.po nl.po pl.po pt_BR.po ru.po sk.po sv.po uk.po vi.po zh_CN.po zh_TW.po +POFILES = be.po ca.po cs.po de.po dz.po el.po en_GB.po eo.po es.po eu.po fi.po fr.po gl.po he.po hu.po it.po ja.po ko.po lt.po nl.po pa.po pl.po pt_BR.po ru.po sk.po sv.po uk.po vi.po zh_CN.po zh_TW.po POSUB = po PO_IN_DATADIR_FALSE = PO_IN_DATADIR_TRUE = @@ -245,13 +243,13 @@ STRIP = strip TERMINAL_VERSION_DBUS = 3 USE_NLS = yes -VERSION = 0.2.5.8rc2 +VERSION = 0.2.6 VTE_CFLAGS = -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gtk-2.0 -I/usr/include/pango-1.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/libpng12 -I/usr/include/pixman-1 VTE_LIBS = -lvte -lgtk-x11-2.0 -lpangoxft-1.0 -lpangox-1.0 -lX11 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpangoft2-1.0 -lXft -lfreetype -lz -lfontconfig -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 VTE_REQUIRED_VERSION = 0.11.11 VTE_VERSION = 0.16.13 XGETTEXT = /usr/bin/xgettext -XGETTEXT_ARGS = --keyword=Q_ +XGETTEXT_ARGS = --keyword=Q_ --from-code=UTF-8 XML2PO = XSLTPROC = ac_ct_AR = ar @@ -284,7 +282,7 @@ host_vendor = pc includedir = ${prefix}/include infodir = ${prefix}/info -install_sh = /home/dennis/Terminal-0.2.5.8rc2/install-sh +install_sh = /home/dennis/Terminal-0.2.6/install-sh libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localedir = ${prefix}/share/locale @@ -301,7 +299,6 @@ INCLUDES = \ -DBINDIR=\"$(bindir)\" \ -DDATADIR=\"$(datadir)\" \ - -DEXO_API_SUBJECT_TO_CHANGE \ -DEXO_DISABLE_DEPRECATED \ -DG_LOG_DOMAIN=\"Terminal\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ @@ -926,7 +923,6 @@ @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -#install-data-local: clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ @@ -995,7 +991,7 @@ # install symlink to 'terminal' install-data-local: $(mkinstalldirs) $(DESTDIR)$(bindir) - ( cd $(DESTDIR)$(bindir) ; ln -sf Terminal terminal ) + -( cd $(DESTDIR)$(bindir) ; ln -sf Terminal terminal ) #terminal-enum-types.h: stamp-terminal-enum-types.h # @true diff -Naur Terminal-0.2.5.8rc2/terminal/Makefile.am Terminal-0.2.6/terminal/Makefile.am --- Terminal-0.2.5.8rc2/terminal/Makefile.am 2006-11-04 08:29:35.000000000 -0500 +++ Terminal-0.2.6/terminal/Makefile.am 2007-01-20 09:30:51.000000000 -0500 @@ -1,9 +1,8 @@ -# $Id: Makefile.am 23537 2006-10-28 09:34:53Z benny $ +# $Id: Makefile.am 24630 2007-01-20 14:29:37Z benny $ INCLUDES = \ -DBINDIR=\"$(bindir)\" \ -DDATADIR=\"$(datadir)\" \ - -DEXO_API_SUBJECT_TO_CHANGE \ -DEXO_DISABLE_DEPRECATED \ -DG_LOG_DOMAIN=\"Terminal\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ @@ -85,12 +84,10 @@ $(VTE_LIBS) \ $(TERMINAL_LIBS) -if !PLATFORM_WIN32 # install symlink to 'terminal' install-data-local: $(mkinstalldirs) $(DESTDIR)$(bindir) - ( cd $(DESTDIR)$(bindir) ; ln -sf Terminal terminal ) -endif + -( cd $(DESTDIR)$(bindir) ; ln -sf Terminal terminal ) if HAVE_DBUS Terminal_CFLAGS += \ diff -Naur Terminal-0.2.5.8rc2/terminal/Makefile.in Terminal-0.2.6/terminal/Makefile.in --- Terminal-0.2.5.8rc2/terminal/Makefile.in 2006-11-05 07:45:47.000000000 -0500 +++ Terminal-0.2.6/terminal/Makefile.in 2007-01-20 09:31:41.000000000 -0500 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 23537 2006-10-28 09:34:53Z benny $ +# $Id: Makefile.am 24630 2007-01-20 14:29:37Z benny $ SOURCES = $(Terminal_SOURCES) @@ -233,8 +233,6 @@ PLATFORM_CFLAGS = @PLATFORM_CFLAGS@ PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@ PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@ -PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@ -PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ @@ -301,7 +299,6 @@ INCLUDES = \ -DBINDIR=\"$(bindir)\" \ -DDATADIR=\"$(datadir)\" \ - -DEXO_API_SUBJECT_TO_CHANGE \ -DEXO_DISABLE_DEPRECATED \ -DG_LOG_DOMAIN=\"Terminal\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ @@ -926,7 +923,6 @@ @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -@PLATFORM_WIN32_TRUE@install-data-local: clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ @@ -993,9 +989,9 @@ # install symlink to 'terminal' -@PLATFORM_WIN32_FALSE@install-data-local: -@PLATFORM_WIN32_FALSE@ $(mkinstalldirs) $(DESTDIR)$(bindir) -@PLATFORM_WIN32_FALSE@ ( cd $(DESTDIR)$(bindir) ; ln -sf Terminal terminal ) +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(bindir) + -( cd $(DESTDIR)$(bindir) ; ln -sf Terminal terminal ) @MAINTAINER_MODE_TRUE@terminal-enum-types.h: stamp-terminal-enum-types.h @MAINTAINER_MODE_TRUE@ @true diff -Naur Terminal-0.2.5.8rc2/terminal/terminal-app.c Terminal-0.2.6/terminal/terminal-app.c --- Terminal-0.2.5.8rc2/terminal/terminal-app.c 2006-11-04 08:29:35.000000000 -0500 +++ Terminal-0.2.6/terminal/terminal-app.c 2007-01-20 09:30:51.000000000 -0500 @@ -1,4 +1,4 @@ -/* $Id: terminal-app.c 21730 2006-05-20 16:23:40Z benny $ */ +/* $Id: terminal-app.c 24157 2006-12-21 20:53:43Z benny $ */ /*- * Copyright (c) 2004-2006 os-cillation e.K. * @@ -346,6 +346,9 @@ terminal_app_find_screen (const gchar *display_name) { const gchar *other_name; +#if GTK_CHECK_VERSION(2,10,0) + GdkColormap *colormap; +#endif GdkDisplay *display = NULL; GdkScreen *screen = NULL; GSList *displays; @@ -406,6 +409,25 @@ g_object_ref (G_OBJECT (screen)); } +#if GTK_CHECK_VERSION(2,10,0) + /* check if we already checked this screen */ + if (g_object_get_data (G_OBJECT (screen), "terminal-checked-screen") == NULL) + { + /* check if we can use ARGB visual for this screen */ + colormap = gdk_screen_get_rgba_colormap (screen); + if (G_LIKELY (colormap != NULL)) + { + /* use ARGB visual for all windows on this screen, required + * for real transparency with a compositing manager. + */ + gdk_screen_set_default_colormap (screen, colormap); + } + + /* mark this screen as handled */ + g_object_set_data (G_OBJECT (screen), "terminal-checked-screen", GINT_TO_POINTER (1)); + } +#endif + return screen; } diff -Naur Terminal-0.2.5.8rc2/terminal/terminal-dialogs.c Terminal-0.2.6/terminal/terminal-dialogs.c --- Terminal-0.2.5.8rc2/terminal/terminal-dialogs.c 2006-11-04 08:29:35.000000000 -0500 +++ Terminal-0.2.6/terminal/terminal-dialogs.c 2007-01-20 09:30:51.000000000 -0500 @@ -1,6 +1,6 @@ -/* $Id: terminal-dialogs.c 21730 2006-05-20 16:23:40Z benny $ */ +/* $Id: terminal-dialogs.c 24238 2007-01-02 11:42:49Z benny $ */ /*- - * Copyright (c) 2005-2006 Benedikt Meurer + * Copyright (c) 2005-2007 Benedikt Meurer * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free @@ -75,7 +75,7 @@ "artists", artists, "comments", _("X Terminal Emulator"), "documenters", documenters, - "copyright", "Copyright \302\251 2003-2006 Benedikt Meurer", + "copyright", "Copyright \302\251 2003-2007 Benedikt Meurer", "license", XFCE_LICENSE_GPL, "logo", logo, "name", PACKAGE_NAME, diff -Naur Terminal-0.2.5.8rc2/terminal/terminal-screen.c Terminal-0.2.6/terminal/terminal-screen.c --- Terminal-0.2.5.8rc2/terminal/terminal-screen.c 2006-11-04 08:29:35.000000000 -0500 +++ Terminal-0.2.6/terminal/terminal-screen.c 2007-01-20 09:30:51.000000000 -0500 @@ -1,4 +1,4 @@ -/* $Id: terminal-screen.c 23253 2006-10-01 13:05:04Z benny $ */ +/* $Id: terminal-screen.c 24157 2006-12-21 20:53:43Z benny $ */ /*- * Copyright (c) 2004-2006 os-cillation e.K. * @@ -70,51 +70,52 @@ -static void terminal_screen_finalize (GObject *object); -static void terminal_screen_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void terminal_screen_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void terminal_screen_realize (GtkWidget *widget); -static gboolean terminal_screen_get_child_command (TerminalScreen *screen, - gchar **command, - gchar ***argv, - GError **error); -static gchar **terminal_screen_get_child_environment (TerminalScreen *screen); -static void terminal_screen_update_background (TerminalScreen *screen); -static void terminal_screen_update_binding_backspace (TerminalScreen *screen); -static void terminal_screen_update_binding_delete (TerminalScreen *screen); -static void terminal_screen_update_colors (TerminalScreen *screen); -static void terminal_screen_update_font (TerminalScreen *screen); -static void terminal_screen_update_misc_bell (TerminalScreen *screen); -static void terminal_screen_update_misc_cursor_blinks (TerminalScreen *screen); -static void terminal_screen_update_misc_mouse_autohide (TerminalScreen *screen); -static void terminal_screen_update_scrolling_bar (TerminalScreen *screen); -static void terminal_screen_update_scrolling_lines (TerminalScreen *screen); -static void terminal_screen_update_scrolling_on_output (TerminalScreen *screen); -static void terminal_screen_update_scrolling_on_keystroke (TerminalScreen *screen); -static void terminal_screen_update_title (TerminalScreen *screen); -static void terminal_screen_update_word_chars (TerminalScreen *screen); -static void terminal_screen_vte_child_exited (VteTerminal *terminal, - TerminalScreen *screen); -static void terminal_screen_vte_eof (VteTerminal *terminal, - TerminalScreen *screen); -static GtkWidget *terminal_screen_vte_get_context_menu (TerminalWidget *widget, - TerminalScreen *screen); -static void terminal_screen_vte_open_uri (TerminalWidget *widget, - const gchar *uri, - TerminalHelperCategory category, - TerminalScreen *screen); -static void terminal_screen_vte_selection_changed (VteTerminal *terminal, - TerminalScreen *screen); -static void terminal_screen_vte_window_title_changed (VteTerminal *terminal, - TerminalScreen *screen); -static gboolean terminal_screen_timer_background (gpointer user_data); -static void terminal_screen_timer_background_destroy (gpointer user_data); +static void terminal_screen_finalize (GObject *object); +static void terminal_screen_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void terminal_screen_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void terminal_screen_realize (GtkWidget *widget); +static void terminal_screen_unrealize (GtkWidget *widget); +static gboolean terminal_screen_get_child_command (TerminalScreen *screen, + gchar **command, + gchar ***argv, + GError **error); +static gchar **terminal_screen_get_child_environment (TerminalScreen *screen); +static void terminal_screen_update_background (TerminalScreen *screen); +static void terminal_screen_update_binding_backspace (TerminalScreen *screen); +static void terminal_screen_update_binding_delete (TerminalScreen *screen); +static void terminal_screen_update_colors (TerminalScreen *screen); +static void terminal_screen_update_font (TerminalScreen *screen); +static void terminal_screen_update_misc_bell (TerminalScreen *screen); +static void terminal_screen_update_misc_cursor_blinks (TerminalScreen *screen); +static void terminal_screen_update_misc_mouse_autohide (TerminalScreen *screen); +static void terminal_screen_update_scrolling_bar (TerminalScreen *screen); +static void terminal_screen_update_scrolling_lines (TerminalScreen *screen); +static void terminal_screen_update_scrolling_on_output (TerminalScreen *screen); +static void terminal_screen_update_scrolling_on_keystroke (TerminalScreen *screen); +static void terminal_screen_update_title (TerminalScreen *screen); +static void terminal_screen_update_word_chars (TerminalScreen *screen); +static void terminal_screen_vte_child_exited (VteTerminal *terminal, + TerminalScreen *screen); +static void terminal_screen_vte_eof (VteTerminal *terminal, + TerminalScreen *screen); +static GtkWidget *terminal_screen_vte_get_context_menu (TerminalWidget *widget, + TerminalScreen *screen); +static void terminal_screen_vte_open_uri (TerminalWidget *widget, + const gchar *uri, + TerminalHelperCategory category, + TerminalScreen *screen); +static void terminal_screen_vte_selection_changed (VteTerminal *terminal, + TerminalScreen *screen); +static void terminal_screen_vte_window_title_changed (VteTerminal *terminal, + TerminalScreen *screen); +static gboolean terminal_screen_timer_background (gpointer user_data); +static void terminal_screen_timer_background_destroy (gpointer user_data); @@ -172,6 +173,7 @@ gtkwidget_class = GTK_WIDGET_CLASS (klass); gtkwidget_class->realize = terminal_screen_realize; + gtkwidget_class->unrealize = terminal_screen_unrealize; /** * TerminalScreen:custom-title: @@ -395,11 +397,37 @@ static void terminal_screen_realize (GtkWidget *widget) { +#if GTK_CHECK_VERSION(2,10,0) && defined(HAVE_VTE_TERMINAL_SET_OPACITY) + GdkScreen *screen; +#endif + (*GTK_WIDGET_CLASS (terminal_screen_parent_class)->realize) (widget); /* make sure the TerminalWidget is realized as well */ if (!GTK_WIDGET_REALIZED (TERMINAL_SCREEN (widget)->terminal)) gtk_widget_realize (TERMINAL_SCREEN (widget)->terminal); + +#if GTK_CHECK_VERSION(2,10,0) && defined(HAVE_VTE_TERMINAL_SET_OPACITY) + /* connect to the "composited-changed" signal */ + screen = gtk_widget_get_screen (widget); + g_signal_connect_swapped (G_OBJECT (screen), "composited-changed", G_CALLBACK (terminal_screen_update_background), widget); +#endif +} + + + +static void +terminal_screen_unrealize (GtkWidget *widget) +{ +#if GTK_CHECK_VERSION(2,10,0) && defined(HAVE_VTE_TERMINAL_SET_OPACITY) + GdkScreen *screen; + + /* disconnect the "composited-changed" handler */ + screen = gtk_widget_get_screen (widget); + g_signal_handlers_disconnect_by_func (G_OBJECT (screen), terminal_screen_update_background, widget); +#endif + + (*GTK_WIDGET_CLASS (terminal_screen_parent_class)->unrealize) (widget); } @@ -868,6 +896,9 @@ vte_terminal_set_background_image (VTE_TERMINAL (screen->terminal), NULL); vte_terminal_set_background_saturation (VTE_TERMINAL (screen->terminal), 1.0); vte_terminal_set_background_transparent (VTE_TERMINAL (screen->terminal), FALSE); +#if GTK_CHECK_VERSION(2,10,0) && defined(HAVE_VTE_TERMINAL_SET_OPACITY) + vte_terminal_set_opacity (VTE_TERMINAL (screen->terminal), 0xFFFF); +#endif } else if (background_mode == TERMINAL_BACKGROUND_IMAGE) { @@ -879,6 +910,9 @@ screen->terminal->allocation.width, screen->terminal->allocation.height); vte_terminal_set_background_image (VTE_TERMINAL (screen->terminal), image); +#if GTK_CHECK_VERSION(2,10,0) && defined(HAVE_VTE_TERMINAL_SET_OPACITY) + vte_terminal_set_opacity (VTE_TERMINAL (screen->terminal), 0xFFFF); +#endif if (image != NULL) g_object_unref (G_OBJECT (image)); g_object_unref (G_OBJECT (loader)); @@ -887,8 +921,24 @@ { g_object_get (G_OBJECT (screen->preferences), "background-darkness", &background_darkness, NULL); vte_terminal_set_background_image (VTE_TERMINAL (screen->terminal), NULL); - vte_terminal_set_background_saturation (VTE_TERMINAL (screen->terminal), 1.0 - background_darkness); - vte_terminal_set_background_transparent (VTE_TERMINAL (screen->terminal), TRUE); + +#if GTK_CHECK_VERSION(2,10,0) && defined(HAVE_VTE_TERMINAL_SET_OPACITY) + /* check if the X screen is composited */ + if (gdk_screen_is_composited (gtk_widget_get_screen (user_data))) + { + vte_terminal_set_background_saturation (VTE_TERMINAL (screen->terminal), 1.0); + vte_terminal_set_background_transparent (VTE_TERMINAL (screen->terminal), FALSE); + vte_terminal_set_opacity (VTE_TERMINAL (screen->terminal), (guint16) (0xFFFFu * background_darkness)); + } + else + { +#endif + vte_terminal_set_background_saturation (VTE_TERMINAL (screen->terminal), 1.0 - background_darkness); + vte_terminal_set_background_transparent (VTE_TERMINAL (screen->terminal), TRUE); +#if GTK_CHECK_VERSION(2,10,0) && defined(HAVE_VTE_TERMINAL_SET_OPACITY) + vte_terminal_set_opacity (VTE_TERMINAL (screen->terminal), 0xFFFF); + } +#endif } return FALSE; diff -Naur Terminal-0.2.5.8rc2/terminal/terminal-window.c Terminal-0.2.6/terminal/terminal-window.c --- Terminal-0.2.5.8rc2/terminal/terminal-window.c 2006-11-04 08:29:35.000000000 -0500 +++ Terminal-0.2.6/terminal/terminal-window.c 2007-01-20 09:30:51.000000000 -0500 @@ -1,6 +1,6 @@ -/* $Id: terminal-window.c 23253 2006-10-01 13:05:04Z benny $ */ +/* $Id: terminal-window.c 24238 2007-01-02 11:42:49Z benny $ */ /*- - * Copyright (c) 2004-2006 os-cillation e.K. + * Copyright (c) 2004-2007 os-cillation e.K. * * Written by Benedikt Meurer . * @@ -103,6 +103,12 @@ GtkNotebookPage *page, guint page_num, TerminalWindow *window); +#if GTK_CHECK_VERSION (2,10,0) +static void terminal_window_page_reordered (GtkNotebook *notebook, + GtkNotebookPage *page, + guint page_num, + TerminalWindow *window); +#endif static GtkWidget *terminal_window_get_context_menu (TerminalScreen *screen, TerminalWindow *window); static void terminal_window_open_uri (TerminalWindow *window, @@ -400,6 +406,12 @@ G_CALLBACK (terminal_window_page_notified), window); g_signal_connect (G_OBJECT (window->notebook), "remove", G_CALLBACK (terminal_window_screen_removed), window); + +#if GTK_CHECK_VERSION (2,10,0) + g_signal_connect (G_OBJECT (window->notebook), "page-reordered", + G_CALLBACK (terminal_window_page_reordered), window); +#endif + gtk_box_pack_start (GTK_BOX (vbox), window->notebook, TRUE, TRUE, 0); gtk_widget_show (window->notebook); @@ -898,6 +910,23 @@ +#if GTK_CHECK_VERSION (2,10,0) +static void +terminal_window_page_reordered (GtkNotebook *notebook, + GtkNotebookPage *page, + guint page_num, + TerminalWindow *window) +{ + + /* Regenerate the "Go" menu. + * This also updates the accelerators. + */ + terminal_window_rebuild_gomenu (window); +} +#endif + + + static GtkWidget* terminal_window_get_context_menu (TerminalScreen *screen, TerminalWindow *window) @@ -1001,13 +1030,19 @@ { GtkWidget *screen; - screen = g_object_get_data (G_OBJECT (header), "terminal-window-screen"); - if (G_LIKELY (screen != NULL)) + /* verify that we have atleast two tabs, otherwise we'll crash, + * see http://bugzilla.xfce.org/show_bug.cgi?id=2686. + */ + if (gtk_notebook_get_n_pages (GTK_NOTEBOOK (window->notebook)) >= 2) { - g_object_ref (G_OBJECT (screen)); - gtk_container_remove (GTK_CONTAINER (window->notebook), screen); - g_signal_emit (G_OBJECT (window), window_signals[NEW_WINDOW_WITH_SCREEN], 0, screen); - g_object_unref (G_OBJECT (screen)); + screen = g_object_get_data (G_OBJECT (header), "terminal-window-screen"); + if (G_LIKELY (screen != NULL)) + { + g_object_ref (G_OBJECT (screen)); + gtk_container_remove (GTK_CONTAINER (window->notebook), screen); + g_signal_emit (G_OBJECT (window), window_signals[NEW_WINDOW_WITH_SCREEN], 0, screen); + g_object_unref (G_OBJECT (screen)); + } } } @@ -1611,6 +1646,12 @@ GTK_WIDGET (screen), TRUE, TRUE, GTK_PACK_START); +#if GTK_CHECK_VERSION(2,10,0) + gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (window->notebook), + GTK_WIDGET (screen), + TRUE); +#endif + /* check if we should always display tabs */ g_object_get (G_OBJECT (window->preferences), "misc-always-show-tabs", &always_show_tabs, NULL);