Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- ./src/terminal-notebook.c.orig
- +++ ./src/terminal-notebook.c
- @@ -45,18 +45,6 @@
- /* helper functions */
- static void
- -update_tab_visibility (GtkNotebook *notebook,
- - int change)
- -{
- - gboolean show_tabs;
- - guint num;
- -
- - num = gtk_notebook_get_n_pages (notebook);
- - show_tabs = (num + change) > 1;
- - gtk_notebook_set_show_tabs (notebook, show_tabs);
- -}
- -
- -static void
- close_button_clicked_cb (TerminalTabLabel *tab_label,
- gpointer user_data)
- {
- @@ -92,8 +80,6 @@
- screen_container = terminal_screen_container_new (screen);
- gtk_widget_show (screen_container);
- - update_tab_visibility (gtk_notebook, +1);
- -
- tab_label = terminal_tab_label_new (screen);
- g_signal_connect (tab_label, "close-button-clicked",
- G_CALLBACK (close_button_clicked_cb), NULL);
- @@ -120,8 +106,6 @@
- g_warn_if_fail (gtk_widget_is_ancestor (GTK_WIDGET (screen), GTK_WIDGET (notebook)));
- - update_tab_visibility (GTK_NOTEBOOK (notebook), -1);
- -
- screen_container = terminal_screen_container_get_from_screen (screen);
- gtk_container_remove (GTK_CONTAINER (notebook),
- GTK_WIDGET (screen_container));
- @@ -283,7 +267,6 @@
- if (page_added)
- page_added (notebook, child, page_num);
- - update_tab_visibility (notebook, 0);
- g_signal_emit_by_name (notebook, "screen-added",
- terminal_screen_container_get_screen (TERMINAL_SCREEN_CONTAINER (child)));
- }
- @@ -299,7 +282,6 @@
- if (page_removed)
- page_removed (notebook, child, page_num);
- - update_tab_visibility (notebook, 0);
- g_signal_emit_by_name (notebook, "screen-removed",
- terminal_screen_container_get_screen (TERMINAL_SCREEN_CONTAINER (child)));
- }
- @@ -420,7 +402,7 @@
- G_OBJECT_CLASS (terminal_notebook_parent_class)->constructed (object);
- - gtk_notebook_set_show_tabs (notebook, FALSE);
- + gtk_notebook_set_show_tabs (notebook, TRUE);
- gtk_notebook_set_scrollable (notebook, TRUE);
- gtk_notebook_set_show_border (notebook, FALSE);
- gtk_notebook_set_group_name (notebook, I_("gnome-terminal-window"));
- --- ./src/terminal-window.c.orig
- +++ ./src/terminal-window.c
- @@ -87,6 +87,12 @@
- /* Workaround until gtk+ bug #535557 is fixed */
- guint icon_title_set : 1;
- +
- + guint drag_possible : 1;
- +
- + gint button_press_x;
- + gint button_press_y;
- + guint32 button_press_time;
- };
- #define PROFILE_DATA_KEY "GT::Profile"
- @@ -2331,6 +2337,104 @@
- terminal_window_update_encoding_menu (window);
- }
- +static inline gboolean
- +in_double_click_range (GtkWidget *widget,
- + GdkEventButton *event)
- +{
- + TerminalWindowPrivate *priv = TERMINAL_WINDOW (widget)->priv;
- + gint double_click_time;
- + gint double_click_distance;
- +
- + g_object_get (gtk_widget_get_settings (widget),
- + "gtk-double-click-time", &double_click_time,
- + "gtk-double-click-distance", &double_click_distance,
- + NULL);
- +
- + if (event->time < priv->button_press_time + double_click_time &&
- + ABS (event->x_root - priv->button_press_x) <= double_click_distance &&
- + ABS (event->y_root - priv->button_press_y) <= double_click_distance)
- + return TRUE;
- +
- + return FALSE;
- +}
- +
- +static void
- +_gtk_window_toggle_maximized (TerminalWindow *window)
- +{
- + if (gtk_window_is_maximized(GTK_WINDOW(window)))
- + gtk_window_unmaximize (GTK_WINDOW(window));
- + else
- + gtk_window_maximize (GTK_WINDOW(window));
- +}
- +
- +static gint
- +action_box_motion_notify_event (GtkWidget *widget,
- + GdkEventMotion *event,
- + gpointer user_data)
- +{
- + TerminalWindow *window = TERMINAL_WINDOW(user_data);
- + TerminalWindowPrivate *priv = TERMINAL_WINDOW (window)->priv;
- +
- + if (!priv->drag_possible)
- + return FALSE;
- +
- + if (!in_double_click_range (GTK_WIDGET(window), (GdkEventButton *)event))
- + {
- + gdk_window_begin_move_drag_for_device (gtk_widget_get_window (GTK_WIDGET(window)),
- + gdk_event_get_device ((GdkEvent *)event),
- + GDK_BUTTON_PRIMARY,
- + event->x_root,
- + event->y_root,
- + event->time);
- + priv->drag_possible = FALSE;
- + return TRUE;
- + }
- +
- + return FALSE;
- +}
- +
- +static gint
- +action_box_button_release_event (GtkWidget *widget,
- + GdkEventButton *event,
- + gpointer user_data)
- +{
- + TerminalWindow *window = TERMINAL_WINDOW(user_data);
- + TerminalWindowPrivate *priv = TERMINAL_WINDOW (window)->priv;
- +
- + priv->drag_possible = FALSE;
- +
- + return FALSE;
- +}
- +
- +
- +static gint
- +action_box_button_press_event (GtkWidget *widget,
- + GdkEventButton *event,
- + gpointer user_data)
- +{
- + TerminalWindow *window = TERMINAL_WINDOW(user_data);
- + TerminalWindowPrivate *priv = TERMINAL_WINDOW (window)->priv;
- + if (event->type != GDK_BUTTON_PRESS)
- + return FALSE;
- + if (event->button == GDK_BUTTON_PRIMARY)
- + {
- + if (in_double_click_range ( GTK_WIDGET(window), event))
- + {
- + _gtk_window_toggle_maximized (window);
- + return TRUE;
- + }
- + else
- + {
- + priv->drag_possible = TRUE;
- + priv->button_press_x = event->x_root;
- + priv->button_press_y = event->y_root;
- + priv->button_press_time = event->time;
- + return TRUE;
- + }
- + }
- + return FALSE;
- +}
- +
- static void
- terminal_window_init (TerminalWindow *window)
- {
- @@ -2616,6 +2720,66 @@
- gtk_box_pack_end (GTK_BOX (main_vbox), GTK_WIDGET (priv->mdi_container), TRUE, TRUE, 0);
- gtk_widget_show (GTK_WIDGET (priv->mdi_container));
- + /* Create headerbar */
- + {
- + GtkWidget *headerbar,*eb, *action_box,*close_button;
- + GtkCssProvider *css_p;
- + GError *err = NULL;
- + gchar css_d[] =
- +".gnome-terminal-header-bar-ex {\n"
- +" border-bottom:none;\n"
- +" padding: 6px 12px 0px 12px;\n"
- +"}\n"
- +"\n"
- +".gnome-terminal-action-box {\n"
- +" padding: 6px 12px 0px 300px;\n"
- +" border:none;\n"
- +" box-shadow:inset 0 1px alpha(black,0.03),inset 0 2px alpha(black,0.03),inset 0 1px alpha(black,0.03);\n"
- +" background-color: @theme_bg_color;\n"
- +"}\n"
- +"\n"
- +".gnome-terminal-action-box:backdrop {\n"
- +" box-shadow:none;\n"
- +" background-color: @theme_unfocused_bg_color;\n"
- +"}\n"
- +"\n"
- +".gnome-terminal-notebook.notebook.header,\n"
- +".gnome-terminal-notebook.notebook.header:backdrop {\n"
- +" background-color:transparent;\n"
- +" box-shadow:inset 0 1px alpha(black,0.03),inset 0 2px alpha(black,0.03),inset 0 1px alpha(black,0.03);\n"
- +"}\n"
- +"\n";
- + css_p = gtk_css_provider_new();
- + gtk_css_provider_load_from_data(css_p,css_d,sizeof(css_d),&err);
- + headerbar = gtk_frame_new(NULL);
- + gtk_widget_show(headerbar);
- + gtk_style_context_add_provider(gtk_widget_get_style_context (headerbar),GTK_STYLE_PROVIDER(css_p),GTK_STYLE_PROVIDER_PRIORITY_USER);
- + gtk_style_context_add_class (gtk_widget_get_style_context (headerbar),"header-bar");
- + gtk_style_context_add_class (gtk_widget_get_style_context (headerbar),"gnome-terminal-header-bar-ex");
- + eb = gtk_event_box_new();
- + action_box = gtk_frame_new(NULL);
- + gtk_style_context_add_provider(gtk_widget_get_style_context (action_box),GTK_STYLE_PROVIDER(css_p),GTK_STYLE_PROVIDER_PRIORITY_USER);
- + gtk_style_context_add_class (gtk_widget_get_style_context (action_box),"gnome-terminal-action-box");
- + close_button = gtk_button_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_MENU);
- + gtk_widget_set_valign (close_button, GTK_ALIGN_START);
- + gtk_widget_set_can_focus (close_button, FALSE);
- + gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE);
- + gtk_style_context_add_class (gtk_widget_get_style_context (close_button), "titlebutton");
- + g_signal_connect_swapped (close_button, "clicked", G_CALLBACK (gtk_window_close), window);
- + gtk_container_add(GTK_CONTAINER(action_box),close_button);
- + gtk_container_add( GTK_CONTAINER(eb), action_box );
- + gtk_widget_set_events(eb,GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
- + g_signal_connect(eb, "button_press_event", G_CALLBACK (action_box_button_press_event), window);
- + g_signal_connect(eb, "button_release_event", G_CALLBACK (action_box_button_release_event), window);
- + g_signal_connect(eb, "motion_notify_event", G_CALLBACK (action_box_motion_notify_event), window);
- + gtk_widget_show_all(eb);
- + gtk_notebook_set_action_widget(GTK_NOTEBOOK(priv->mdi_container),eb,GTK_PACK_END);
- + gtk_style_context_add_provider(gtk_widget_get_style_context (GTK_WIDGET(priv->mdi_container)),GTK_STYLE_PROVIDER(css_p),GTK_STYLE_PROVIDER_PRIORITY_USER);
- + gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(priv->mdi_container)),"gnome-terminal-notebook");
- + gtk_window_set_titlebar (GTK_WINDOW (window),headerbar);
- + }
- +
- +
- priv->old_char_width = -1;
- priv->old_char_height = -1;
- priv->old_geometry_widget = NULL;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement