Mercurial > vim
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 */ |