5 years agoversion bump v1.1.0-rc1
Martin Renold [Sun, 23 Dec 2012 16:59:16 +0000 (17:59 +0100)]
version bump

5 years agobrushlib: fix tile_map bug
Martin Renold [Sat, 22 Dec 2012 21:09:17 +0000 (22:09 +0100)]
brushlib: fix tile_map bug

Fix off-by-one bug in tile_map_copy_to(), causing not all queued
operations to be copied when resizing the tilemap.

5 years agobrushlib: add HEAVY_DEBUG for operationqueue.c
Martin Renold [Sat, 22 Dec 2012 20:48:36 +0000 (21:48 +0100)]
brushlib: add HEAVY_DEBUG for operationqueue.c

When MyPaint is compiled with "scons debug=1" now, the operationqueue.c
bug ( is a lot easier to reproduce.

5 years agolib: remove unused tile cache
Martin Renold [Sat, 22 Dec 2012 20:15:59 +0000 (21:15 +0100)]
lib: remove unused tile cache

The new brushlib code doesn't ask several times for the same tile, and
more thus the old tile cache is no longer effective: it did always miss.

5 years agodrawwindow: re-fix Escape fullscreen regression
Andrew Chadwick [Thu, 20 Dec 2012 18:42:38 +0000 (18:42 +0000)]
drawwindow: re-fix Escape fullscreen regression

It's probably better to handle the fullscreen-exiting part of pressing
Escape by queueing an unfullscreen() before the active mode handles the
keypress. Since 5cbfc867 active modes handle the keypresses fully by
default to prevent space-activated widgets from activating if they have
focus; however this broke 5d100ff's fix because the connect_after()
callbacks didn't then run.

5 years agogrey16 palette: was not actually 16 colors
Andrew Chadwick [Wed, 19 Dec 2012 02:42:48 +0000 (02:42 +0000)]
grey16 palette: was not actually 16 colors

Fix a silly off-by-one error. Also hits the "web-safe" greys now.

5 years agotablet detection: add uc-logic to whitelist
Martin Renold [Tue, 18 Dec 2012 19:43:31 +0000 (20:43 +0100)]
tablet detection: add uc-logic to whitelist

reports as "UC-LOGIC TWA60"

5 years agoBrazilian Portuguese translation
Joao S. O. Bueno [Tue, 18 Dec 2012 19:33:01 +0000 (20:33 +0100)]
Brazilian Portuguese translation

5 years agoupdate zh_TW translation
Cheng-Chia Tseng [Tue, 18 Dec 2012 19:13:00 +0000 (20:13 +0100)]
update zh_TW translation

5 years agobrushlib: increase radius limit
Martin Renold [Tue, 18 Dec 2012 18:56:29 +0000 (19:56 +0100)]
brushlib: increase radius limit

CPUs are getting faster. This doubles the number of pixels that can
be affected by a dab. We still can't go too high until we have a way to
abort, or at least blocking the GUI for more than a minute.

5 years agoi18n: scons translate=pt_BR.po
Martin Renold [Mon, 17 Dec 2012 20:28:24 +0000 (21:28 +0100)]
i18n: scons translate=pt_BR.po

No changes to the actual translation made.

5 years agoi18n: update Italian translation
Lamberto Tedaldi [Mon, 17 Dec 2012 20:07:29 +0000 (21:07 +0100)]
i18n: update Italian translation

5 years agoUpdate brushlib es.po translation
Manuel Quiñones [Sun, 16 Dec 2012 14:28:17 +0000 (11:28 -0300)]
Update brushlib es.po translation

Signed-off-by: Manuel Quiñones <>
5 years agoes.po complete translation
Manuel Quiñones [Sun, 16 Dec 2012 14:22:25 +0000 (11:22 -0300)]
es.po complete translation

Signed-off-by: Manuel Quiñones <>
5 years agoRussian translation updated.
Ilya Portnov [Thu, 13 Dec 2012 17:09:16 +0000 (23:09 +0600)]
Russian translation updated.

Review would be nice :)

5 years agobrushlib: clear bbox in m.t.s._begin_atomic()
Andrew Chadwick [Mon, 17 Dec 2012 19:46:04 +0000 (19:46 +0000)]
brushlib: clear bbox in m.t.s._begin_atomic()

Fix unnecessarily large and frequent screen redraws in MyPaint:
dirty_bbox should not accumulate across multiple brushstrokes.

5 years agotiledsurface: return dirtied bbox in end_atomic()
Andrew Chadwick [Mon, 17 Dec 2012 19:40:28 +0000 (19:40 +0000)]
tiledsurface: return dirtied bbox in end_atomic()

Return the dirtied bbox of an atomic tile access section to Python code
as a 4-element tuple. Handy for debugging, but unused right now. It
gives us an alternative method for performing screen updates later if we
want to rewrite that, and more closely refects the brushlib API.

5 years agobrushlib: Mark functions in tiled-surface where thread-safety applies
Jon Nordby [Sun, 16 Dec 2012 09:43:28 +0000 (10:43 +0100)]
brushlib: Mark functions in tiled-surface where thread-safety applies

Also unneeded MyPaintTiledSurface argument to process_op.

5 years agobuild: another attempt to fix on gentoo
Martin Renold [Sun, 16 Dec 2012 09:04:48 +0000 (10:04 +0100)]
build: another attempt to fix on gentoo

5 years agoi18n: Brazilian Portuguese translation
Joao S. O. Bueno [Sat, 15 Dec 2012 19:00:34 +0000 (20:00 +0100)]
i18n: Brazilian Portuguese translation

5 years agobuild: add python_binary=xxx scons option
Martin Renold [Sat, 15 Dec 2012 08:13:06 +0000 (09:13 +0100)]
build: add python_binary=xxx scons option

debian: python2.7
gentoo: python-2.7
Not sure how to auto-guess those.

5 years agofix scons problems with old files lying around
Martin Renold [Sat, 15 Dec 2012 05:41:59 +0000 (06:41 +0100)]
fix scons problems with old files lying around

This fixes a bug where strokes were not updated on canvas until the
canvas was moved - of course, only if you had old .so files lying
around. Users had to solve this with "git clean -xf" before.

(Ideally, old .so files shouldn't be used even if they are there.)

Clean up more old cruft when running "scons -c".

Problem was reported here for example:
I could reproduce that by building many old versions, and then master.

5 years agobrushlib i18n build: glob pattern
Martin Renold [Fri, 14 Dec 2012 18:50:48 +0000 (19:50 +0100)]
brushlib i18n build: glob pattern

I guess the previous one was bash specific.

5 years agocursors: less obtrusive defaults; now configurable
Andrew Chadwick [Fri, 14 Dec 2012 00:13:06 +0000 (00:13 +0000)]
cursors: less obtrusive defaults; now configurable

Following forum discussions, make the cursors far less obtrusive by
default, but configurable in most aspects. Currently the only
configuration is by hidden options in settings.json:

cursor.freehand.min_size - integer minimum circle size
cursor.freehand.outer_line_width - floating-point line width
cursor.freehand.inner_line_width - floating-point line width
cursor.freehand.inner_line_inset - integer inset, circle outmost edge to inmost
cursor.freehand.outer_line_color - RGBA tuple of floats
cursor.freehand.inner_line_color - RGBA tuple of floats

5 years agocursors: make a bit thinner; bugfix
Andrew Chadwick [Thu, 13 Dec 2012 17:30:59 +0000 (17:30 +0000)]
cursors: make a bit thinner; bugfix

Following user feedback (the first of lots, I'm sure! - please tell us
if you have an opinion on this), make the cursor thinner and don't vary
it in line width by size. Smaller alpha shadow too, although that
shouldn't be too obtrusive.

Related bugfix: decide what counts as a "big" screen based on monitor
rather than screen dimensions: this will be better for multihead. "Big"
now means 1920px or greater.

5 years agocursors: freehand brush cursor updates
Andrew Chadwick [Sat, 8 Dec 2012 04:11:13 +0000 (04:11 +0000)]
cursors: freehand brush cursor updates

Introduce a new cursor style for the Colorize brush blend mode.

Use Cairo-drawn RGBA cursors in PyGTK/gtk2. Most displays will be
capable of this now, and even gtk2 will use a fallback if it can't.
Removes the need to maintain gtk3 code as a separate code path (mostly)

Slightly fatter and bolder than before, but hopefully in keeping with
both the old ones and the newer DMZ cursors used elsewhere. Hopefully
this will keep Windows users who can't see small cursors happy. We can
tweak the minimum size or the line widths if people still complain they
can't make out the cursors, or make a "chunky cursors" prefs option if

5 years agobrush popup: fix accidental dabs with stylus
Andrew Chadwick [Wed, 12 Dec 2012 01:50:32 +0000 (01:50 +0000)]
brush popup: fix accidental dabs with stylus

Fix another stylus-only annoyance: accidental dabs after choosing a
brush from the quick brush chooser popup. Doing the accept on pointer-up
avoids this. Seems not to happen with the mouse, at least with Xfce 4.8.

5 years agobrush popup: save & load default size
Andrew Chadwick [Wed, 12 Dec 2012 01:48:05 +0000 (01:48 +0000)]
brush popup: save & load default size

Save and restore the default size for the quick brush chooser dialog.
Use a slightly smaller minimum size to make it a bit more flexible.

5 years agobrushlib: Fix two memory leaks
Jon Nordby [Wed, 12 Dec 2012 00:07:41 +0000 (01:07 +0100)]
brushlib: Fix two memory leaks

Just missing free() calls. Also set all members of Operations queue
to NULL when freed for consistency.
tests/ repeated_loading and document_alloc
now show no leaks on my system.

5 years agoAdd a note for translators on how to get the original strings
Manuel Quiñones [Mon, 10 Dec 2012 21:16:20 +0000 (18:16 -0300)]
Add a note for translators on how to get the original strings

Signed-off-by: Manuel Quiñones <>
5 years agogtk3: various minor fixes
Andrew Chadwick [Tue, 11 Dec 2012 00:26:21 +0000 (00:26 +0000)]
gtk3: various minor fixes

Clean up a few new GTK3 exeptions.

5 years agoTry to avoid annoying "note: expected ‘struct OperationQueue *" from compiler
Jon Nordby [Mon, 10 Dec 2012 21:42:23 +0000 (22:42 +0100)]
Try to avoid annoying "note: expected ‘struct OperationQueue *" from compiler

struct _OperationQueue matches how the typedef is inside operationqueue.c
If this does not work, probably need to use PIMPL pattern :/

5 years agoi18n: es.po fix msgfmt errors
Martin Renold [Mon, 10 Dec 2012 20:37:34 +0000 (21:37 +0100)]
i18n: es.po fix msgfmt errors

Newline differences, leading to "scons" failure.
Also fix the 3 tooltips, while I'm at it (not tested).

5 years agoUpdate Spanish translation
Manuel Quiñones [Sat, 8 Dec 2012 22:47:14 +0000 (19:47 -0300)]
Update Spanish translation

Signed-off-by: Manuel Quiñones <>
5 years agocolor picker: grab fix: destroy window after use
Andrew Chadwick [Mon, 10 Dec 2012 19:52:23 +0000 (19:52 +0000)]
color picker: grab fix: destroy window after use

It seems the spurious and stylus-specific grab that was hanging around
after colour picking is cured by destroying the popup window after the
pick is done.

Refactor color picker to create its window for the duration of the pick,
destroying it afterwards. Reenable its normal call in the canvasevent

There are still some cases when stylus-specific grabs persist after the
picker is done, but the situation is now much more managable for users
aassuming they don't want to pick outside the drawWindow or in the
palette window or something. I suspect these are now in the domain of
actual GTK (or WM) bugs, and hopefully fixable when we migrate to GTK3.

5 years agoi18n: translation update for fr and zh_CN
Popolon [Mon, 10 Dec 2012 20:01:12 +0000 (21:01 +0100)]
i18n: translation update for fr and zh_CN

5 years agoi18n: fix brushlib strings that contain newlines
Martin Renold [Mon, 10 Dec 2012 19:01:01 +0000 (20:01 +0100)]
i18n: fix brushlib strings that contain newlines

The problem was that brushlib did remove newlines.

5 years agoi18n: fix Italian translation
Martin Renold [Mon, 10 Dec 2012 18:32:13 +0000 (19:32 +0100)]
i18n: fix Italian translation

Convert 3 tooltip strings to new format.

5 years agoi18n: Italian translation
Lamberto Tedaldi [Mon, 10 Dec 2012 18:25:33 +0000 (19:25 +0100)]
i18n: Italian translation

5 years agoi18n: really fix untranslatable tooltips
Martin Renold [Mon, 10 Dec 2012 18:21:39 +0000 (19:21 +0100)]
i18n: really fix untranslatable tooltips

Looks like I forgot to test the fix attempt in b7e564ec3a.

5 years agoBuild: Fix static linking order in _mypaintlib Python module
Jon Nordby [Sun, 9 Dec 2012 22:43:17 +0000 (23:43 +0100)]
Build: Fix static linking order in _mypaintlib Python module

Before the dependencies of libmypaint* (libm and libjson) where
at the beginning of the list and libmypaint* at the very back, with
deps of the _mypaintlib in the middle.
Easiest fix is to put libmypaint* at the front.

5 years agobrushlib: Remove duplicate typedefs
Jon Nordby [Sun, 9 Dec 2012 22:14:51 +0000 (23:14 +0100)]
brushlib: Remove duplicate typedefs

Causes compiler warnings/errors, depending on compiler settings.

5 years agocanvasevent: more grab error checking hacks
Andrew Chadwick [Sun, 9 Dec 2012 19:29:38 +0000 (19:29 +0000)]
canvasevent: more grab error checking hacks

Speculation and commentary mostly, but this seems necessary for handing
cases where the WM is unhelpfully intercepting input events for its own
purposes but lets them through to us anyway. Fix for an obscure lockup.

5 years agoBuild: Prepend -lmypaint... to -lm -ljson
Jon Nordby [Sun, 9 Dec 2012 19:52:24 +0000 (20:52 +0100)]
Build: Prepend -lmypaint... to -lm -ljson

libm and libjson are also available as static libraries, so order will
matter if the static lib is somehow preferred over the shared one.
Should fix build on Jenkins.

5 years agoBuild: Try to explicitly define order between -lmypaint-tests and -lmypaint
Jon Nordby [Sun, 9 Dec 2012 19:21:30 +0000 (20:21 +0100)]
Build: Try to explicitly define order between -lmypaint-tests and -lmypaint

5 years agoBuild: Remove extraneous pkg-config call
Jon Nordby [Sun, 9 Dec 2012 19:16:07 +0000 (20:16 +0100)]
Build: Remove extraneous pkg-config call

This information is passed through the environment.

5 years agocanvasevent: workaround color picker grab release
Andrew Chadwick [Sun, 9 Dec 2012 17:34:20 +0000 (17:34 +0000)]
canvasevent: workaround color picker grab release

Dispatch ColorPopupWindow as if it was launched from the menu if it was
actually invoked by [<Modifierss>+]ButtonN. This means you don't get
the popup window when picking unless you use the keyboard and hold the
key, but it avoids a fairly horrid _device specific_ grab release
problem that can't be addressed directly with PyGTK.

Binding to a pointer button is still possible, but because we no longer
grab you can't drag around to adjust the colour finely, and nor do you
get a preview. You just have to keep clicking.

Of note; at least one user has expressed aesthetic concerns about the
picker's appearance, and that they'd prefer not to see the picker at all
if it's distracting.

This workaround isn't intended to address that concern (sorry!) it's
just intended to create a system that doesn't lock users out of menus
and tool windows. Hopefully this will just be a temporary measure.

5 years agocolorpicker: better integrate with canvasevent
Andrew Chadwick [Sun, 9 Dec 2012 16:57:26 +0000 (16:57 +0000)]
colorpicker: better integrate with canvasevent

Some code love for the color picker:

* Remove hardcoded modifier keys stuff now it can be launched with any
  combination. It still does a "modifiers still held" test, so record
  which modifiers were held when the window appears.

* Both styles of grab fix different bugs, so do both. Other code adopts
  this strategy too.

* Split up the code flow into different event handlers a bit. Slight
  voodoo here, but ensuring the window is shown fully before grabbing
  ay be more correct.

Partly ameliorates by fixing the "first
launch does not update" problem with the stylus. The rogue grab for
second and subsequent stylus launches of the picker, which as far as I
can tell is device specific, is *not* fixed, but can at least now be
undone by drawing a stroke on the canvas.

5 years agobrushlib: Pass environments more consistenly into tests
Jon Nordby [Sun, 9 Dec 2012 18:46:25 +0000 (19:46 +0100)]
brushlib: Pass environments more consistenly into tests

An attempt to fix some build errors on Jenkins.

5 years agoBuild: Don't attempt to link against Python module
Jon Nordby [Sun, 9 Dec 2012 17:10:45 +0000 (18:10 +0100)]
Build: Don't attempt to link against Python module

Instead link libmypaint-test into the Py module, and provide a
function for running the test that can be called from Python,
and a wrapper .py script that does so.
This also means we don't have to embedd our own Python interpreter
into the executable.
Removes a non-portable symlink hack from the build system.

5 years agobrushlib/test: Add missing extern "C" declaration to header
Jon Nordby [Sun, 9 Dec 2012 17:09:35 +0000 (18:09 +0100)]
brushlib/test: Add missing extern "C" declaration to header

5 years agoBuild: Use position independent code also for static libs
Jon Nordby [Sun, 9 Dec 2012 17:07:35 +0000 (18:07 +0100)]
Build: Use position independent code also for static libs

Otherwise linking the (static) brushlib into the Python module fails.

5 years agobrushlib: Created static library by default
Jon Nordby [Tue, 9 Oct 2012 10:00:19 +0000 (12:00 +0200)]
brushlib: Created static library by default

GObject Introspection needs a shared lib, so if using
enable_introspection that is what will be built.

5 years agobrushlib: Another missing license header
Jon Nordby [Sun, 9 Dec 2012 10:14:14 +0000 (11:14 +0100)]
brushlib: Another missing license header

5 years agobrushlib: Add license headers where missing
Jon Nordby [Sun, 9 Dec 2012 01:49:34 +0000 (02:49 +0100)]
brushlib: Add license headers where missing

5 years agoPreliminary update of Russian translation
Alexandre Prokoudine [Sun, 9 Dec 2012 08:22:43 +0000 (12:22 +0400)]
Preliminary update of Russian translation

5 years agoi18n: fix untranslatable string
Martin Renold [Sun, 9 Dec 2012 07:53:37 +0000 (08:53 +0100)]
i18n: fix untranslatable string

5 years agoi18n: Korean translation
Geuntak Jeong [Sun, 9 Dec 2012 07:46:07 +0000 (08:46 +0100)]
i18n: Korean translation

5 years agobrushlib: Allow MYPAINT_TILE_SIZE to be set by buildsystem
Jon Nordby [Sat, 8 Dec 2012 22:15:40 +0000 (23:15 +0100)]
brushlib: Allow MYPAINT_TILE_SIZE to be set by buildsystem

Allows external consumers to potentially use another tile size
then the default 64x64.

5 years agobrushlib: Namespace the TILE_SIZE define as MYPAINT_TILE_SIZE
Jon Nordby [Sat, 8 Dec 2012 21:41:51 +0000 (22:41 +0100)]
brushlib: Namespace the TILE_SIZE define as MYPAINT_TILE_SIZE

And put it in mypaint-config.h so that external consumers can
use it.

5 years agobrushlib: Remove multiple definitions of TILE_SIZE
Jon Nordby [Sat, 8 Dec 2012 21:28:56 +0000 (22:28 +0100)]
brushlib: Remove multiple definitions of TILE_SIZE

Makes sure that these cannot drift out of sync with eachother.
Also use a variable on MyPaintTiledSurface instead of
a define where a preprocessor macro is not strictly neccesary.

5 years agobrushlib: Return changed bounding box though mypaint_surface_end_atomic()
Jon Nordby [Sat, 8 Dec 2012 16:34:10 +0000 (17:34 +0100)]
brushlib: Return changed bounding box though mypaint_surface_end_atomic()

This means there is a standard way of notified that happen to a surface
in the MyPaintSurface interface. MyPaintTiledSurface uses this so that
subclasses of it does not need to handle it, simplifying the code.

5 years agobrushlib: Fix resizing of operation queue causing line gaps
Jon Nordby [Sat, 8 Dec 2012 16:34:10 +0000 (17:34 +0100)]
brushlib: Fix resizing of operation queue causing line gaps

The previous code for copying the values in a tile map to a bigger
map during resize did not take into account that a tile
would be stored in a different position in the bigger map.
Thus when processing after a op queue resize, the dirty tile list
would point to wrong, empty queues. This caused gaps in drawn lines
the first time they exceeded the op queue size.

Sorry for big commit. Also makes all functions that have
to do with the tile map operate on a TileMap instead of OperationQueue.

5 years agobrushlib: Split out more code in operation queue that manipulates tile map
Jon Nordby [Sat, 8 Dec 2012 16:43:26 +0000 (17:43 +0100)]
brushlib: Split out more code in operation queue that manipulates tile map

Also marks the know issues the code has. Will be fixed shortly.

5 years agobrush list: revert double-click action
Andrew Chadwick [Sat, 8 Dec 2012 15:04:47 +0000 (15:04 +0000)]
brush list: revert double-click action

After testing it properly with a stylus: it didn't quite have the "feel"
I wanted. Felt right with the mouse, but with the stylus I found I was
doing accidental drags after double-clicks, and accidental double-clicks
during selection. Perhaps tablets "bounce" too much to make double-click
activation a good idea when other stuff is going on.

I think it should be possible to edit properties from the brush list,
but this doesn't look like the right way to do it.

5 years agoi18n: make frame window title translatable
Martin Renold [Sat, 8 Dec 2012 10:42:51 +0000 (11:42 +0100)]
i18n: make frame window title translatable

5 years agoi18n: make brushlib translations work without installing
Martin Renold [Sat, 8 Dec 2012 10:38:42 +0000 (11:38 +0100)]
i18n: make brushlib translations work without installing

5 years agoi18n: fix brushlib translations
Martin Renold [Sat, 8 Dec 2012 10:25:38 +0000 (11:25 +0100)]
i18n: fix brushlib translations

Brushlib translations were not displayed.
Works only when installed for now, but at least it works.

5 years agobrush list: fix drag&drop
Martin Renold [Fri, 7 Dec 2012 21:17:32 +0000 (22:17 +0100)]
brush list: fix drag&drop

reported via IRC

5 years agobrush list: make double click open brush editor
Andrew Chadwick [Fri, 7 Dec 2012 18:57:19 +0000 (18:57 +0000)]
brush list: make double click open brush editor

I'm finding myself double-clicking brushes in the brushlist more and
more in an attempt to change the brush settings. Let's make that happen.

5 years agofix expose events one-off errors
Martin Renold [Fri, 7 Dec 2012 16:11:01 +0000 (17:11 +0100)]
fix expose events one-off errors

I think it is correct now, even if proper anti-aliasing is added.
Still, I have left the 1 pixel safety margin.

5 years agofix inputtestwindow
Martin Renold [Thu, 6 Dec 2012 20:46:54 +0000 (21:46 +0100)]
fix inputtestwindow

Looks like we need to listen on two different widgets now to get both
motion and keyboard events. And we get proximity events for both of
them. A bit confusing. Report which widget reported the event.

5 years agobrushlib: fix last ascension step; comments
Andrew Chadwick [Thu, 6 Dec 2012 10:50:43 +0000 (10:50 +0000)]
brushlib: fix last ascension step; comments

Fix omission: do the last ascension step the same way as all the others.

Comment tweaks: remove incorrect statement; move description of time
interpolation closer to the relevant line.

5 years agocolor picker popup: use a pointer grab again
Andrew Chadwick [Thu, 6 Dec 2012 02:36:59 +0000 (02:36 +0000)]
color picker popup: use a pointer grab again

Fixes (on my system, tested in Xfce4 and Unity) two problems with the
color picker popup window:

- Picker popup doesn't disappear when using a modifier+pointer button to
  activate it

- Picker popup doesn't update continuously when the R key (or any other) is
  used to activate it.

Back and forth on using a pointer grab vs. a gtk grab, but this now
seems the better approach. Fingers crossed.

5 years agobrushlib: improve tilt ascension stepping
Andrew Chadwick [Thu, 6 Dec 2012 01:33:45 +0000 (01:33 +0000)]
brushlib: improve tilt ascension stepping

Perform tilt ascension interpolation steps in the direction of the
smallest angular difference between input event tilts. This removes some
ugly 360 degree twirls when passing from -180 to 180 or vv. This angle
can be hit much more easily with the recent canvas rotation compensation
code, so best we fix it.

Tested with faked tilt inputs only. Testing needed.

5 years agotablet detection: add eGalax TouchController
Martin Renold [Mon, 3 Dec 2012 20:23:45 +0000 (21:23 +0100)]
tablet detection: add eGalax TouchController

String reported: "eGalax Inc. USB TouchController"
Does have pressure, but might have the ghost-lines problem (Z lines).

5 years agoi18n: run scons translate=it
Martin Renold [Mon, 3 Dec 2012 18:56:13 +0000 (19:56 +0100)]
i18n: run scons translate=it

On request; no translation changed.

5 years agoi18n: fix 3 untranslatable tooltips
Martin Renold [Mon, 3 Dec 2012 18:52:20 +0000 (19:52 +0100)]
i18n: fix 3 untranslatable tooltips

Those inline comments don't seem to work.

5 years agoi18n: Italian translation update
Lamberto Tedaldi [Mon, 3 Dec 2012 18:38:40 +0000 (19:38 +0100)]
i18n: Italian translation update

5 years agopicker: use toplevels when gdk window is known
Andrew Chadwick [Sat, 1 Dec 2012 22:11:44 +0000 (22:11 +0000)]
picker: use toplevels when gdk window is known

Use the toplevel window when the user picks from a window that's known
to GDK. This may be more reliable than using the root window every time.

5 years agoremove some unused, commented-out stuff
Andrew Chadwick [Sat, 1 Dec 2012 22:10:09 +0000 (22:10 +0000)]
remove some unused, commented-out stuff

5 years agoUpdate zh_TW translation
Ruei-Yuan Lu [Fri, 30 Nov 2012 12:08:22 +0000 (20:08 +0800)]
Update zh_TW translation

5 years agodrag modes: exit the mode if grabs fail
Andrew Chadwick [Fri, 30 Nov 2012 13:01:21 +0000 (13:01 +0000)]
drag modes: exit the mode if grabs fail

Another attempt at fixing

Falling back to the mode's passive state is proving confusing and
potentially annoying. These conditions should be rare enough for popping
the mode stack to be a valid approach if grabs fail.

Code tidyups: less silly names for the start/stop methods. Ungrabbing
won't work because the conflicting grabs are evidently external to the
app, so remove that attempted workaround. Exclude double and triple
clicks from starting grabs (shouldn't be an issue, but we'll see).  The
keypress handler is now are now fully responsible for starting its drag,
so never start one in a motion handler and clean up test. Eat all motion
events in a grab.

5 years agolayer win: nicer toggling of visible & lock
Andrew Chadwick [Fri, 30 Nov 2012 01:56:04 +0000 (01:56 +0000)]
layer win: nicer toggling of visible & lock

Don't immediately scroll the layers list to the currently highlighted
row if the user just scrolled it to a far-away layer to toggle the
visibility or locked flags on that layer. This allows users to toggle
off a set of far-away layers more conveniently.

However the current layer should remain visible much of the time so
users don't get lost. Experimentally, automatically scroll the list back
to the highlighted layer after each stroke on the canvas, and also after
changing the current layer's opacity or mode inside the dialog. The idea
here is that if you change a layer, you get to see which layer just
changed in the layers list.

5 years agokeyboard events: do not propagate
Andrew Chadwick [Fri, 30 Nov 2012 00:46:14 +0000 (00:46 +0000)]
keyboard events: do not propagate

Fix regression: keyboard events no longer propagate by default. This was
causing some widgets to activate confusingly, giving the appearance of
hangs and nonresponsiveness to spacebar drags.

Derived class handler code is still responsible for declaring when an
event has been logically consumed, but the base class's fallthrough code
has been modified so that the default is to not propagate the event when
falling through to try other mixed-in behaviours.

5 years agoi18n: Add more Norwegian Bokmål translations
Jon Nordby [Fri, 30 Nov 2012 00:23:42 +0000 (01:23 +0100)]
i18n: Add more Norwegian Bokmål translations

5 years agorotate around window center
Martin Renold [Thu, 29 Nov 2012 20:56:06 +0000 (21:56 +0100)]
rotate around window center

Make keyboard rotation steps consistent with drag-rotation and
rotate around the window center in both cases.

Seems to work better for most users (ideally it would be configurable).

5 years agoi18n: Update Canadian English translation.
Elliott Sales de Andrade [Wed, 28 Nov 2012 06:11:23 +0000 (01:11 -0500)]
i18n: Update Canadian English translation.

5 years agoi18n: updated german translation
Till Hartmann [Thu, 29 Nov 2012 18:14:17 +0000 (19:14 +0100)]
i18n: updated german translation

5 years agoUpdated Swedish translation for MyPaint 1.1.
Griatch [Thu, 29 Nov 2012 15:32:40 +0000 (16:32 +0100)]
Updated Swedish translation for MyPaint 1.1.

5 years agoi18n: Update zh_TW translation
Dongjun Wu [Thu, 29 Nov 2012 19:46:47 +0000 (20:46 +0100)]
i18n: Update zh_TW translation

5 years agodragmode: various grab fixes
Andrew Chadwick [Thu, 29 Nov 2012 13:55:19 +0000 (13:55 +0000)]
dragmode: various grab fixes

Various grab fixes to address a couple of difficult to reproduce bugs
that result in sticky modes:

Working hypothesis is that this is something else in the user's desktop
session breaking the grab. Detect when that happens, and pop the mode
stack to avoid any question of never receiving the spacebar key-up.
Exiting the drag is probably better for users than leaving them stuck in
it with no option other than batting keys. Add some detailed debugging
printout when drag grabs are broken by something.

Working hypothesis is that this a race condition against some other grab
of the same app, probably an implict grab belonging to a colour
selector. Attempt to fix it by rather assertively ungrabbing before
trying the newly active dragmode's grabs. Also, be insistent that a
complete grab has happened before really starting the drag. Failing safe
is better than failing sticky and forcing users to escape out.

Minor fixes: work around a "self.doc is None" exception under unclear
circumstances, and ignore random accidental button presses - presumably
other buttons - while in a drag.

5 years agocanvasevent: fix exception: freehand flipped on
Andrew Chadwick [Thu, 29 Nov 2012 13:53:00 +0000 (13:53 +0000)]
canvasevent: fix exception: freehand flipped on

Fix an exception when freehand mode is entered using a flip action.

5 years agocursor: finer crosshair
Andrew Chadwick [Thu, 29 Nov 2012 13:45:47 +0000 (13:45 +0000)]
cursor: finer crosshair

Use a finer cursor for line mode drawing - users sometimes need very
precise positioning. Thanks, Deevad!

5 years agoi18n: scons translate=all
Martin Renold [Tue, 27 Nov 2012 17:55:07 +0000 (18:55 +0100)]
i18n: scons translate=all

5 years agoi18n: do low-level bindtextdomain() earlier
Andrew Chadwick [Thu, 29 Nov 2012 02:46:48 +0000 (02:46 +0000)]
i18n: do low-level bindtextdomain() earlier

Move the low-level C library gettext() setup to ensures it
gets called as early as possible, which is probably more correct. Set
the low-level text domain there too; hopefully that's OK.
states that this is fine for library setup.

5 years agoi18n: en-GB translation
Andrew Chadwick [Wed, 28 Nov 2012 01:36:31 +0000 (01:36 +0000)]
i18n: en-GB translation

Technically en-GB-oed.

5 years agoi18n: bind mypaint domain at startup
Andrew Chadwick [Wed, 28 Nov 2012 00:48:39 +0000 (00:48 +0000)]
i18n: bind mypaint domain at startup

Invoke bindtextdomain(3) to bind the "mypaint" domain to a base folder
relative to the install prefix, or the working folder first (for testing
from git) when mypaint starts. This allows GtkBuilder to pick up on it
as well, hopefully.

5 years agofreehand: adjust tilt for rotation and mirror
Andrew Chadwick [Tue, 27 Nov 2012 19:05:22 +0000 (19:05 +0000)]
freehand: adjust tilt for rotation and mirror

Compensate for canvas rotation and mirroring before passing xtilt and
ytilt on to the brush engine. Brush strokes with tilt inputs should look
similar on screen even if the view is turned or flipped.

5 years agoFrameToggle: update in line with frame window
Andrew Chadwick [Tue, 27 Nov 2012 15:15:08 +0000 (15:15 +0000)]
FrameToggle: update in line with frame window

Bugfix: make the main frame toggle share an action with the frame edit
window, and fix a logic bug that was causing it to never change state
when needed.