1. 23 Dec, 2012 1 commit
    • Kai Willadsen's avatar
      Pack FileDiff file selectors into a box to allow for future replacement · 85011d5c
      Kai Willadsen authored
      Different file selectors (i.e., history based or similar) will need a
      different selector, but repacking things in the table is messy, and
      plays havoc with keeping consistent column sizing. This commit adds
      currently-unused HBoxes around the file selectors, and sticks them in
      a size group to ensure that we get consistent column sizes.
      85011d5c
  2. 21 Dec, 2012 1 commit
    • Kai Willadsen's avatar
      Fix recent focus pane mishap · eaa704bf
      Kai Willadsen authored
      Unsetting the focus pane sounds like the right thing to do, but it
      breaks our Find bar. For find-like operations, performing the action on
      the most recently focused pane seems like the right thing to do.
      eaa704bf
  3. 16 Dec, 2012 2 commits
    • Kai Willadsen's avatar
      Add recently-used comparison support (closes bgo#652747) · 0fccdabd
      Kai Willadsen authored
      The recent-files API provided by GTK+ doesn't actually work for Meld
      out-of-the-box, because instead of storing individual files, we need to
      stored multiple linked files. In other words, we need to store a
      comparison, not a file.
      
      This commit adds support for reading and writing a simple comparison
      record format with a new Meld-specific mime-type. These files are
      stored under the user data directory, and are managed by the new
      'recent' module. Meld creates these files for new top-level
      comparisons and inserts them into the recently-used store as proxies
      for the actual file tuples.
      
      Note that we deliberately avoid recording as recently-used comparisons
      that are invoked from other comparisons; a user may open ten quick
      file comparisons from a single VC comparison, but they probably don't
      actually want to re-open those from the recent files menu.
      
      There is also support for opening comparison files from the command
      line. This was added so that recent comparisons can be opened from the
      desktop recent files menu, but can also be used to manually open
      specified comparisons.
      0fccdabd
    • Kai Willadsen's avatar
      Fix some sensitivity handling issues (closes rhbz#835883, rhbz#806489) · b831bb7e
      Kai Willadsen authored
      Sensitivity was not being correctly set in cases where no comparison
      pane was focused. This patch corrects two cases: chunk actions when the
      focus pane becomes unset, and merge actions when the focus pane becomes
      unset.
      b831bb7e
  4. 11 Dec, 2012 1 commit
  5. 08 Dec, 2012 2 commits
  6. 29 Nov, 2012 7 commits
  7. 17 Nov, 2012 1 commit
  8. 10 Nov, 2012 1 commit
  9. 17 Oct, 2012 3 commits
  10. 14 Oct, 2012 4 commits
    • Kai Willadsen's avatar
      Track cross-TextBuffer changes to check TextIter validity · 13897f8b
      Kai Willadsen authored
      In our async callbacks for updating inline highlighting, we have no
      guarantee that the TextIters passed in are still valid. One option
      would be to use TextMarks instead, but this isn't actually what we want;
      we actually want the TextIters to invalidate, and not highlight when
      they're not valid.
      
      Since GTK+ doesn't expose a check for the validity of TextIters, we
      reproduce a dodgy version here. We keep a counter of changes to all
      TextBuffers, and check that the counters match in the highlighting
      callback.
      13897f8b
    • Kai Willadsen's avatar
      Add multiprocessing-based inline diff comparisons · 5e02ad1c
      Kai Willadsen authored
      This commit introduces a simple multi-process worker model for
      calculating inter-chunk differences for inline highlighting purposes.
      The result is significantly better responsiveness, and an overall
      performance boost for any system with multiple processors.
      5e02ad1c
    • Kai Willadsen's avatar
      Identify changed chunks in comparison updates and use when highlighting · aa615a29
      Kai Willadsen authored
      With this change, we now identify which chunks in an existing
      comparison are changed by a comparison update. This information is
      then passed on to the inline highlighting updater and used to only
      re-highlight changed regions of our text buffers.
      
      As a result of these changes, we now also avoid manually updating
      highlighting and instead simply perform highlighting in a callback.
      aa615a29
    • Kai Willadsen's avatar
      Add new statusbar class supporting per-view information areas · 48c3e1d1
      Kai Willadsen authored
      The new MeldStatusBar subclasses gtk.Statusbar, mucking with internal
      packing and the like to provide better behaviour for Meld. The
      progressbar has been changed to use pulse mode exclusively (we never
      used anything else) and progress text is now shown in the progress bar.
      The space on the right of the statusbar is now an 'information area'
      that individual pages fill themselves.
      
      data/ui/meldapp.ui: Remove old Statusbars, and create our custom one
      meld/dirdiff.py: Adapt to new API
      meld/filediff.py: Adapt to new API
      meld/ui/statusbar.py: New file for MeldStatusBar class
      meld/ui/gladesupport.py: Support UIBuilder construction
      meld/meldapp.py: Absorb some on_idle logic into the new status bar
      meld/melddoc.py: Remove the 'status-changed' signal and provide a
                       harness for individual page status areas
      48c3e1d1
  11. 02 Oct, 2012 2 commits
    • Kai Willadsen's avatar
      Add comments for future fixes · 3f44a3e8
      Kai Willadsen authored
      Comments taken from Stephan Hilb's comment in bug 683534.
      3f44a3e8
    • Stephan Hilb's avatar
      Check for modifier keysyms only on first level (closes bgo#683534) · 72b9ff55
      Stephan Hilb authored
      There is a problem when checking for keypress/release events on
      modifier keys as they do not necessarily have the modifier keysym
      on that level as expected (see bugs #683534 and #584342).
      By checking for the keysym on the first level (and thereby assuming
      a modifier key has its appropriate keysym set on the first level)
      we can gracefully circumvent this problem.
      
      This might not be the ideal solution, but considering there is no
      good way to retrieve the current modifier state in PyGTK it is at
      least better than previously.
      The ugly workaround for #584342 is thereby obsolete.
      
      We use translate_keyboard_state method instead of lookup_key, as
      the latter one returns wrong values in some cases with multiple
      layouts.
      72b9ff55
  12. 24 Sep, 2012 4 commits
  13. 04 Sep, 2012 2 commits
  14. 30 Aug, 2012 2 commits
  15. 27 Aug, 2012 1 commit
    • Kai Willadsen's avatar
      Disconnect filter signals for removed tabs (closes bgo#681422) · 8b630abf
      Kai Willadsen authored
      When removing a tab, we weren't disconnecting the various 'filter
      changed' signals on the app. With these tabs not properly unrefed, the
      signals would continue to fire after the widget tree had already been
      destroyed, causing tracebacks and badness.
      
      This patch adds cleanup of these app-level signals to the delete events
      of individual DirDiff and FileDiff tabs.
      8b630abf
  16. 13 Jul, 2012 2 commits
  17. 11 Jun, 2012 1 commit
    • Kai Willadsen's avatar
      Rework existing exception usage to 2.6+ except-as syntax · a61982ff
      Kai Willadsen authored
      Since the PEP 3110 changes to the exception syntax are supported under
      Python 2.6 and later, we can now change over to using the new-style
      "except Foo as e" syntax. This improves clarity, and is one less thing
      to fix in a 3.0 future.
      a61982ff
  18. 20 May, 2012 1 commit
    • Piotr Piastucki's avatar
      Inline highlighting performance improvements · f387feb5
      Piotr Piastucki authored
      The default preprocessing in MyersSequenceMatcher removes all items
      that do not appear in the other file. It works pretty well for lines
      which are long and unique. However, it fails for character-based
      matching, as both files usually use the same alphabet.
      
      This patch adds a new matcher class called InlineMyersSequenceMatcher
      which provides additional optimization based on the assumption that a
      single character-based chunk must be at least 3 characters long.
      f387feb5
  19. 05 May, 2012 2 commits