Compare commits

...

11 Commits

Author SHA1 Message Date
monsta 00f5b62c5f release 1.16.2 2017-02-06 14:44:53 +03:00
monsta 2255ce313a keybindings dialog: fix expand of content on window resize 2017-02-06 13:14:46 +03:00
monsta b9e581d914 encodings dialog: fix expand of content on window resize 2017-02-06 13:14:38 +03:00
monsta a717ceb97c don't mark dialogs as visible in .ui files
this causes runtime warnings about transient parent because these
dialogs get mapped too early, before gtk_window_set_transient_for
is called in the code.

affected dialogs: find, profile manager, profile prefs
2017-02-06 12:10:50 +03:00
raveit65 2c530ab0d3 call gtk_notebook_detach_tab only if the tab is detached
Fixes:
https://bugzilla.redhat.com/show_bug.cgi?id=1398234
2017-01-31 09:20:41 +01:00
raveit65 35583b2b68 force X11
fixes running the terminal under wayland
2017-01-27 09:33:47 +01:00
raveit65 537d09c86a window: Attach popup menus to their parent widgets
When running on Wayland, popup menus must have a parent widget to attach
to. If a parent widget is not explicitly set, the GDK backend tries to
guess what parent widget seems appropriate. In order to have more
reliable popups, change the popups in the terminal window to set their
parent widgets explicitly.

https://bugzilla.gnome.org/show_bug.cgi?id=750755

taken from:
https://git.gnome.org/browse/gnome-terminal/commit/?id=67afb95
2017-01-27 09:33:26 +01:00
ZenWalker 82b97e200a screen: Update for vte API
Fixes partially #149

https://git.gnome.org/browse/gnome-terminal/commit/?id=b9cf035874e06951ff8425760cf978ca412b2032
2017-01-23 14:15:08 +03:00
ZenWalker 39588e6dcb Make dropped tab active
based on gnome-terminal commit:
https://git.gnome.org/browse/gnome-terminal/commit/?id=abb2018a702adfc57831aea9ebb5c513b9c8bbbd

Fixes #152
2017-01-23 14:13:43 +03:00
ZenWalker 6dc0e22c61 Fix window size when a second tab is added by drag-n-drop
based on gnome-terminal commit:
https://git.gnome.org/browse/gnome-terminal/commit/?id=d3e593e4974303618305da4e0d20f0d5c10f83b0
2016-11-06 18:51:13 +01:00
ZenWalker 7601e42e65 notebook: avoid crash on tab DND
based on gnome-terminal commit:
https://git.gnome.org/browse/gnome-terminal/commit/?id=85b448f7c9e219e82d4d8abafe405d73349c08c1

Fixes #145
2016-11-06 18:51:06 +01:00
10 changed files with 67 additions and 13 deletions

12
NEWS
View File

@ -1,3 +1,15 @@
1.16.2
* Bring back exit confirmation when there's a process running
* Fix possible crash on window closing
* Fix various issues with drag-n-drop of tabs
* Encodings and keybindings dialogs: fix expand of content on
window resize
* Find, profile manager, profile prefs dialogs: fix runtime
warnings about transient parent
* Attach popup menus to their parent widgets (useful on Wayland)
* Force X11 backend
1.16.1 1.16.1
* Fix crash after detaching tab and then changing its title * Fix crash after detaching tab and then changing its title

View File

@ -1,6 +1,6 @@
m4_define([gt_version_major],[1]) m4_define([gt_version_major],[1])
m4_define([gt_version_minor],[16]) m4_define([gt_version_minor],[16])
m4_define([gt_version_micro],[1]) m4_define([gt_version_micro],[2])
m4_define([gt_version_extra],[]) m4_define([gt_version_extra],[])
m4_define([gt_version],[gt_version_major().gt_version_minor().gt_version_micro()gt_version_extra]) m4_define([gt_version],[gt_version_major().gt_version_minor().gt_version_micro()gt_version_extra])

View File

@ -69,7 +69,6 @@
<object class="GtkGrid" id="table33"> <object class="GtkGrid" id="table33">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="valign">start</property>
<property name="border_width">5</property> <property name="border_width">5</property>
<property name="row_spacing">6</property> <property name="row_spacing">6</property>
<property name="column_spacing">12</property> <property name="column_spacing">12</property>
@ -78,6 +77,8 @@
<property name="height_request">230</property> <property name="height_request">230</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property> <property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property> <property name="shadow_type">in</property>
<child> <child>
@ -197,6 +198,8 @@
<property name="height_request">230</property> <property name="height_request">230</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property> <property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property> <property name="shadow_type">in</property>
<child> <child>

View File

@ -9,7 +9,6 @@
<!-- interface-copyright MATE developers --> <!-- interface-copyright MATE developers -->
<!-- interface-authors Wolfgang Ulbrich --> <!-- interface-authors Wolfgang Ulbrich -->
<object class="GtkDialog" id="find-dialog"> <object class="GtkDialog" id="find-dialog">
<property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">5</property> <property name="border_width">5</property>
<property name="title" translatable="yes">Find</property> <property name="title" translatable="yes">Find</property>

View File

@ -92,6 +92,7 @@
<object class="GtkScrolledWindow" id="scrolledwindow1"> <object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property> <property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property> <property name="shadow_type">in</property>

View File

@ -9,7 +9,6 @@
<!-- interface-copyright MATE Developer --> <!-- interface-copyright MATE Developer -->
<!-- interface-authors Wolfgang Ulbrich --> <!-- interface-authors Wolfgang Ulbrich -->
<object class="GtkDialog" id="profile-manager"> <object class="GtkDialog" id="profile-manager">
<property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">5</property> <property name="border_width">5</property>
<property name="title" translatable="yes">Profiles</property> <property name="title" translatable="yes">Profiles</property>

View File

@ -225,7 +225,6 @@ Author: Wolfgang Ulbrich
</data> </data>
</object> </object>
<object class="GtkDialog" id="profile-editor-dialog"> <object class="GtkDialog" id="profile-editor-dialog">
<property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">5</property> <property name="border_width">5</property>
<property name="title" translatable="yes">Profile Editor</property> <property name="title" translatable="yes">Profile Editor</property>

View File

@ -65,7 +65,6 @@ struct _TerminalScreenPrivate
char **initial_env; char **initial_env;
char **override_command; char **override_command;
int child_pid; int child_pid;
int pty_fd;
double font_scale; double font_scale;
gboolean user_title; /* title was manually set */ gboolean user_title; /* title was manually set */
GSList *match_tags; GSList *match_tags;
@ -341,7 +340,6 @@ terminal_screen_init (TerminalScreen *screen)
vte_terminal_set_mouse_autohide (VTE_TERMINAL (screen), TRUE); vte_terminal_set_mouse_autohide (VTE_TERMINAL (screen), TRUE);
priv->child_pid = -1; priv->child_pid = -1;
priv->pty_fd = -1;
priv->font_scale = PANGO_SCALE_MEDIUM; priv->font_scale = PANGO_SCALE_MEDIUM;
@ -1480,7 +1478,6 @@ terminal_screen_launch_child_cb (TerminalScreen *screen)
} }
priv->child_pid = pid; priv->child_pid = pid;
priv->pty_fd = vte_terminal_get_pty (terminal);
g_free (shell); g_free (shell);
g_strfreev (argv); g_strfreev (argv);
@ -1714,8 +1711,10 @@ terminal_screen_get_current_dir (TerminalScreen *screen)
{ {
TerminalScreenPrivate *priv = screen->priv; TerminalScreenPrivate *priv = screen->priv;
char *cwd; char *cwd;
VtePty *pty;
if (priv->pty_fd != -1) pty = vte_terminal_get_pty (VTE_TERMINAL (screen));
if (pty != NULL)
{ {
#if 0 #if 0
/* Get the foreground process ID */ /* Get the foreground process ID */
@ -1747,9 +1746,11 @@ terminal_screen_get_current_dir (TerminalScreen *screen)
char* char*
terminal_screen_get_current_dir_with_fallback (TerminalScreen *screen) terminal_screen_get_current_dir_with_fallback (TerminalScreen *screen)
{ {
VtePty *pty;
TerminalScreenPrivate *priv = screen->priv; TerminalScreenPrivate *priv = screen->priv;
if (priv->pty_fd == -1) pty = vte_terminal_get_pty (VTE_TERMINAL (screen));
if (pty == NULL)
return g_strdup (priv->initial_working_directory); return g_strdup (priv->initial_working_directory);
return terminal_screen_get_current_dir (screen); return terminal_screen_get_current_dir (screen);
@ -1817,7 +1818,6 @@ terminal_screen_child_exited (VteTerminal *terminal, int status)
screen); screen);
priv->child_pid = -1; priv->child_pid = -1;
priv->pty_fd = -1;
action = terminal_profile_get_property_enum (priv->profile, TERMINAL_PROFILE_EXIT_ACTION); action = terminal_profile_get_property_enum (priv->profile, TERMINAL_PROFILE_EXIT_ACTION);
@ -2271,12 +2271,19 @@ gboolean
terminal_screen_has_foreground_process (TerminalScreen *screen) terminal_screen_has_foreground_process (TerminalScreen *screen)
{ {
TerminalScreenPrivate *priv = screen->priv; TerminalScreenPrivate *priv = screen->priv;
VtePty *pty;
int fd;
int fgpid; int fgpid;
if (priv->pty_fd == -1) pty = vte_terminal_get_pty (VTE_TERMINAL (screen));
if (pty == NULL)
return FALSE; return FALSE;
fgpid = tcgetpgrp (priv->pty_fd); fd = vte_pty_get_fd (pty);
if (fd == -1)
return FALSE;
fgpid = tcgetpgrp (fd);
if (fgpid == -1 || fgpid == priv->child_pid) if (fgpid == -1 || fgpid == priv->child_pid)
return FALSE; return FALSE;

View File

@ -44,6 +44,8 @@
#include "skey-popup.h" #include "skey-popup.h"
#endif #endif
static gboolean detach_tab = FALSE;
struct _TerminalWindowPrivate struct _TerminalWindowPrivate
{ {
GtkActionGroup *action_group; GtkActionGroup *action_group;
@ -1533,6 +1535,9 @@ popup_clipboard_targets_received_cb (GtkClipboard *clipboard,
if (info->button == 0) if (info->button == 0)
gtk_menu_shell_select_first (GTK_MENU_SHELL (popup_menu), FALSE); gtk_menu_shell_select_first (GTK_MENU_SHELL (popup_menu), FALSE);
if (gtk_menu_get_attach_widget (GTK_MENU (popup_menu)))
gtk_menu_detach (GTK_MENU (popup_menu));
gtk_menu_attach_to_widget (GTK_MENU (popup_menu), GTK_WIDGET (screen), NULL);
gtk_menu_popup (GTK_MENU (popup_menu), gtk_menu_popup (GTK_MENU (popup_menu),
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
@ -2633,8 +2638,20 @@ terminal_window_remove_screen (TerminalWindow *window,
update_tab_visibility (window, -1); update_tab_visibility (window, -1);
screen_container = terminal_screen_container_get_from_screen (screen); screen_container = terminal_screen_container_get_from_screen (screen);
#if GTK_CHECK_VERSION(3, 16, 0)
if (detach_tab)
{
gtk_notebook_detach_tab (GTK_NOTEBOOK (priv->notebook),
GTK_WIDGET (screen_container));
detach_tab = FALSE;
}
else
gtk_container_remove (GTK_CONTAINER (priv->notebook),
GTK_WIDGET (screen_container));
#else
gtk_container_remove (GTK_CONTAINER (priv->notebook), gtk_container_remove (GTK_CONTAINER (priv->notebook),
GTK_WIDGET (screen_container)); GTK_WIDGET (screen_container));
#endif
} }
void void
@ -2661,6 +2678,9 @@ terminal_window_move_screen (TerminalWindow *source_window,
*/ */
g_object_ref_sink (screen_container); g_object_ref_sink (screen_container);
g_object_ref_sink (screen); g_object_ref_sink (screen);
detach_tab = TRUE;
terminal_window_remove_screen (source_window, screen); terminal_window_remove_screen (source_window, screen);
/* Now we can safely remove the screen from the container and let the container die */ /* Now we can safely remove the screen from the container and let the container die */
@ -2668,6 +2688,7 @@ terminal_window_move_screen (TerminalWindow *source_window,
g_object_unref (screen_container); g_object_unref (screen_container);
terminal_window_add_screen (dest_window, screen, dest_position); terminal_window_add_screen (dest_window, screen, dest_position);
gtk_notebook_set_current_page (GTK_NOTEBOOK (dest_window->priv->notebook), dest_position);
g_object_unref (screen); g_object_unref (screen);
} }
@ -2891,6 +2912,7 @@ notebook_button_press_cb (GtkWidget *widget,
{ {
TerminalWindowPrivate *priv = window->priv; TerminalWindowPrivate *priv = window->priv;
GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebook *notebook = GTK_NOTEBOOK (widget);
GtkWidget *tab;
GtkWidget *menu; GtkWidget *menu;
GtkAction *action; GtkAction *action;
int tab_clicked; int tab_clicked;
@ -2911,6 +2933,10 @@ notebook_button_press_cb (GtkWidget *widget,
gtk_action_activate (action); gtk_action_activate (action);
menu = gtk_ui_manager_get_widget (priv->ui_manager, "/NotebookPopup"); menu = gtk_ui_manager_get_widget (priv->ui_manager, "/NotebookPopup");
if (gtk_menu_get_attach_widget (GTK_MENU (menu)))
gtk_menu_detach (GTK_MENU (menu));
tab = gtk_notebook_get_nth_page (notebook, tab_clicked);
gtk_menu_attach_to_widget (GTK_MENU (menu), tab, NULL);
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
NULL, NULL, NULL, NULL,
event->button, event->time); event->button, event->time);
@ -2941,6 +2967,9 @@ notebook_popup_menu_cb (GtkWidget *widget,
gtk_action_activate (action); gtk_action_activate (action);
menu = gtk_ui_manager_get_widget (priv->ui_manager, "/NotebookPopup"); menu = gtk_ui_manager_get_widget (priv->ui_manager, "/NotebookPopup");
if (gtk_menu_get_attach_widget (GTK_MENU (menu)))
gtk_menu_detach (GTK_MENU (menu));
gtk_menu_attach_to_widget (GTK_MENU (menu), tab_label, NULL);
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
position_menu_under_widget, tab_label, position_menu_under_widget, tab_label,
0, gtk_get_current_event_time ()); 0, gtk_get_current_event_time ());
@ -3033,6 +3062,7 @@ notebook_page_added_callback (GtkWidget *notebook,
{ {
TerminalWindowPrivate *priv = window->priv; TerminalWindowPrivate *priv = window->priv;
TerminalScreen *screen; TerminalScreen *screen;
int pages;
screen = terminal_screen_container_get_screen (TERMINAL_SCREEN_CONTAINER (container)); screen = terminal_screen_container_get_screen (TERMINAL_SCREEN_CONTAINER (container));
@ -3091,6 +3121,8 @@ notebook_page_added_callback (GtkWidget *notebook,
gtk_window_present_with_time (GTK_WINDOW (window), gtk_get_current_event_time ()); gtk_window_present_with_time (GTK_WINDOW (window), gtk_get_current_event_time ());
priv->present_on_insert = FALSE; priv->present_on_insert = FALSE;
} }
pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook));
if (pages == 2) terminal_window_update_size (window, priv->active_screen, TRUE);
} }
static void static void

View File

@ -555,6 +555,8 @@ main (int argc, char **argv)
working_directory = g_get_current_dir (); working_directory = g_get_current_dir ();
gdk_set_allowed_backends ("x11");
/* Now change directory to $HOME so we don't prevent unmounting, e.g. if the /* Now change directory to $HOME so we don't prevent unmounting, e.g. if the
* factory is started by caja-open-terminal. See bug #565328. * factory is started by caja-open-terminal. See bug #565328.
* On failure back to /. * On failure back to /.