Merge lp:~holizz/sakura/sakura into lp:~dabisu/sakura/sakura

Proposed by Tom Adams
Status: Rejected
Rejected by: David Gómez
Proposed branch: lp:~holizz/sakura/sakura
Merge into: lp:~dabisu/sakura/sakura
Diff against target: None lines
To merge this branch: bzr merge lp:~holizz/sakura/sakura
Reviewer Review Type Date Requested Status
David Gómez Abstain
Review via email: mp+4500@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Tom Adams (holizz) wrote :
lp:~holizz/sakura/sakura updated
282. By Tom Adams

  * src/sakura.c:
   - Removed unused variable from sakura_concat_uris

283. By Tom Adams

  * src/sakura.c:
   - Use sakura_set_size in sakura_show_first_tab

284. By Tom Adams

  * src/sakura.c:
   - String changes

Revision history for this message
David Gómez (dabisu) wrote :

I forgot this merge request, i'm really sorry. I corrected one string that wasn't corrected yet ("Always show tab bar"). The scrollbar bug still happens so the bug is open. Adding a call to set_size in show_first_tab won't fix it.

review: Abstain

Unmerged revisions

284. By Tom Adams

  * src/sakura.c:
   - String changes

283. By Tom Adams

  * src/sakura.c:
   - Use sakura_set_size in sakura_show_first_tab

282. By Tom Adams

  * src/sakura.c:
   - Removed unused variable from sakura_concat_uris

281. By Tom Adams

  * src/sakura.c:
   - Use term's size in sakura_calculate_row_col to get new values

280. By Tom Adams

  * src/sakura.c:
   - Use sakura_set_size when toggling scrollbar via context menu too

279. By Tom Adams

  * src/sakura.c:
   - Added text/unicode target as workaround for Firefox

278. By Tom Adams

  * src/sakura.c:
   - Removed colour, background, and tab targets.

277. By Tom Adams

  * src/sakura.c:
   - Strip "file://" from URIs

276. By Tom Adams

  * src/sakura.c:
   - Remove sakura_transform_uris_to_quoted_fuse_paths

275. By Tom Adams

  * src/sakura.c:
 - Initial support for drag and drop

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/sakura.c'
--- src/sakura.c 2009-02-03 16:23:52 +0000
+++ src/sakura.c 2009-03-15 13:11:44 +0000
@@ -4,6 +4,7 @@
4 *4 *
5 * Copyright (C) 2006-2008 David Gómez <david@pleyades.net>5 * Copyright (C) 2006-2008 David Gómez <david@pleyades.net>
6 * Copyright (C) 2008 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>6 * Copyright (C) 2008 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
7 * Copyright (C) 2009 Tom Adams <tom@holizz.com>
7 *8 *
8 * This program is free software; you can redistribute it and/or modify9 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as10 * it under the terms of the GNU General Public License version 2 as
@@ -199,6 +200,13 @@
199 GtkWidget *label;200 GtkWidget *label;
200};201};
201202
203enum
204{
205 TARGET_MOZ_URL,
206 TARGET_NETSCAPE_URL,
207 TARGET_UNICODE
208};
209
202210
203#define ICON_FILE "terminal-tango.svg"211#define ICON_FILE "terminal-tango.svg"
204#define SCROLL_LINES 4096212#define SCROLL_LINES 4096
@@ -263,6 +271,7 @@
263static void sakura_show_close_button (GtkWidget *widget, void *data);271static void sakura_show_close_button (GtkWidget *widget, void *data);
264static void sakura_show_scrollbar(GtkWidget *, void *);272static void sakura_show_scrollbar(GtkWidget *, void *);
265static void sakura_closebutton_clicked(GtkWidget *, void *);273static void sakura_closebutton_clicked(GtkWidget *, void *);
274static void sakura_drag_data_received (GtkWidget *, GdkDragContext *, gint, gint, GtkSelectionData *, guint, guint);
266275
267/* Misc */276/* Misc */
268static void sakura_error(const char *, ...);277static void sakura_error(const char *, ...);
@@ -279,6 +288,7 @@
279static void sakura_set_bgimage();288static void sakura_set_bgimage();
280static void sakura_key_file_set_key(GKeyFile *, const gchar *, const gchar *, guint);289static void sakura_key_file_set_key(GKeyFile *, const gchar *, const gchar *, guint);
281static guint sakura_key_file_get_key(GKeyFile *, const gchar *, const gchar *);290static guint sakura_key_file_get_key(GKeyFile *, const gchar *, const gchar *);
291char * sakura_concat_uris (char **, gsize *);
282292
283static const char *option_font;293static const char *option_font;
284static const char *option_execute;294static const char *option_execute;
@@ -1044,6 +1054,7 @@
1044 else1054 else
1045 gtk_widget_show(term->scrollbar);1055 gtk_widget_show(term->scrollbar);
1046 }1056 }
1057 sakura_set_size(sakura.columns, sakura.rows);
1047}1058}
10481059
10491060
@@ -1135,6 +1146,175 @@
1135 }1146 }
1136}1147}
11371148
1149/* Paste text from DND action
1150 * Original function was from terminal-screen.c of gnome-terminal,
1151 * Copyright © 2001 Havoc Pennington
1152 * Copyright © 2007, 2008 Christian Persch
1153 * Adapted by Tom Adams */
1154static void
1155sakura_drag_data_received (GtkWidget *widget,
1156 GdkDragContext *context,
1157 gint x,
1158 gint y,
1159 GtkSelectionData *selection_data,
1160 guint info,
1161 guint time)
1162{
1163 VteTerminal *vte = VTE_TERMINAL(widget);
1164
1165 if (gtk_targets_include_uri (&selection_data->target, 1))
1166 {
1167 char **uris;
1168 char *text;
1169 gsize len;
1170
1171 uris = gtk_selection_data_get_uris (selection_data);
1172 if (!uris)
1173 return;
1174
1175 text = sakura_concat_uris (uris, &len);
1176 vte_terminal_feed_child (vte, text, len);
1177 g_free (text);
1178
1179 g_strfreev (uris);
1180 }
1181 else if (gtk_targets_include_text (&selection_data->target, 1))
1182 {
1183 char *text;
1184
1185 text = (char *) gtk_selection_data_get_text (selection_data);
1186 if (text && text[0])
1187 vte_terminal_feed_child (vte, text, strlen (text));
1188 g_free (text);
1189 }
1190 else switch (info)
1191 {
1192 case TARGET_MOZ_URL:
1193 {
1194 char *utf8_data, *newline, *text;
1195 char *uris[2];
1196 gsize len;
1197
1198 /* MOZ_URL is in UCS-2 but in format 8. BROKEN!
1199 *
1200 * The data contains the URL, a \n, then the
1201 * title of the web page.
1202 */
1203 if (selection_data->format != 8 ||
1204 selection_data->length == 0 ||
1205 (selection_data->length % 2) != 0)
1206 return;
1207
1208 utf8_data = g_utf16_to_utf8 ((const gunichar2*) selection_data->data,
1209 selection_data->length / 2,
1210 NULL, NULL, NULL);
1211 if (!utf8_data)
1212 return;
1213
1214 newline = strchr (utf8_data, '\n');
1215 if (newline)
1216 *newline = '\0';
1217
1218 uris[0] = utf8_data;
1219 uris[1] = NULL;
1220
1221 text = sakura_concat_uris (uris, &len);
1222 vte_terminal_feed_child (vte, text, len);
1223 g_free (text);
1224 g_free (uris[0]);
1225 }
1226 break;
1227
1228 case TARGET_NETSCAPE_URL:
1229 {
1230 char *utf8_data, *newline, *text;
1231 char *uris[2];
1232 gsize len;
1233
1234 /* The data contains the URL, a \n, then the
1235 * title of the web page.
1236 */
1237 if (selection_data->length < 0 || selection_data->format != 8)
1238 return;
1239
1240 utf8_data = g_strndup ((char *) selection_data->data, selection_data->length);
1241 newline = strchr (utf8_data, '\n');
1242 if (newline)
1243 *newline = '\0';
1244
1245 uris[0] = utf8_data;
1246 uris[1] = NULL;
1247
1248 text = sakura_concat_uris (uris, &len);
1249 vte_terminal_feed_child (vte, text, len);
1250 g_free (text);
1251 g_free (uris[0]);
1252 }
1253 break;
1254
1255 case TARGET_UNICODE:
1256 { /* adapted from TARGET_MOZ_URL, as a workaround for
1257 Firefox's text/plain drag source which is
1258 ISO-8859-1 encoded */
1259 char *utf8_data;
1260
1261 if (selection_data->format != 8 ||
1262 selection_data->length == 0 ||
1263 (selection_data->length % 2) != 0)
1264 return;
1265
1266 utf8_data = g_utf16_to_utf8 ((const gunichar2*) selection_data->data,
1267 selection_data->length / 2,
1268 NULL, NULL, NULL);
1269 if (!utf8_data)
1270 return;
1271
1272 vte_terminal_feed_child (vte, utf8_data, strlen(utf8_data));
1273 }
1274 break;
1275
1276 default:
1277 g_assert_not_reached ();
1278 }
1279}
1280
1281/* Original function was from terminal-util.c of gnome-terminal,
1282 * Copyright © 2001, 2002 Havoc Pennington
1283 * Copyright © 2002 Red Hat, Inc.
1284 * Copyright © 2002 Sun Microsystems
1285 * Copyright © 2003 Mariano Suarez-Alvarez
1286 * Copyright © 2008 Christian Persch
1287 * Adapted by Tom Adams */
1288char *
1289sakura_concat_uris (char **uris, gsize *length)
1290{
1291 GString *string;
1292 gsize len;
1293 guint i, j;
1294 char* uri;
1295
1296 len = 0;
1297 for (i = 0; uris[i]; ++i)
1298 len += strlen (uris[i]) + 1;
1299
1300 if (length)
1301 *length = len;
1302
1303 string = g_string_sized_new (len + 1);
1304 for (i = 0; uris[i]; ++i)
1305 {
1306 uri = uris[i];
1307 if (strncmp(uris[i], "file://", 7) == 0)
1308 {
1309 uri += 7;
1310 *length -= 7;
1311 }
1312 g_string_append (string, uri);
1313 g_string_append_c (string, ' ');
1314 }
1315
1316 return g_string_free (string, FALSE);
1317}
11381318
1139/* Every the window changes its size by an user action (resize, fullscreen), calculate1319/* Every the window changes its size by an user action (resize, fullscreen), calculate
1140 * the new values for the number of columns and rows */1320 * the new values for the number of columns and rows */
@@ -1144,6 +1324,7 @@
1144 struct terminal *term;1324 struct terminal *term;
1145 gint x_padding, y_padding;1325 gint x_padding, y_padding;
1146 gint n_pages=gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));1326 gint n_pages=gtk_notebook_get_n_pages(GTK_NOTEBOOK(sakura.notebook));
1327 GtkRequisition term_request;
11471328
1148 if (n_pages==-1) return;1329 if (n_pages==-1) return;
11491330
@@ -1156,12 +1337,12 @@
1156 vte_terminal_get_padding( VTE_TERMINAL(term->vte), &x_padding, &y_padding );1337 vte_terminal_get_padding( VTE_TERMINAL(term->vte), &x_padding, &y_padding );
1157 sakura.char_width = vte_terminal_get_char_width(VTE_TERMINAL(term->vte));1338 sakura.char_width = vte_terminal_get_char_width(VTE_TERMINAL(term->vte));
1158 sakura.char_height = vte_terminal_get_char_height(VTE_TERMINAL(term->vte));1339 sakura.char_height = vte_terminal_get_char_height(VTE_TERMINAL(term->vte));
1340 gtk_widget_size_request (term->vte, &term_request);
1159 /* Ignore resize events in sakura window is in fullscreen */1341 /* Ignore resize events in sakura window is in fullscreen */
1160 if (!sakura.keep_fc) { 1342 if (!sakura.keep_fc) {
1161 /* We cannot trust in vte allocation values, they're unreliable */1343 /* We cannot trust in vte allocation values, they're unreliable */
1162 /* FIXME: Round values properly */1344 sakura.columns = (term_request.width/sakura.char_width);
1163 sakura.columns = (width/sakura.char_width);1345 sakura.rows = (term_request.height/sakura.char_height);
1164 sakura.rows = (height/sakura.char_height);
1165 sakura.keep_fc=false;1346 sakura.keep_fc=false;
1166 SAY("new columns %ld and rows %ld", sakura.columns, sakura.rows);1347 SAY("new columns %ld and rows %ld", sakura.columns, sakura.rows);
1167 }1348 }
@@ -1913,6 +2094,14 @@
1913 gchar *label_text;2094 gchar *label_text;
1914 gchar *cwd = NULL;2095 gchar *cwd = NULL;
1915 gint w, h;2096 gint w, h;
2097 const GtkTargetEntry target_table[] = {
2098 { "text/x-moz-url", 0, TARGET_MOZ_URL },
2099 { "_NETSCAPE_URL", 0, TARGET_NETSCAPE_URL },
2100 { "text/unicode", 0, TARGET_UNICODE }
2101 };
2102 GtkTargetList *target_list;
2103 GtkTargetEntry *targets;
2104 int n_targets;
19162105
19172106
1918 term = g_new0( struct terminal, 1 );2107 term = g_new0( struct terminal, 1 );
@@ -1975,6 +2164,24 @@
19752164
1976 sakura_set_page_term(sakura, index, term );2165 sakura_set_page_term(sakura, index, term );
19772166
2167 /* Setup DND */
2168 target_list = gtk_target_list_new (NULL, 0);
2169 gtk_target_list_add_uri_targets (target_list, 0);
2170 gtk_target_list_add_text_targets (target_list, 0);
2171 gtk_target_list_add_table (target_list, target_table, G_N_ELEMENTS (target_table));
2172
2173 targets = gtk_target_table_new_from_list (target_list, &n_targets);
2174
2175 gtk_drag_dest_set (GTK_WIDGET (term->vte),
2176 GTK_DEST_DEFAULT_MOTION |
2177 GTK_DEST_DEFAULT_HIGHLIGHT |
2178 GTK_DEST_DEFAULT_DROP,
2179 targets, n_targets,
2180 GDK_ACTION_COPY | GDK_ACTION_MOVE);
2181
2182 gtk_target_table_free (targets, n_targets);
2183 gtk_target_list_unref (target_list);
2184
1978 /* vte signals */2185 /* vte signals */
1979 g_signal_connect(G_OBJECT(term->vte), "increase-font-size", G_CALLBACK(sakura_increase_font), NULL);2186 g_signal_connect(G_OBJECT(term->vte), "increase-font-size", G_CALLBACK(sakura_increase_font), NULL);
1980 g_signal_connect(G_OBJECT(term->vte), "decrease-font-size", G_CALLBACK(sakura_decrease_font), NULL);2187 g_signal_connect(G_OBJECT(term->vte), "decrease-font-size", G_CALLBACK(sakura_decrease_font), NULL);
@@ -1982,6 +2189,7 @@
1982 g_signal_connect(G_OBJECT(term->vte), "eof", G_CALLBACK(sakura_eof), NULL);2189 g_signal_connect(G_OBJECT(term->vte), "eof", G_CALLBACK(sakura_eof), NULL);
1983 g_signal_connect(G_OBJECT(term->vte), "window-title-changed", G_CALLBACK(sakura_title_changed), NULL);2190 g_signal_connect(G_OBJECT(term->vte), "window-title-changed", G_CALLBACK(sakura_title_changed), NULL);
1984 g_signal_connect_swapped(G_OBJECT(term->vte), "button-press-event", G_CALLBACK(sakura_button_press), sakura.menu);2191 g_signal_connect_swapped(G_OBJECT(term->vte), "button-press-event", G_CALLBACK(sakura_button_press), sakura.menu);
2192 g_signal_connect(G_OBJECT(term->vte), "drag-data-received", G_CALLBACK(sakura_drag_data_received), NULL);
19852193
1986 /* Notebook signals */2194 /* Notebook signals */
1987 g_signal_connect(G_OBJECT(sakura.notebook), "page-removed", G_CALLBACK(sakura_page_removed), NULL);2195 g_signal_connect(G_OBJECT(sakura.notebook), "page-removed", G_CALLBACK(sakura_page_removed), NULL);

Subscribers

People subscribed via source and target branches