Commit graph

2250 commits

Author SHA1 Message Date
Michael Natterer
1ebd2b5113 Revert "app: Make alt+[number] switch tabs in single-window mode"
This reverts commit 110b3daa97.
2011-05-07 23:54:54 +02:00
Michael Natterer
d7b8f8e81f app: formatting in gimpdisplayshell-selection.c 2011-05-07 22:33:05 +02:00
Michael Natterer
c35ff719a7 app/libgimp*: remove stuff found by -Wunused-but-set-variable 2011-05-01 23:23:19 +02:00
Michael Natterer
99df9e114e app: GimpCanvasLayerBoundary: actually use the figured "edit_mask" boolean
instead of always passing FALSE when changing to a different
layer. For some reason we were displaying the right state anyway,
which can only mean that we do things redundantly here and call this
function twice.
2011-05-01 22:36:25 +02:00
Michael Natterer
cc47b2a600 libgimpwidgets/color: move the cairo color utility functions to libgimpcolor
Add CAIRO_CFLAGS to a lot of Makefiles to make this possible, and
because they pull in cairo via the libgimp headers.
2011-04-28 15:50:39 +02:00
Michael Natterer
81911a7b02 app: allow to drop buffers and components to empty displays
and simply create new images from them.
2011-04-28 01:59:38 +02:00
Michael Natterer
69d3aa5b36 Bug 648820 - drag and drop grayscale/greyscale image causes image corruption
gimp_display_shell_drop_pixbuf(): use the image's type to create the
layer, not the dropped pixbuf's.
2011-04-28 01:44:48 +02:00
Michael Natterer
85509f4ffb app: GimpScaleComboBox: don't derive from GtkComboBoxEntry
because it's deprecated. Derive from GtkComboBox directly, use the
"has-entry" property and move the setup code from init() to
constructed().
2011-04-18 21:49:23 +02:00
Michael Natterer
5b14564d8e app: GimpMotionBuffer: remove empty constructed()
and move buffer destruction from dispose() to finalize().
2011-04-18 15:54:03 +02:00
Michael Natterer
534b48cb0d app: add gimp_motion_buffer_get_last_motion_time() and use it
The last poking into the buffer is gone now.
2011-04-18 13:13:51 +02:00
Michael Natterer
d305d000ff app: struct GimpMotionBufferClass: parent_class had the wrong type 2011-04-18 11:35:51 +02:00
Michael Natterer
e028195cf3 app: rename process_stroke() and process_hover() to request_foo()
Because that's what we are doing by calling the functions: requesting
the emission of "stroke" and "hover" signals.
2011-04-18 11:32:10 +02:00
Michael Natterer
3fbbb9b333 app: GimpMotionBuffer API cleanup and refactoring
- start_stroke()/finih_stroke() -> begin_stroke()/end_stroke()
- process_event_queue() -> process_stroke()
- GimpMotionBuffer::motion() -> GimpMotionBuffer::stroke()
- add GimpMotionBuffer::hover() and process_hover()
- remove push_event_history() and pop_event_queue() from API

The thing works like this:

- Motion events are continuously fed into the buffer using motion_event()
- begin_stroke()/end_stroke() correspond to BUTTON_PRESS/BUTTON_RELEASE,
  the period between them is a "stroke"
- If motion_event() returns TRUE, we request "stroke" signals by calling
  process_stroke() and "hover" signals by calling process_hover()
2011-04-18 11:08:24 +02:00
Michael Natterer
d62cf65030 app: rename gimp_motion_buffer_eval_event() to motion_event()
because it's feeding it motion events.
2011-04-18 01:09:57 +02:00
Michael Natterer
6f865eda2b app: add start_stroke() and finish_stroke() API to GimpMotionBuffer
where finish_stroke() is the former flush_event_queue() and
start_stroke() is used in BUTTON_PRESS instead of poking into the
motion buffer's internals. Also, call finish_stroke() also when the
tool is not active, so the event buffer is flushed (the "motion"
callback will ignore the events if the tool is not active).
2011-04-18 00:35:20 +02:00
Michael Natterer
e3b1ed7728 app: remove the timeout in GObject::dispose() 2011-04-17 22:00:18 +02:00
Michael Natterer
e822fb0d95 app: separate the queue flushing function from the timeout function
and add g_return_if_fail() to all public functions.
2011-04-17 21:58:03 +02:00
Michael Natterer
334e4c5d71 app: move process_event_queue() and flush_event_queue() to GimpMotionBuffer
and emit the buffer's "motion" signal when a motion is supposed
to happen. In GimpDisplayShell, connect to GimpMotionBuffer::motion()
and call the tool.
2011-04-17 21:46:29 +02:00
Michael Natterer
d784ca0a59 app: don't PAUSE/RESUME the active tool around sending it motion events
That's most likely a very old artifact that was needed not even when
we used to do XOR, and these days it's even wrong because it makes
the tools think that something about the display has changed, like
zoom or scroll.
2011-04-17 21:12:02 +02:00
Michael Natterer
9f61a7d2a1 app: siplify gimp_display_shell_process_event_queue()
by using gimp_motion_buffer_pop_event_queue() here too.
2011-04-17 20:43:55 +02:00
Michael Natterer
fae0589767 app: minor cleanup gimp_motion_buffer_eval_event(), no logic change 2011-04-17 20:27:54 +02:00
Michael Natterer
bb3eac557d app: add gimp_motion_buffer_pop_event_queue() and use it
instead of accessing and removing the queue's first element menually.
2011-04-17 20:20:18 +02:00
Michael Natterer
aa7c31b802 app: s/gdouble inertia_factor/gboolean event_fill/ in eval_event()
Also remove "gdouble max_coord_smooth" from GimpTool and simply use
the existing motion mode for deciding whether or not to fill in
events.
2011-04-17 19:59:31 +02:00
Michael Natterer
41b469fcf5 app: gimp_motion_buffer_eval_event(): always set last_read_motion_time
We need it for correctly requesting device history, so we must
remember it also when returning FALSE and ignoring the event.
2011-04-17 19:34:02 +02:00
Michael Natterer
7ab72eb54a app: flush the event queue unconditionally on BUTTON_RELEASE
The flashing function checks for a non-empty queue by itself. Also
remove the timeout source explicitly in flush_event_queue() because it
might be called directly, and its FALSE return value has no effect on
the timeout source in that case.
2011-04-17 19:21:46 +02:00
Michael Natterer
2dbaf7f490 app: set "last_read_motion_time" in gimp_motion_buffer_eval_event()
because it is called whenever we process a newly received event.
2011-04-17 19:05:49 +02:00
Michael Natterer
e09520fb08 app: add GimpMotionBuffer class to swallow all the event smoothing code
This commit only adds the class and removes the members from
GimpDisplayShell, so everything looks more ugly than before, but
I wanted the member moving separate from any refactorings.
2011-04-17 18:53:42 +02:00
Mikael Magnusson
bebccfc95a Bug 647897 - Marching ants only visible in single window mode
Use gdk_window_create_similar_surface instead of gdk_cairo_create in
selection_render_mask, as the latter is not entirely correct to use
outside the expose handler and may have some unwanted clipping state.
2011-04-16 01:36:32 +02:00
Michael Natterer
fde934ac58 app: s/GdkRectangle/cairo_rectangle_int_t/ in all GimpCanvasItems 2011-04-10 18:15:16 +02:00
Martin Nordholts
27ac2a3c38 app: Make GimpEditor instance members private 2011-04-10 12:12:01 +02:00
Michael Natterer
b75b7de064 app: fix drawing artifacts in GimpCanvasRectangle
The width/height returned by gimp_canvas_rectangle_transform() were
off-by-one if the rectangle's width/height were exactly 0.0 and its
x/y exact integers, causing too much drawing and/or too little
invalidation.
2011-04-10 03:46:02 +02:00
Michael Natterer
cad5c1e2fb app: indentation in GimpCanvasArc 2011-04-10 03:44:49 +02:00
Michael Natterer
30a45c05e4 app: turn double buffering off/on when filling/emptying the display
instead of turning it off unconditionally in gimp_canvas_init(), so we
have full control over buffering when we are rendering images, but let
GTK+ handle a flicker-free wilber itself.
2011-04-09 23:17:16 +02:00
Michael Natterer
1a9434cef1 app: set the rulers as track widgets for each other
so we don't end up with one ruler wrongly being stuck a few pixels off
while we are hovering the other.
2011-04-09 21:04:40 +02:00
Martin Nordholts
6b5e495841 app: Remove comments about cachelines in GimpDisplayShell
Remove comments about cachelines in GimpDisplayShell that no one cares
about in 2011.
2011-04-07 07:12:32 +02:00
Martin Nordholts
3b243bdcfe app: Add gimp_display_get_action_name() utility function 2011-04-07 07:12:32 +02:00
Mikael Magnusson
ac403ce11d Add a controller for binding mouse buttons 2011-04-06 23:35:14 +02:00
Michael Natterer
7fae1b3c50 app: update the tool's state after the wheel controller has handled the event 2011-04-06 22:50:20 +02:00
Michael Natterer
febc1da4be app: ignore button 1 release if we have no pointer grab
which is more correct than the previous commit
2011-04-06 22:44:08 +02:00
Michael Natterer
14d30fd795 app: ignore button releases while another button's action is going on
- ignore button 1 release if we are button-2-scrolling
- ignore button 2 release if we are not button-2-scrolling
2011-04-06 22:30:44 +02:00
Michael Natterer
754d45c357 app: completely ignore focus change events while we have a grab
in order to be safe against whatever windowing system / event manager
depending event order. Also properly update the tool's state after a
button reelease, and after a space release.
2011-04-06 21:37:46 +02:00
Michael Natterer
24ee3370b8 Depend on GTK+ >= 2.24.3, cairo >= 1.20.1, gdk-pixbuf >= 2.22.1
and completely separate configure and sanity checks for gdk-pixbuf
from GTK+, because it's now distributed as a separate package. Remove
all sorts of conditional compiling based on GDK_CHECK_VERSION() and
CAIRO_VERSION.
2011-04-06 19:58:24 +02:00
Mukund Sivaraman
5c55f8e897 app: Fix Alt+0 case when switching tabs 2011-04-06 11:58:58 +05:30
Mukund Sivaraman
110b3daa97 app: Make alt+[number] switch tabs in single-window mode 2011-04-06 11:52:10 +05:30
Michael Natterer
46819a05da app: fix transformation in GimpCanvasPath 2011-04-04 21:41:46 +02:00
Michael Natterer
99e0e73fc6 app: add "x" and "y" properties to GimpCanvasPath
so paths can be rendered at any position. Pass 0,0 from all places
that draw GimpVectors.
2011-04-04 20:58:38 +02:00
Michael Natterer
8b4870dad7 app: move GimpBezierDesc from app/vectors/ to app/core/ 2011-04-04 18:40:12 +02:00
Michael Natterer
32c6177c1e app: gimp_canvas_sample_point_set(): x and y are integers not doubles 2011-04-03 23:42:26 +02:00
Michael Natterer
fce5c7ea26 app: add "gboolean focus_in" to gimp_display_shell_update_focus()
and use it to update the tool's state also when the canvas gets a
FOCUS_OUT.
2011-04-03 19:02:19 +02:00
Michael Natterer
5a76519c88 app: call gimp_display_shell_update_focus() in more cases
instead of duplicating its functionality.
2011-04-03 18:52:24 +02:00