рд╢реБрдн рджрд┐рди, рдкреНрд░рд┐рдп рдЦрд╛рдмрд░реЛрд╡рдЪрд┐рдпреЛрдВ!
рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдорд╛рдорд▓рд╛ рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рдХреЗ рдЕрдВрдд рдореЗрдВ
рд╢рд╛рдо рдореЗрдВ рдерд╛, рдХреБрдЫ рдХрд░рдирд╛ рдирд╣реАрдВ рдерд╛ред
рдордзреНрдп рдорд╛рдЙрд╕ рдмрдЯрди рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЯреИрдм рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ рдФрд░ рдпрд╛ рддреЛ рдХрд╛рдо рдХреА рдХрдореА рдереА рдпрд╛ рд╕рд┐рд░реНрдл рдЦреЗрд▓ рд░реБрдЪрд┐ рдереА, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЧрдиреЛрдо-рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдЧрд░реНрдо рдХреБрдВрдЬрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ, рдореИрдВ рдмрд╕ рдпрд╣реА рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЕрд╡рд╕рд░ рдФрд░ рднреА рд╣реЛ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рднреЛрдЬрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рддрд╛ред
рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖ рдФрд░ рдореБрдЭреЗ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рддреЛ рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░реЗрдВред
рд╢реБрд░реБрдЖрдд
рдХреЙрдлреА рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░, рдореИрдВ рд╕реВрдХреНрддрд┐-рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЧрдпрд╛ред Google рдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдВрдХ
рд╕реНрд░реЛрдд рдХреЛ рдкреНрд░рд╕рдиреНрдирддрд╛рдкреВрд░реНрд╡рдХ рдЬрд╛рд░реА рдХрд┐рдпрд╛ред
рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ trifling рд╣реИ ..) рдореИрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ рдерд╛, рдореИрдВ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ :(
рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ (2.33.0), рдЬрд┐рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЕрдкрдирд╛ "рд╢реЛрдз" рд╢реБрд░реВ рдХрд┐рдпрд╛ред
рд╕реНрд░реЛрдд рдХреЛрдб рдбрд┐рдмреНрд░реАрдбрд┐рдВрдЧ
рдЬреАрдЯреАрдХреЗ рдХрд╛ рдореЗрд░рд╛ рдЬреНрдЮрд╛рди рдмрд╣реБрдд рд╣реА рд╕рддрд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдХреА рдЙрдореНрдореАрдж рдереА рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реНрдордд рд╢реБрд░реВ рд╣реБрдИред
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рдЯрд░реНрдорд┐рдирд▓-рдЯреИрдм-рд▓реЗрдмрд▓ рдорд┐рд▓рд╛ред рдпрд╣ рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрд╛ рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдЯреИрдм рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд╛рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдерд╛ред
рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЬрдВрдЧ рдЦрд╛рдП (рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЯреВрдЯреЗ рд╣реБрдП рд▓рд┐рдВрдХ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдереЛрдбрд╝рд╛ рдкрд░реЗрд╢рд╛рди рд╣реИ), рдореБрдЭреЗ
рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдПрдХ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдкрд░ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
g_signal_connect (label, "button-press-event", G_CALLBACK (click_label_cb), tab_label)
рд▓реЗрдХрд┐рди рдирд┐рд░рд╛рд╢рд╛ рдиреЗ рдореЗрд░реА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА, рдШрдЯрдирд╛ рдирд╣реАрдВ рд╣реБрдИред
рдкреНрд░рд▓реЗрдЦрди рдиреЗ рдпрд╣ рднреА рдХрд╣рд╛: "рдЗрд╕ рд╕рдВрдХреЗрдд рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреЗрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ
GdkWindow рдХреЛ
GDK_BUTTON_PRESS_MASK рдорд╛рд╕реНрдХ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред"
рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдХреА рдЬрд░реВрд░рдд рд╣реИ, рддреЛ рдЖрдк рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЦреЛрдЬ рдФрд░ рдЖрдВрд╢рд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдореИрдВрдиреЗ рд╣рд░ рдЬрдЧрд╣ рдлрд╝реЙрд░реНрдо рдХреА рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реАрдВ:
gdk_window_set_events(root_window, GDK_BUTTON_PRESS_MASK|GDK_BUTTON_RELEASE_MASK)
рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдпрд╣ рдЯреВрдЯ рдЧрдпрд╛, рдХреЛрдИ рдЕрд╕рд░ рдирд╣реАрдВ рд╣реБрдЖред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдПрдХ рдкреНрд▓рд╕ рд╣реИред рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдлрд╝рдВрдХреНрд╢рди рдЯрд░реНрдорд┐рдирд▓_рд╡рд┐рдВрдбреЛ_рдЗрдирд┐рдЯ (рдЯрд░реНрдорд┐рдирд▓-рд╡рд┐рдВрдбреЛред рд╕реА), рдЕрд░реНрдерд╛рддреН рд▓рд╛рдЗрди: рдкрд░ рдЖрдпрд╛ рдерд╛ред
g_signal_connect (priv->notebook, "button-press-event", G_CALLBACK (notebook_button_press_cb), window)
рдирддреАрдЬрддрди, рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рд╡реЗрдЬ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдереЛрдбрд╝рд╛ рдкрд░реЗрд╢рд╛рди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕ рдирд┐рд░реНрдгрдп рдкрд░ рдЖрдпрд╛:
.... static gboolean notebook_button_press_cb (GtkWidget *widget, GdkEventButton *event, TerminalWindow *window) { TerminalWindowPrivate *priv = window->priv; GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkWidget *menu; GtkAction *action; int tab_clicked; // . if (event->type == GDK_BUTTON_PRESS && event->button == 2 ){ tab_clicked = find_tab_num_at_pos (notebook, event->x_root, event->y_root); if (tab_clicked < 0) return FALSE; /* switch to the page the mouse is over */ gtk_notebook_set_current_page (notebook, tab_clicked); action = gtk_action_group_get_action (priv->action_group, "PopupCloseTab"); gtk_action_activate (action); return TRUE; } // . if (event->type != GDK_BUTTON_PRESS || .....
рдЦреИрд░, рдпрд╣ рдмрд╛рдд рд╣реИ! рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ
рд╕рдлрд▓рддрд╛ рд╕реЗ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реЛрдХрд░, рдореИрдВрдиреЗ "рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ" рдПрдХ рдХрд╖реНрдЯрдкреНрд░рдж рддрд┐рдкрд╣рд┐рдпрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рдЯреИрдм рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ, рдЕрдЧрд░ рдХреБрдЫ рдЪрд▓ рд░рд╣рд╛ рд╣реИ) рдХреЛрдб рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЖрдпрд╛:
do_confirm = gconf_client_get_bool (client, CONF_GLOBAL_PREFIX "/confirm_window_close", NULL)
Gconf_client_get_bool рдкрд░ рдереЛрдбрд╝реА рд╕реА рдЧреБрдЧрд▓реА рдХрд░рдиреЗ рдкрд░ рдореБрдЭреЗ рдЕрдкрдиреЗ ~ / .gconf / apps / gnome- рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдорд┐рд▓реАрдВред
рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдХреЗ (рдпрд╛ рд╢рд╛рдпрдж рдмрд╣реБрдд рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЗрд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдпрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╛рдВрдЫрд┐рдд рджреЗ
рдкреНрд░рднрд╛рд╡ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рд╕реВрддреНрд░реЛрдВ рдореЗрдВ, рдореБрдЭреЗ рджреЛ рд╕реНрдерд╛рдиреЛрдВ gnome-terminal.schemas рдФрд░ gnome-terminal.schemas.in рдореЗрдВ confirm_window_close рд╕реЗрдЯрд┐рдВрдЧ рдорд┐рд▓реАред
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
<schema> <key>/schemas/apps/gnome-terminal/global/confirm_window_close</key> <applyto>/apps/gnome-terminal/global/confirm_window_close</applyto> <owner>gnome-terminal</owner> <type>bool</type> <default>true</default> <gettext_domain>gnome-terminal</gettext_domain> <locale name="C"> <short>Whether to ask for confirmation when closing terminal windows</short> <long>Whether to ask for confirmation when closing a terminal window which has more than one open tab.</long> </locale> </schema>
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рдмрджрд▓рдХрд░ рд╕рднреА рдХреЛ рдЧрд▓рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╣реБрд░реНрд░реЗ!
рдареАрдХ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдпрд╛ рддреЛ рдкреИрдХреЗрдЬ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрдиреБрд╢рдВрд╕рд┐рдд) рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ (рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ)
рдореИрдВ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреА рднреНрд░рдорд┐рдд рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!