comparison src/gui_gtk.c @ 7380:055a0b587a3e v7.4.995

commit https://github.com/vim/vim/commit/36e294c00c784b9ddd05a4fdbea2e331ab2b1ca8 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Dec 29 18:55:46 2015 +0100 patch 7.4.995 Problem: gdk_pixbuf_new_from_inline() is deprecated. Solution: Generate auto/gui_gtk_gresources.c. (Kazunobu Kazunobu, closes https://github.com/vim/vim/issues/507)
author Christian Brabandt <cb@256bit.org>
date Tue, 29 Dec 2015 19:00:05 +0100
parents 1ed945570d47
children 81794242a275
comparison
equal deleted inserted replaced
7379:0463a4e8a4f0 7380:055a0b587a3e
138 /* 29 */ "vim-window-maximize-width", 138 /* 29 */ "vim-window-maximize-width",
139 /* 30 */ "vim-window-minimize-width", 139 /* 30 */ "vim-window-minimize-width",
140 /* 31 */ GTK_STOCK_QUIT 140 /* 31 */ GTK_STOCK_QUIT
141 }; 141 };
142 142
143 #ifdef USE_GRESOURCE
144 typedef struct IconNames {
145 const char *icon_name;
146 const char *file_name;
147 } IconNames;
148
149 static IconNames stock_vim_icons[] = {
150 { "vim-build-tags", "stock_vim_build_tags.png" },
151 { "vim-find-help", "stock_vim_find_help.png" },
152 { "vim-save-all", "stock_vim_save_all.png" },
153 { "vim-session-load", "stock_vim_session_load.png" },
154 { "vim-session-new", "stock_vim_session_new.png" },
155 { "vim-session-save", "stock_vim_session_save.png" },
156 { "vim-shell", "stock_vim_shell.png" },
157 { "vim-window-maximize", "stock_vim_window_maximize.png" },
158 { "vim-window-maximize-width", "stock_vim_window_maximize_width.png" },
159 { "vim-window-minimize", "stock_vim_window_minimize.png" },
160 { "vim-window-minimize-width", "stock_vim_window_minimize_width.png" },
161 { "vim-window-split", "stock_vim_window_split.png" },
162 { "vim-window-split-vertical", "stock_vim_window_split_vertical.png" },
163 { NULL, NULL }
164 };
165 #endif
166
167 #ifndef USE_GRESOURCE
143 static void 168 static void
144 add_stock_icon(GtkIconFactory *factory, 169 add_stock_icon(GtkIconFactory *factory,
145 const char *stock_id, 170 const char *stock_id,
146 const guint8 *inline_data, 171 const guint8 *inline_data,
147 int data_length) 172 int data_length)
155 gtk_icon_factory_add(factory, stock_id, icon_set); 180 gtk_icon_factory_add(factory, stock_id, icon_set);
156 181
157 gtk_icon_set_unref(icon_set); 182 gtk_icon_set_unref(icon_set);
158 g_object_unref(pixbuf); 183 g_object_unref(pixbuf);
159 } 184 }
185 #endif
160 186
161 static int 187 static int
162 lookup_menu_iconfile(char_u *iconfile, char_u *dest) 188 lookup_menu_iconfile(char_u *iconfile, char_u *dest)
163 { 189 {
164 expand_env(iconfile, dest, MAXPATHL); 190 expand_env(iconfile, dest, MAXPATHL);
260 #if defined(FEAT_TOOLBAR) || defined(PROTO) 286 #if defined(FEAT_TOOLBAR) || defined(PROTO)
261 287
262 void 288 void
263 gui_gtk_register_stock_icons(void) 289 gui_gtk_register_stock_icons(void)
264 { 290 {
265 # include "../pixmaps/stock_icons.h" 291 #ifndef USE_GRESOURCE
292 # include "../pixmaps/stock_icons.h"
266 GtkIconFactory *factory; 293 GtkIconFactory *factory;
267 294
268 factory = gtk_icon_factory_new(); 295 factory = gtk_icon_factory_new();
269 # define ADD_ICON(Name, Data) add_stock_icon(factory, Name, Data, (int)sizeof(Data)) 296 # define ADD_ICON(Name, Data) add_stock_icon(factory, Name, Data, (int)sizeof(Data))
270 297
271 ADD_ICON("vim-build-tags", stock_vim_build_tags); 298 ADD_ICON("vim-build-tags", stock_vim_build_tags);
272 ADD_ICON("vim-find-help", stock_vim_find_help); 299 ADD_ICON("vim-find-help", stock_vim_find_help);
273 ADD_ICON("vim-save-all", stock_vim_save_all); 300 ADD_ICON("vim-save-all", stock_vim_save_all);
274 ADD_ICON("vim-session-load", stock_vim_session_load); 301 ADD_ICON("vim-session-load", stock_vim_session_load);
280 ADD_ICON("vim-window-minimize", stock_vim_window_minimize); 307 ADD_ICON("vim-window-minimize", stock_vim_window_minimize);
281 ADD_ICON("vim-window-minimize-width", stock_vim_window_minimize_width); 308 ADD_ICON("vim-window-minimize-width", stock_vim_window_minimize_width);
282 ADD_ICON("vim-window-split", stock_vim_window_split); 309 ADD_ICON("vim-window-split", stock_vim_window_split);
283 ADD_ICON("vim-window-split-vertical", stock_vim_window_split_vertical); 310 ADD_ICON("vim-window-split-vertical", stock_vim_window_split_vertical);
284 311
285 # undef ADD_ICON 312 # undef ADD_ICON
313 #else
314 GtkIconFactory * const factory = gtk_icon_factory_new();
315 const char * const path_prefix = "/org/vim/gui/icon";
316 IconNames *names;
317
318 for (names = stock_vim_icons; names->icon_name != NULL; names++)
319 {
320 char path[MAXPATHL];
321 GdkPixbuf *pixbuf;
322
323 vim_snprintf(path, MAXPATHL, "%s/%s", path_prefix, names->file_name);
324 pixbuf = gdk_pixbuf_new_from_resource(path, NULL);
325 if (pixbuf != NULL)
326 {
327 GtkIconSet *icon_set = gtk_icon_set_new_from_pixbuf(pixbuf);
328 gtk_icon_factory_add(factory, names->icon_name, icon_set);
329 gtk_icon_set_unref(icon_set);
330 g_object_unref(pixbuf);
331 }
332 }
333 #endif
286 gtk_icon_factory_add_default(factory); 334 gtk_icon_factory_add_default(factory);
287 g_object_unref(factory); 335 g_object_unref(factory);
288 } 336 }
289 337
290 #endif /* FEAT_TOOLBAR */ 338 #endif /* FEAT_TOOLBAR */