1. 15 Oct, 2009 14 commits
    • Benjamin Otte's avatar
      Convert recent files to a GtkFileSystemModel · 53a00e3c
      Benjamin Otte authored
      This does to the recent files what the last commit did to the search. It
      uses a GtkFileSystemModel and its API niceties to show the recent files.
      53a00e3c
    • Benjamin Otte's avatar
      Convert search to use a GtkFileSystemModel · 5a31dfd6
      Benjamin Otte authored
      Replace the list model code with the file system model and use all the
      file system model API niceties we get from that.
      Also adds the function _gtk_file_system_model_add_and_query_file() which
      g_file_query_info()'s the file before adding it, so it gets added with
      the right information.
      5a31dfd6
    • Benjamin Otte's avatar
    • Benjamin Otte's avatar
      Add a constructor to filesystem model that does not monitor a directory · affa8c84
      Benjamin Otte authored
      This is in preparation for switching search and recent models to use
      GtkFileSystemModel
      affa8c84
    • Benjamin Otte's avatar
      Make the filesystem model filter API use a GtkFileFilter · 10e8d6ab
      Benjamin Otte authored
      This gets rid of the vfunc API and does exactly what the file chooser
      wants.
      10e8d6ab
    • Benjamin Otte's avatar
      Only query the absolutely necessary attributes · cd337e2a
      Benjamin Otte authored
      Since the time taken by g_file_enumerate_children() depends a lot on the
      attributes that are queried, we query the minimum attributes that need
      to be queired to display the file chooser.
      
      In particular, the attributes for loading the icon are ignored, as icons
      are loaded on demand (see previous commit).
      cd337e2a
    • Benjamin Otte's avatar
      Load icons on-demand · 4a1ff323
      Benjamin Otte authored
      Because loading icons takes a noticable performance, this code loads the
      pixbuf on demand and only loads icons for rows that are visible. There
      is a few caveats to this:
      - The pixbuf cell renderer must report the proer size even if the icon
        is not yet loaded. This is achieved by setting a fixed size.
      - On theme changes the cahced pixbufs and the cell renderer must be
        updated to conform to the new theme.
      4a1ff323
    • Benjamin Otte's avatar
      Use the GtkTreeSortable of the filesystem model · 105e6fbc
      Benjamin Otte authored
      Previously, there was a GtkTreeSortModel wrapped around the filesystem
      model to make it sortable. As the new implementation implements the
      GtkTreeSortable interface, we can use this instead.
      105e6fbc
    • Benjamin Otte's avatar
      Clean up code to use the model directly · 3e385ffd
      Benjamin Otte authored
      A lot of code special cases accesses to the tree view for the different
      browse modes, which was previously necessary, because the models were
      different. Now that they are identical in the first columns, there is no
      such need anymore, and the functions don't need to be special cased.
      3e385ffd
    • Benjamin Otte's avatar
      Replace the cell data computations · 30c1a1ee
      Benjamin Otte authored
      Previously custom functions were used to compute the data passed to the
      cell renderers. Now that all this data is saved by the tree models with
      compatible nodes, the usual default attribute-to-column mapping can be
      used.
      With this, caching of the values can happen in the tree model, which
      avoids costly lookups of icons or computation of strings. Last but not
      least it avoids spurious bugs that could happen when strings changed
      without anyone noticing, like the mtime when a new day begins.
      30c1a1ee
    • Benjamin Otte's avatar
      Consolidate tree models for different browse modes · a5390ad4
      Benjamin Otte authored
      All tree models in browse mode now share the first 10 column types
      containing all the necessary information to display the model on screen.
      Therefor it is now easy to just operate on the tree model associated
      with the file tree view and in most cases it isn't necessary anymore to
      special case the browse modes.
      a5390ad4
    • Benjamin Otte's avatar
      d6f3d0e7
    • Benjamin Otte's avatar
      Creating the model no longer fails · 0ccb2f24
      Benjamin Otte authored
      So remove the code that checked for failure, as it's not needed anymore.
      0ccb2f24
    • Benjamin Otte's avatar
      Implement new GtkFileSystemModel · 18b56b99
      Benjamin Otte authored
      The new model is mostly API-compatible with the old model (minimal
      changes were required), but is a lot faster and has a lot of very
      desirable features.
      - the model does no longer support a tree, just a list of files in a
        given directory
      - the storage has been moved to a GArray as opposed to a tree
      - no more dependency on GtkFileSystem
      - columns are managed by the creator of the model, so any number of
        nodes can be added as needed. This also makes the API more similar
        to GtkListStore.
      - Values are filled on demand using a function given when creating the
        model.
      - The function can decide to let the model cache returned values or
        decide to be called again the next time the value is queried.
      - implements GtkTreeSortable
      - _gtk_file_system_model_get_value() was added to significantly speed
        up value access, which is necessary when sorting large models.
      18b56b99
  2. 30 Aug, 2009 1 commit
  3. 06 Aug, 2009 1 commit
  4. 30 Jul, 2009 2 commits
  5. 28 Jul, 2009 3 commits
  6. 20 Jul, 2009 2 commits
  7. 15 Jul, 2009 1 commit
    • Matthias Clasen's avatar
      Add a tooltip to the save folder combo · 143b55c3
      Matthias Clasen authored
      Add a tooltip that shows the full path of the current folder, to avoid
      ambiguity. We only show the tooltip when the expander is collapsed to
      avoid cluttering the full file chooser.
      143b55c3
  8. 27 Jun, 2009 3 commits
  9. 22 Jun, 2009 1 commit
  10. 19 Jun, 2009 1 commit
  11. 18 Jun, 2009 1 commit
  12. 16 Jun, 2009 1 commit
  13. 12 Jun, 2009 6 commits
  14. 11 Jun, 2009 1 commit
  15. 05 Jun, 2009 1 commit
  16. 15 May, 2009 1 commit