Commit Graph

11661 Commits

Author SHA1 Message Date
5f65026f94 Implement GTK_DELETE_PARAGRAPH_ENDS (Ctrl+K in emacs) 2009-06-24 18:48:27 +02:00
1dcd5a6eaa Implement GTK_DELETE_WORD_ENDS and GTK_DELETE_WORDS 2009-06-24 13:58:40 +02:00
2d8ced10c0 Some text deleteion refactoring
Change public text tool API to gimp_text_tool_delete_selection() and
move delete and backspace code to their own handlers in preparation of
handling all text deletion types.
2009-06-24 13:51:25 +02:00
1b69070556 Make key themes really work this time
* app/widgets/gimpwindow.c: treat GimpCanvas as a text widget and
  dispatch all key events to it before invoking menu shortcuts.

* app/display/gimpdisplayshell-callbacks.c: treat all events on the
  empty display as unhandled, not handled.

* app/tools/gimptexttool.c: use the right API for invoking the proxy
  text view's bindings. Handle some more cursor navigation request and
  swallow text deletion requests we don't handle instead of always
  doing what the delete key does.
2009-06-23 23:25:09 +02:00
e24793a666 Move the proxy text view to its own offscreen window
Add the proxy text view to a toplevel window so it can pick up the
key theme. Remove various hacks and the #ifdef TEXT_TOOL_HACK stuff.
2009-06-23 21:57:59 +02:00
cfbfb4a6c0 Don't go to the end of the line if we are already there
(gimp_text_tool_move_cursor): for GTK_MOVEMENT_DISPLAY_LINE_ENDS,
check if we are an the end of a line, or the cursor will end up on the
end of the next line.
2009-06-23 14:05:50 +02:00
25963fb1e1 Add some temp debug output 2009-06-23 14:00:23 +02:00
6e57a67218 Fix moving back by words 2009-06-23 00:18:31 +02:00
a235998165 Actually use the hack from the last commit
require a hacked GTK+ ;)
2009-06-22 23:52:42 +02:00
64d6ebca00 Make the text tool use GtkTextView's key bindings
* app/core/gimpmarshal.list: add marshallers needed for the binding
  singnals.

* app/tools/gimptexttool.[ch]: add binding signals "move-cursor",
  "delete-from-cursor" and "backspace" and hijack GtkTextView's
  binding set to invoke them. Move code from the key_press() handler
  to the signals' default handlers. This is how it should work. In
  fact that code is #ifdef'ed away and we need an evil proxy
  GtkTextView to invoke the bindings on because of reasons stated in
  comments in the code. Ugly but works just fine.
2009-06-22 23:47:04 +02:00
9b1681216d Bug 586591 - Opening jpg image sets cpu activity to 100%
(gimp_projection_validate_tile): fix stupid braino that made the
recently added optimization loop infinitely on images with a width
that is a multiple of TILE_WIDTH.
2009-06-22 20:24:28 +02:00
0ced7020d3 Add naive handling of PageUp/PageDown in the text tool 2009-06-22 13:55:52 +02:00
0f55bf15bc Enable cut/copy/paste for the text tool
* app/tools/tools-enums.[ch]: add enum GimpClipboardAction which can be
{ CUT, COPY, PASTE }

* app/tools/gimptool.[ch]
* app/tools/tool_manager.[ch]: add GimpTool::clipboard_action() which
returns a boolean indicating whether the tool handled the action.

* app/tools/gimptexttool.c: implement clipboard_action().

* app/actions/edit-commands.c: try the active tool first in the cut,
copy and paste callbacks.
2009-06-21 23:37:18 +02:00
1f91136e35 Make sure mouse selections work together nicely with keyboard navigation
(gimp_text_tool_motion): always keep the "insert" mark at the mouse
location and the "selection_bound" one at the other end of the
selection.

(gimp_text_tool_key_press): make cursor navigation always move the
"insert" mark, and move "selection_bound" along with it unless shift
is pressed. It was exactly the other way around.
2009-06-21 17:33:25 +02:00
a7271e6b25 Handle double and triple click and enable selecting words and lines 2009-06-21 16:20:16 +02:00
cd880b3946 Rename member "text_cursor_changing" to "selecting" and remove unreachable code 2009-06-21 14:31:49 +02:00
1a16b48c93 Add infrastructure for sending double and triple clicks to tools
* app/tools/tools-enums.[ch]: add enum GimpButtonPressType which can
be { NORMAL, DOUBLE, TRIPLE }

* app/tools/gimptool.[ch]: add press_type paramater to GimpTool::button_press()

* app/tools/gimp*tool.c
* app/tools/tool_manager.[ch]: changed accordingly.

* app/tools/gimptoolcontrol.[ch]: add members and API so tools can choose
to receive double and triple clicks.

* app/display/gimpdisplayshell-callbacks.c (gimp_display_shell_tool_events):
dispatch double and triple clicks to tools if they want them, and if they
became active by the preceding normal button press.
2009-06-20 17:37:31 +02:00
2a88723a40 Bug 573256 - Text tool appearance doesn't account for DPI
* app/text/gimptextlayout-render.c: remove private function which
creates the transform matrix.

* app/text/gimptextlayout.[ch]: add it here as public API. Also add
function which transform and untransform PangoRectangles, points and
distances using the transform matrix.

* app/tools/gimptexttool.c: convert coordinates using above new
transform functions when drawing selection and cursor, and when
processing mouse events.
2009-06-19 17:08:34 +02:00
d93941df7c Bug 563029 - Closing maximized image doesn't restore document window size
(gimp_display_shell_empty): Call gtk_window_unmaximize() before
setting the empty display's size.
2009-06-17 21:29:08 +02:00
e2d90e3e1f Bug 585488 – Perspective transformation on a layer with a mask causes crash
(gimp_drawable_transform_affine)
(gimp_drawable_transform_flip)
(gimp_drawable_transform_rotate): also transform the layer mask if we
are transforming a layer and there is no selection (which causes the
entire layer to be transformed).
2009-06-17 21:14:32 +02:00
8423757d3f Add forgotten #include "libgimpbase/gimpbase.h" 2009-06-17 20:55:05 +02:00
bdd8d8e3fb Use more x,y,width,height instead of x1,y1,x2,y2
(gimp_paint_core_get_orig_image)
(gimp_paint_core_get_orig_proj): changed parameters to x,y,width,height.
Update callers accordingly and use x,y,width,height there too except
in gimpperspectiveclone.c which does better with a bounding box.
2009-06-17 20:46:28 +02:00
13cb156a80 Get rid of more x1,y1,x2,y2 uglyness
(gimp_drawable_push_undo): change x1,y1,x2,y2 parameters to
x,y,witdh,height and update all callers accordingly.
2009-06-16 22:59:07 +02:00
06a3b3a85a Bug 586008 - GIMP crashes when right-click canceling a drawing action initiated outside layer boundaries
(gimp_paint_core_cancel): don't pass out-of-drawable coordinates to
gimp_paint_core_copy_valid_tiles().
2009-06-16 22:09:48 +02:00
6049768abf Bug 578630 - File Creation Permission Bug Only for Some File Types: Creating as 644 (rw-r--r--) when should be 664 (rw-rw-r--)
Use 0666 as permissions instead of 0644 and let the user's umask care
about restricting, so creating a file with open() behaves the same way
as with fopen().
2009-06-15 19:28:06 +02:00
9af87c83aa Speed up the gegl projection by a factor of about 4
(gimp_projection_validate_tile): validate a strip of up to 8 invalid
tiles at once to reduce whatever overhead inflicted on gegl.
2009-06-11 22:22:11 +02:00
907971bab3 Bug 563966 - Edit - Copy _Visible Named tooltip can be improved
Mention "what is visible" in the tooltip for edit-named-copy-visible.
2009-06-11 13:41:05 +02:00
f3f7b28079 Fix for another potentially crashing and while.
This time in gimp_coords_interpolate_catmull. This should be
the last one.
2009-06-06 19:25:13 +03:00
38e9012023 Bug 575158 – default view prefs should affect no-image window
Add gimp_display_shell_sync_config() which copies the prefs settings
to the display shell and call it from gimp_display_shell_new() and
gimp_display_shell_fill().
2009-06-05 22:21:19 +02:00
8f37a96d70 only spit out debug output if TILE_PROFILING is defined 2009-06-04 12:15:07 +02:00
b2fc6d2876 whitespace and coding style cleanups 2009-06-04 12:15:06 +02:00
ac680f1cbd whitespace cleanup and removed inclusion of <sys/types.h> 2009-06-04 12:15:06 +02:00
717d8b4e56 Correct startup flaw in idle swapper start.
Check that the cache itself is idle. Previously it would start during
transforms and long pyramid rendering ops and toss writes and large
seeks into the tile cache while it was potentially under heavy pressure.

Also increase its flush rate more to be more in line with modern system
and editing needs.
2009-06-04 12:15:06 +02:00
e925338321 Replace two list 'flush clean first' cache strategy with an LRU strategy.
Although the clean-first strategy gives fast light-load performance,
it also degrades catastrophically under moderate cache pressure. LRU is
not as efficient under light load, but degrades more gracefully under
moderate and heavy load.
2009-06-04 12:15:05 +02:00
ac51a588d6 Add additional profiling to tile usage.
Add more profiling In order to analyze efficiency and behavior of the
tile cache. Profiling includes run-time indication of idle swapper
activity.

Also, fixes to original tile profiling code that appears to have
bitrotted some; it was no longer tracking changes made to tile memory
outside of tile.c.
2009-06-04 12:15:05 +02:00
2eaa777314 Optimize TILE_DATA_POINTER() macro
Minor change to TILE_DATA_POINTER that restricts TILE_WIDTH and
TILE_HEIGHT to powers of two, but eliminates two integer divisions
(or, in reality, eliminates the over-complicated assembly resulting
from optimizing out two integer divisions in a C compliant fashion).
2009-06-04 12:14:22 +02:00
874e16c669 Bug 522483 – use gtk_show_uri() instead of calling firefox directly
As a first step, changed the default web-browser to xdg-open.
2009-06-02 23:50:20 +02:00
ac11569830 app: fix the questionable while loop in another place
The questionable while loops to get GimpCoords.direction into a proper
range were used in two places. This commit fixes the actual problematic
place where, under some rare circumstances, the code used to go into a
loop for a very long time.
2009-05-29 23:33:54 +02:00
936df1a183 app: Fix gimp_display_shell_eval_event that had some questionable whiles 2009-05-29 22:26:57 +03:00
c73b71810d Use g_strdup_printf() instead of g_new() and g_sprintf() 2009-05-29 20:49:40 +02:00
d5fddb5ba9 app: gimpuimanager.c formatting 2009-05-28 19:42:18 +02:00
4c8b0f1f7e Bug 573614 – Tags dropdowns for brushes, patterns,
Display correct cursor when in widget area which opens popup list.
2009-05-26 21:39:43 +03:00
a427213fb8 app: fix use of GIMP_LOG=help
g_parse_debug_string() has special treatment of the string 'help',
but we want to use it for the GIMP_LOG_HELP domain.
2009-05-26 12:23:26 +02:00
294154ed76 Remove unused code without any effect 2009-05-25 21:14:33 +02:00
53c661312b Add GimpCoords* parameter to gimp_paint_core_interpolate()
Pass the current coords to the function instead of setting them
on the paint core before calling it. Doesn't exactly make the code
in the paint tool  simpler, but that needs further refactoring anyway.
2009-05-25 20:49:34 +02:00
c9674b4603 Use the new GtkAction accessors instead of g_object_get()/set() 2009-05-24 22:29:18 +02:00
be21d3a1e3 Restrict the set of modifiers that prevent treeview item activation
Check for SHIFT, CONTROL and MOD1 explicitely so the code doesn't prevent
item activation for esoteric modifiers that are set by whatever X
component (like XKB).
2009-05-24 22:17:42 +02:00
819281ebc8 gimp_enum_get_value() takes const char *'s 2009-05-24 10:39:57 -07:00
7d76f25e26 Use gtk_activatable_set_related_action() instead of deprecated
gtk_action_connect_proxy()
2009-05-24 10:38:09 -07:00
ef8dabcc7f tools: improve status-bar hints for the Curves tool 2009-05-24 18:20:01 +02:00