Permalink
Switch branches/tags
Nothing to show
Commits on Nov 10, 2013
  1. Merge latest changes from MyPaint HEAD

    davissorenson committed Nov 10, 2013
    Conflicts:
    	gui/drawwindow.py
Commits on Nov 9, 2013
  1. quick brush chooser: update sizing code

    achadwick committed Nov 9, 2013
    The dropdown can no longer rely on the history widget being big enough to
    bump it out to 4 brushes wide, so set a min size the GTK3 way.
  2. history: very basic brush & color hist panel

    achadwick committed Nov 9, 2013
    Add a very basic brush and colour history panel. I may split this up. Icon
    is just a placeholder for now.
  3. brush/color history: refactor

    achadwick committed Nov 9, 2013
    Factor out colour and brush history code to a separate module, and update
    the coding style a bit. GTK3 now for this part, and make the click
    notification more consistent between the widget classes.
Commits on Nov 4, 2013
  1. freehand: fix missing import

    achadwick committed Nov 4, 2013
Commits on Nov 1, 2013
  1. workspace: simplify fullscreen & maximized starts

    achadwick committed Nov 1, 2013
    If the window needs to be fullscreened or maximized at startup, just ask
    for it up front rather than deferring the request. Seems to work here for
    me in Xfce, anyway.
Commits on Oct 31, 2013
  1. Merge Dopey with MyPaint HEAD

    davissorenson committed Oct 31, 2013
Commits on Oct 30, 2013
  1. freehand: replace assertion with warning

    achadwick committed Oct 30, 2013
    The evhack checker assertion could be triggered by unfullscreening (depends
    on the exact timing, so it's hard to reproduce). Just warn about it instead
    of raising an assertion, and ignore the bad batch of evhack events.
  2. profiling: use xdg-open

    achadwick committed Oct 30, 2013
    Open the graphical output of gprof2dot.py with the user's default .png
    program via xdg-open, rather than a hardcoded feh.
  3. freehand: split out, add pressure/tilt interp

    achadwick committed Oct 30, 2013
    Split out freehand mode class: it's getting way too complex to keep around
    in the base module.
    
    Events gathered by the eventhack code do not have pressure or tilt
    information. Infer this information from surrounding motion-notify events
    using a cubic spline to ensure a smoother fit.
    
    Handle mouse button-releases as zero-pressure events for consistency, and
    explicitly handle transitions from zero to nonzero pressure and vice versa
    to avoid "hook" artefacts.
Commits on Oct 24, 2013
  1. freehand: rearrange some processing

    achadwick committed Oct 24, 2013
    Detect and fix zero-dtime events earlier in the chain than before. Move
    tilt and pressure fixups earlier too.
    
    The goal here is to enqueue only arrays of raw absolute floats that we can
    interpolate between nicely as needed.
  2. freehand: Split out per-TDW drawstate

    achadwick committed Oct 24, 2013
    Keep per-TDW drawing state together in a struct.
Commits on Oct 23, 2013
  1. eventhack: interpolate pressure and tilt axes

    achadwick committed Oct 22, 2013
    The eventhack code doesn't record pressure or tilt since that requires
    knowledge of the maxima and minima for their raw readings in order to be
    compatible with GDK's translated values. Such code would be fragile, so
    instead interpolate their values based on the detailed eventhack times and
    the time and axis values from the coarse events that make it through GDK's
    motion compression.
    
    Move pressure and tilt faking and sanity checking up front, since we now
    interpolate using the sanitized values from this phase.
  2. eventhack: acquire GIL, bump data tuple refcount

    achadwick committed Oct 21, 2013
    Ubuntu 13.10 (and maybe other systems) require the GIL to be held during
    then event filter, so wrap the filter in the appropriate calls. Not
    required for all systems, but it's good practice to do this given that the
    filter uses Python API calls outside the scope of the Python interpreter,
    where execution may or may not be threaded. Fixes a segfault on affected
    systems.
    
    http://docs.python.org/2/c-api/init.html#non-python-created-threads
    
    Also bump the data tuple's refcount for the duration of the filter's
    operation, if the display type is supported. Technically not needed given
    the framework in which it's called, but will be safer in case of error.
  3. input events: add event filter to improve capture

    achadwick committed Oct 20, 2013
    Add an experimental GDK event filter to capture events before GDK itself
    can motion-compress them and thus break our drawing accuracy. See
    
    https://gna.org/bugs/?21003
    https://gna.org/bugs/?20822
    https://bugzilla.gnome.org/show_bug.cgi?id=702392
    
    Good coding practice dictates that we don't try to do too much inside this
    fairly horrid little hack, so we only queue the pointer position and the
    timestamp. For all the events GDK 3.8+ drops on the floor during a frame
    clock cycle (which the filter now captures), we use the tilt and pressure
    info from the event on the event that did make it through. Interpolating
    would be better.
    
    Before: 50-60 events/second for all devices.
    After: 200 events/second with an Intuos 5. 80 with a touchpad.
    
    This hack only works on X11 platforms right now
  4. canvasevent: per-tdw state, simplify queue API

    achadwick committed Oct 20, 2013
    Make last-event times and had-pressure flags per-TDW instead of cross-TDW.
    Events may theoretically arrive on any drawing widget.
    
    Remove the need to pass devices around: we now detect device changes in the
    direct event handler.
Commits on Oct 20, 2013
  1. Merge Dopey with MyPaint HEAD

    davissorenson committed Oct 20, 2013
  2. fill: fix mem leaks, add debugging checks

    achadwick committed Oct 20, 2013
    The fill routine was being way too lax about reference counts.
Commits on Oct 17, 2013
  1. topbar: fix styling in some themes

    achadwick committed Oct 17, 2013
    Rework the way the menu button repacks, raiding git for the old "window
    sandwich" approach and modernizing its code. No custom class assignment
    during repacks now because things look too weird if we do: borders on
    toolbar buttons and other ugliness.
    
    Tested in: Numix, Orion, Albatross, Adwaita, Clearlooks, Mediterranean
    Night, Greybird, Zukitwo. All as of 2013-10-17 under GTK 3.8.
    
    Add test code for the topbar. No API changes.
Commits on Oct 13, 2013
  1. Merge MyPaint HEAD

    davissorenson committed Oct 13, 2013
    Conflicts:
    	gui/drawwindow.py
Commits on Oct 11, 2013
  1. lib: Fix wrong checking of bounding box in end_atomic()

    jonnor committed Oct 11, 2013
    Introduced in previous commit
  2. lib: Use return value of TiledSurface::end_atomic() instead of callin…

    jonnor committed Oct 11, 2013
    …g Python from inside
    
    Lets us get rid of custom begin/end_atomic handlers.
    Side-effect: if manipulating the surface directly from C/C++,
    the observers in Python will no longer be fired.
  3. brushlib: OperationQueue only updated dirty tiles on Fifo

    jonnor committed Oct 11, 2013
    Causes problems if not recreating Fifo's when they have been emptied.
    Never happens during current MyPaint usage though.
Commits on Oct 10, 2013
  1. hcywheel: fix gamuts in New not showing

    achadwick committed Oct 10, 2013
    Should really centralize masks the same way as we've centralized the
    palette, I guess.
  2. Fix incorrect path for palettes on first run

    achadwick committed Oct 10, 2013
    Fix an "No such file or directory: u'./palettes/MyPaint_Default.gpl'"
    exception when installing fully. MyPaint wasn't communicating its palette
    search path correctly to its color record-keeper component after creating a
    new-style config tree on its first run. This was only happening when
    running the first time from somewhere other than the build tree.
    
    Compounding the error, running from the build tree just one time somewhat
    unhelpfully makes this error message go away by loading the default palette
    from the file in the build tree, where the default value happens to be the
    right path. This sequence of events conspires to hide the underlying fault
    from testers and developers in subsequent runs.
    
    Fixed by making the parameters to ColorManager mandatory (since then
    failure to supply useful args will result in a more identifiable
    exception).
    
    Thanks to deevad for the good spot here: https://gna.org/bugs/?21184
  3. feedback: turn off zoom overlay by default

    achadwick committed Oct 10, 2013
    The zoom overlay is cute, but it's a somewhat unnecessary distraction,
    especially in fullscreen. Could reinvent it as a fullscreen-only option,
    along with a way of showing other info currently displayed via the footer/
    statusbar.
  4. footer bar: add scale/rotation, add options button

    achadwick committed Oct 10, 2013
    Add a label showing the main view's scale and rotation to the footer bar.
    
    Add an button to the footer near the mode icon to show the current options
    panel.