12006-04-30 Kristian Rietveld <kris@imendio.com> 2 3 * gtk/gtkfilesystem.[ch] (gtk_file_info_render_icon): remove the 4 caching code, 5 (gtk_file_info_get_icon_name): new function, 6 (gtk_file_system_volume_get_icon_name): new function, 7 (gtk_file_system_volume_render_icon): refactor to use 8 get_icon_name() and render the icon on the fly. 9 10 * gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon), 11 (gtk_file_system_unix_volume_get_icon_name): reflect updates in 12 file system interface, 13 (get_fallback_icon): remove, along with icon caching code. 14 15 * gtk/gtk.symbols: updated. 16 172006-04-30 Kristian Rietveld <kris@imendio.com> 18 19 * gtk/gtkfilesystemmodel.c (got_root_folder_cb), (ref_path_cb), 20 (get_children_get_folder_cb): don't leak the handle, 21 (got_root_folder_cb), (get_children_get_folder_cb): emit 22 row-inserted for the newly added nodes. 23 242006-04-30 Kristian Rietveld <kris@imendio.com> 25 26 * gtk/gtkfilechooserdefault.c (file_list_drag_data_select_uris), 27 (file_list_drag_data_received_get_info_cb), 28 (file_list_drag_data_received_cb): refactor code for selecting 29 multiple uris into file_list_drag_data_select_uris(). 30 312006-04-23 Kristian Rietveld <kris@imendio.com> 32 33 * gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb): don't 34 leak handle, 35 (change_icon_theme_get_info_cb), (set_info_get_info_cb), 36 (model_add_special_get_info_cb), (update_label_get_info_cb): ditto. 37 38 * gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb): 39 don't leak the handle, 40 (get_file_info_finished), (edited_idle_create_folder_cb), 41 (file_list_drag_data_received_get_info_cb), 42 (show_and_select_paths_get_folder_cb), 43 (update_current_folder_get_info_cb), (add_shortcut_get_info_cb), 44 (confirmation_confirm_get_info_cb), (action_create_folder_cb), 45 (save_entry_get_info_cb), (shortcuts_activate_volume_mount_cb), 46 (shortcuts_activate_get_info_cb), (update_from_entry_get_info_cb): 47 ditto. 48 49 * gtk/gtkfilechooserentry.c (load_directory_get_folder_callback): 50 don't leak the handle. 51 52 * gtk/gtkpathbar.c (set_button_image_get_info_cb), 53 (gtk_path_bar_get_info_callback): don't leak the handle. 54 552006-04-23 Kristian Rietveld <kris@imendio.com> 56 57 Review. 58 59 * gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb): 60 don't forget to unref data->impl at the end. 61 622006-04-23 Kristian Rietveld <kris@imendio.com> 63 64 Review, continued. 65 66 * gtk/gtkfilechooserdialog.c (response_cb): set response_requested 67 to FALSE after stopping emission of the response signal. 68 692006-03-16 Kristian Rietveld <kris@imendio.com> 70 71 More review work. 72 73 * gtk/gtkfilechooserprivate.h: remove idle_finished_loading_source 74 from GtkFileSystemModel. 75 76 * gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): remove 77 idle_finished_loading_source, 78 (idle_finished_loading_cb), (queue_finished_loading): removed, 79 (got_root_folder_cb): save a list walk, immediately emit 80 finished-loading and don't queue it, since we are already in an 81 idle here, always list_children() so the children the folder already 82 has are returned, 83 (_gtk_file_system_model_new): handle the case where NULL is 84 returned by _get_folder(), 85 (_gtk_file_system_model_path_do): remove comment, and append the 86 new handle to the list, don't try to remove, 87 (get_children_get_folder_cb): save a list walk, remove the dummy 88 child if the _get_folder() call fails or is cancelled. 89 902006-03-14 Kristian Rietveld <kris@imendio.com> 91 92 More suggestions from Federico. 93 94 * gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder): 95 remove check for filename_is_root(), since we never hit that code 96 and else mkdir will fail anyway, 97 (gtk_file_system_unix_create_folder): fixup parent folder refresh 98 code. 99 1002006-03-14 Kristian Rietveld <kris@imendio.com> 101 102 * gtk/gtkfilesystemunix.c (read_hidden_file), (fill_in_hidden), 103 (get_is_hidden_for_file): factor out g_file_get_contents() code 104 in read_hidden_file(). (Federico Mena Quintero). 105 1062006-03-14 Kristian Rietveld <kris@imendio.com> 107 108 Icon name code suggestions by Federico Mena Quintero. 109 110 * gtk/gtkfilesystemunix.c: add GTK_FILE_INFO_ICON to 111 STAT_NEEDED_MASK, 112 (get_fallback_icon_name), (get_fallback_icon), 113 (get_icon_name_for_directory), (get_special_icon_name): get rid 114 of strdups, 115 (get_icon_type_from_path): add a statbuf argument and use the 116 statbuf when folder_unix is NULL, 117 (create_file_info): adapt to work with above changes. 118 1192006-03-14 Kristian Rietveld <kris@imendio.com> 120 121 * gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): path 122 is NULL is an error here (gtk_file_system_get_info() already guards 123 path = NULL), 124 (gtk_file_system_unix_get_info): move basename creation to just 125 before create_file_info(). (Federico Mena Quintero). 126 1272006-03-14 Kristian Rietveld <kris@imendio.com> 128 129 * gtk/gtkfilesystemunix.c (struct _GtkFileFolderUnix): add 130 load_folder_id field, 131 (load_folder): add thread enter/leave construct, set load_folder_id 132 to zero since we have the idle removed when we return, 133 (gtk_file_system_unix_get_folder): initialize load_folder_id to 0 134 and store the source id of the load_folder idle, 135 (gtk_file_folder_unix_finalize): remove the load_folder idle 136 if necessary. (Federico Mena Quintero). 137 1382006-03-14 Kristian Rietveld <kris@imendio.com> 139 140 * gtk/gtkfilechooser.c (gtk_file_chooser_get_current_folder): return 141 NULL if there is no current folder path. 142 143 * gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_map): we 144 reload the current folder if there is one, else we continue the 145 still pending load. 146 1472006-03-14 Kristian Rietveld <kris@imendio.com> 148 149 Couple of fixes from Markku Vire. 150 151 * gtk/gtkfilesystem.c (gtk_file_info_copy): also strdup icon_name 152 and display_key. 153 154 * gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder): 155 initialize error to NULL, 156 (gtk_file_folder_unix_list_children): return an empty list for now if 157 we couldn't read the directory. 158 1592005-12-23 Kristian Rietveld <kris@imendio.com> 160 161 * gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb), 162 (gtk_file_chooser_default_update_current_folder): set and unset 163 busy cursor while checking whether the given path is a folder. 164 1652005-12-23 Kristian Rietveld <kris@imendio.com> 166 167 * gtk/gtkfilesystem.h: change the GtkFileInfo argument of the 168 GetInfoCallback to be const. 169 170 * gtk/gtkfilechooserbutton.c, gtk/gtkfilechooserdefault.c, 171 gtk/gtkpathbar.c: changes functions to reflect the above change. 172 1732005-12-23 Kristian Rietveld <kris@imendio.com> 174 175 * gtk/gtkfilechooserdefault.c, gtk/gtkfilechooserprivate.h: keep track 176 of handles, cancel all pending operations on dispose. 177 1782005-12-23 Kristian Rietveld <kris@imendio.com> 179 180 * gtk/gtkfilechooserprivate.h (struct _GtkFileSystemModel): add 181 pending_handles field, 182 (struct _FileModelNode): add load_pending flag. 183 184 * gtk/gtkfilesystemmodel.c (gtk_file_system_model_dispose): introduce, 185 cancel all pending operations here, 186 (got_root_folder_cb), (_gtk_file_system_model_new), (ref_path_cb), 187 (_gtk_file_system_model_path_do): keep track of all pending 188 operations, handle cancelled operations. 189 1902005-12-23 Kristian Rietveld <kris@imendio.com> 191 192 * gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize), 193 (gtk_file_chooser_button_destroy): move all handle cancellations 194 and object unrefs to destroy. 195 196 * gtk/gtkpathbar.c (gtk_path_bar_finalize), (gtk_path_bar_dispose): 197 likewise. 198 199 * gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_class_init): 200 add dispose, 201 (gtk_file_chooser_entry_dispose): cancel handles and unrefs 202 objects here instead of finalize. 203 2042005-12-23 Kristian Rietveld <kris@imendio.com> 205 206 * gtk/gtkfilesystem.c (get_cached_icon): check if "name" is an 207 absolute path, if so load the icon from that file. 208 209 * gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): fix 210 the build. 211 2122005-12-21 Kristian Rietveld <kris@imendio.com> 213 214 * gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): remove 215 the FIXME since it doesn't make sense, when we return a cached 216 folder we won't emit finished-loading either, 217 (gtk_file_system_unix_create_folder): remove unused variable, 218 (gtk_file_folder_unix_list_children): remove unused code, 219 (get_is_hidden_for_file): new function, 220 (create_file_info): also handle getting is_hidden when called 221 without a folder unix (from _system_get_info() for example). 222 2232005-12-20 Kristian Rietveld <kris@imendio.com> 224 225 * gtk/gtkfilechooserdefault.c (check_is_folder): fully removed! 226 woo!, 227 (check_save_entry): add is_folder argument, 228 (gtk_file_chooser_default_get_paths): update check_save_entry() call, 229 (get_display_name_for_folder): removed, 230 (confirmation_confirm_get_info_cb): new function which will 231 handle the confirmation dialog now we have all information for it, 232 (should_respond_after_confirm_overwrite): replace the call to 233 get_display_name_for_folder() with an asynchronous solution, 234 (action_create_folder_cb): request dialog response on successfull 235 folder creation, 236 (gtk_file_chooser_default_should_respond): update call to 237 check_save_entry(); replace the check is folder call for "path" 238 by just using the is_folder return value from check_save_entry(); 239 replaced the check is folder call for "parent_path" with an 240 asynchronous setup, remainder of that work is now done in 241 save_entry_get_info_cb(), 242 (save_entry_get_info_cb): new function. 243 244 * gtk/gtkfilechoosermebed.[ch]: add response-requested signal. 245 246 * gtk/gtkfilechooserdialog.c, gtk/gtkfilechooserprivate.h: handle 247 response_requested signal. 248 249 * gtk/gtkfilechooserentry.[ch] 250 (_gtk_file_chooser_entry_get_is_folder): new function. 251 2522005-12-20 Kristian Rietveld <kris@imendio.com> 253 254 * gtk/gtkfilechooserdefault.c (ref_path_cb): when called with 255 !folder, check if node is the node we are looking for (can be 256 triggered when we call ref_path_cb ourselves after a find_child_node), 257 (_gtk_file_system_model_path_do): introduce parent_node field; 258 after finding a child node in a loaded parent node, don't forget 259 to call ref_path_cb, 260 (get_children_get_folder_cb): don't forget to set data->node->folder 261 to the newly acquired folder. 262 2632005-12-20 Kristian Rietveld <kris@imendio.com> 264 265 * gtk/gtkfilechooserdefault.c (show_and_select_paths_get_folder_cb): 266 handle case where the folder we get already finished loading. 267 268 * gtk/gtkfilesystemmodel.c (ref_path_cb), 269 (_gtk_file_system_model_path_do): make this work. 270 2712005-12-19 Kristian Rietveld <kris@imendio.com> 272 273 * gtk/gtkfilechooserdefault.c (shortcuts_update_count): modify 274 in such a way that it can also negatively update the count on 275 failures, 276 (get_file_info_finished): handle failures, update save folder 277 combo box on success, 278 (shortcuts_insert_path): change the boolean return value into a 279 void one, also refilter the model and update the save folder combo 280 box for the non-asynchronous case, 281 (shortcuts_append_home), (shortcuts_append_desktop), 282 (shortcuts_add_volumes), (shortcuts_add_current_folder), 283 (add_shortcuts_get_info_cb): adapt to shortcuts_insert_path() updates. 284 2852005-12-19 Kristian Rietveld <kris@imendio.com> 286 287 * gtk/gtkpathbar.[ch]: add handle fields to ButtonData and 288 GtkPathBar; do correct handle bookkeeping. 289 290 * gtk/gtkfilesystemunix.c (load_folder), 291 (gtk_file_system_unix_get_folder), 292 (gtk_file_folder_unix_is_finished_loading): add is_finished_loading 293 field to GtkFileFolderUnix, which is set to true once we are 294 really finished with loading (previous assumption that we are 295 always finshed loading is not true anymore). 296 297 * gtk/gtkfilesystemmodel.c (got_root_folder_cb): if the folder is 298 finished loading, list the children and update the root level. 299 300 * gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb): 301 handle cancellation. 302 3032005-12-16 Kristian Rietveld <kris@imendio.com> 304 305 * gtk/gtkfilesystemunix.c: always call the callback, even when 306 cancelled; ref handles passed to the callback queue functions; 307 don't set cancelled to TRUE in _cancel_operation(), since operations 308 in this backend are always completed, 309 (get_special_icon_name): don't strdup the value of 310 get_icon_name_for_directory() again. 311 312 * gtk/gtkfilechooserbutton.c: adapt to new cancellation policy; 313 reference all objects which are passed as callback arguments; in the 314 callback check if the handles match. 315 316 * gtk/gtkfilechooserentry.c: likewise. 317 318 * gtk/gtkfilechooserdefault.c: likewise. Also changed the shortcut 319 loading code to be more like the code in GtkFileChooserButton, where 320 we store all handles in the model and have model_row_free_data 321 cancel any pending operations, 322 (shortcuts_model_create): copy the error. 323 324 * gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault): remove 325 loading_volumes and loading_bookmarks fields. 326 327 * gtk/gtkfilesystem.c (gtk_file_info_free): free icon_name here... 328 3292005-12-13 Kristian Rietveld <kris@imendio.com> 330 331 * gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): fix 332 thinko. 333 334 * gtk/gtkfilesystemunix.c (dispatch_create_folder_callback), 335 (queue_create_folder_callback): need to copy/free the path, 336 (gtk_file_system_unix_create_folder): put the "reget folder" hack 337 back in, though it's working different now. 338 3392005-12-13 Kristian Rietveld <kris@imendio.com> 340 341 * gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize), 342 (dnd_select_folder_get_info_cb), (gtk_file_chooser_drag_data_received), 343 (change_icon_theme_get_info_cb), (change_icon_theme), 344 (model_add_special_get_info_cb), (model_add_special), 345 (update_label_get_info_cb), (update_label_and_image): cancel existing 346 operations, if any; added apprioriate fields to 347 GtkFileChooserButtonPrivate. 348 3492005-12-13 Kristian Rietveld <kris@imendio.com> 350 351 * gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_finalize): if 352 there's a folder loading, cancel the operation, 353 (load_directory_get_folder_callback): set the loading folder handle 354 to NULL, 355 (load_directory_callback): cancel any currently loading folders 356 before starting a new get folder operation. 357 3582005-12-13 Kristian Rietveld <kris@imendio.com> 359 360 * gtk/gtkfilechooserdefault.c (shortcuts_insert_path): don't overwrite 361 data if it's already set (for example by the "is volume" case). 362 3632005-12-13 Kristian Rietveld <kris@imendio.com> 364 365 * gtk/gtkfilechooserbutton.c (set_info_get_info_cb), 366 (set_info_for_path_at_iter): store a row reference in the temporary 367 data structure and not an iter, 368 (model_add_special), (model_update_current_folder), 369 (gtk_file_chooser_button_add_shorcut_folder): remove unused pixbuf 370 variable. 371 3722005-12-13 Kristian Rietveld <kris@imendio.com> 373 374 * gtk/gtkfilechooserdefault.c (get_file_info_finished), 375 (shortcuts_insert_path): replace gtk_file_system_render_icon() call 376 with gtk_file_system_get_file_info(), 377 (gtk_file_chooser_default_add_shortcut_folder), 378 (gtk_file_chooser_default_remove_shortcut_folder): handle shortcuts 379 which are still loading. 380 381 * gtk/gtkfilechooserprivate.h: add shortcuts_loading field to 382 struct _GtkFileChooserDefault. 383 384 * gtk/gtkfilechooserbutton.c (set_info_get_info_cb), 385 (set_info_for_path_at_iter), (model_free_row_data): keep handle 386 and path together; now supports adding/removing shortcuts 387 which are still loading. 388 3892005-12-13 Kristian Rietveld <kris@imendio.com> 390 391 * gtk/gtkfilesystem.c: make the cancelled field an GObject property. 392 3932005-12-13 Kristian Rietveld <kris@imendio.com> 394 395 * gtk/gtkfilesystem.h: make the GError argument in the callbacks 396 const. 397 398 * gtk/gtkfilechooserbutton.c: update callbacks, 399 * gtk/gtkfilechooserentry.c: likewise, 400 * gtk/gtkfilechooserdefault.c: likewise, 401 * gtk/gtkfilesystemmodel.c: likewise, 402 * gtk/gtkpathbar.c: likewise. 403 404 * gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): copy 405 the error which will be passed to error_creating_folder_dialog(), 406 (action_create_folder_cb): likewise, 407 (file_list_drag_data_received_get_info_cb): add forgotten GError 408 declaration. 409 4102005-12-13 Kristian Rietveld <kris@imendio.com> 411 412 * gtk/gtkpathbar.c (get_button_image), (set_button_image), 413 (set_button_image_get_info_cb), 414 (gtk_path_bar_update_button_appearance): update to new icon 415 rendering call. 416 4172005-12-09 Kristian Rietveld <kris@imendio.com> 418 419 * gtk/gtkfilechooserdefault.c (file_list_drag_data_received), 420 (gtk_file_chooser_default_add_shortcut_folder), 421 (shortcuts_activate_get_info_cb): replace synchronous check_is_folder 422 calls with an async gtk_file_system_get_info() solution. 423 4242005-12-09 Kristian Rietveld <kris@imendio.com> 425 426 * gtk/gtkfilesystem.c (icon_cache_element_free), (icon_theme_changed), 427 (get_cached_icon), (gtk_file_info_render_icon): implement pixbuf 428 caching as found in the file system backends. 429 4302005-12-09 Kristian Rietveld <kris@imendio.com> 431 432 * gtk/gtk.symbols: updated. 433 434 * gtk/gtkfilesystem.[ch] (struct GtkFileInfo): added icon_name field, 435 (enum GtkFileInfoType): added GTK_FILE_INFO_ICON, 436 (gtk_file_info_set_icon_name): new function, 437 (gtk_file_info_render_icon): new function, 438 (gtk_file_system_render_icon): removed. 439 440 * gtk/gtkfilesystemunix.c (gtk_file_system_unix_render_icon): removed, 441 (create_file_info): fill icon_name field if required, 442 (get_*_icon): modified to suit create_file_info() better. 443 444 * gtk/gtkfilechooserbutton.c: modified to use 445 gtk_file_info_render_icon() instead of gtk_file_system_render_icon(). 446 447 * gtk/gtkfilechooserdefault.c: likewise. 448 4492005-12-06 Kristian Rietveld <kris@imendio.com> 450 451 * gtk/gtkfilechooserdefault.c (get_file_info_finished), 452 (update_current_folder_get_info_cb): fix mem leaks. 453 454 * gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): ditto. 455 456 * gtk/gtkpathbar.c (gtk_path_bar_set_path_finish): ditto. 457 4582005-12-06 Kristian Rietveld <kris@imendio.com> 459 460 * gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb), 461 (gtk_file_chooser_button_drag_data_received): make asynchronous, 462 (update_label_and_image): remove unused variable. 463 464 * gtk/gtkfilechooserdefault.c 465 (gtk_file_chooser_default_update_current_folder): split in two 466 functions, so we can have the is_folder check back. 467 * gtk/gtkfilechooserprivate.h: add update_current_folder_handle 468 field. 469 4702005-12-06 Kristian Rietveld <kris@imendio.com> 471 472 * gtk/gtkfilechooserdefault.c (show_and_select_paths): fixed a typo. 473 4742005-12-05 Federico Mena Quintero <federico@ximian.com> 475 476 (merge from HEAD) 477 478 * gtk/gtkfilechooserdefault.c (trap_activate_cb): "event->state & 479 modifiers", not "event->state && modifiers". Patch by Sadrul 480 Habib Chowdhury <imadil@gmail.com>. Fixes bug #323073. 481 4822005-12-06 Kristian Rietveld <kris@imendio.com> 483 484 Beginnings of an asynchronous file chooser. 485 486 * gtk/gtkfilechooserbutton.c: display name and the is folder property 487 are now asynchronously set using set_info_for_at_path_iter(), the 488 is folder property is now also stored in the tree model. 489 490 * gtk/gtkfilechooserdefault.c: lots of changes to the shortcuts 491 model code to make it operate asynchronously, check_is_folder() has 492 been "disabled" for now, all other synchronous calls were 493 replaced with asychronous ones. 494 495 * gtk/gtkfilechooserentry.c: update call to 496 gtk_file_system_get_folder(). 497 498 * gtk/gtkfilechooserprivate.h: added two fields. 499 500 * gtk/gtkfilesystem.[ch]: for about 85% changed to the changes 501 outlined in the proposal discussed on gtk-devel-list. 502 503 * gtk/gtkfilesystemmodel.[ch]: updated all asynchronous calls, 504 _gtk_file_system_model_path_do() basically had to be rewritten 505 (and I still need to finish that). 506 507 * gtk/gtkfilesystemunix.c: changed to be compatible with the new 508 GtkFileSystem interface. 509 510 * gtk/gtkpathbar.c (button_clicked_cb): block/unblock the 511 button_clicked_cb callback around the call to 512 gtk_toggle_button_set_active(), avoids button_clicked_cb getting 513 called twice. 514 (_gtk_path_bar_set_path): refactored to be asynchronous. 515