Commit graph

1874 commits

Author SHA1 Message Date
Michael Natterer
56ec0c8774 display: reserve more space for the cursor label so negative coords fit 2010-02-11 19:55:20 +01:00
Michael Natterer
3cd4f0de45 display: don't use statusbar->hbox for size calculations, use the hbox instead 2010-02-11 19:51:15 +01:00
Michael Natterer
f2f83109ec display: redo the code that does evil things to the statusbar's widgets
Actually use the hbox that is provided via gtk_statusbar_get_message_area()
since GTK+ 2.19.1 instead of always replacing it by our own.
2010-02-11 19:24:08 +01:00
Michael Natterer
903604113f Add utility function to create images to gimpimage-new.[ch]
Add gimp_image_new_from_drawable(), from_component() and from_pixbuf()
and remove that duplicated code from gimptoolbox-dnd.c and
gimpdisplayshell-dnd.c
2010-02-09 22:32:48 +01:00
Michael Natterer
4c1ec79281 Move the quick mask members to GimpImagePrivate
and add API to access the "inverted" state.
2010-02-04 09:49:45 +01:00
Michael Natterer
88de69464e Move "layers", "channels" and "vectors" to GimpImagePrivate 2010-02-03 23:00:31 +01:00
Michael Natterer
c9b9b8e18e Increating and decreasing the display count were swapped 2010-02-03 22:59:50 +01:00
Michael Natterer
c9f8399614 Move "grid", "guides" and "sample_points" to GimpImagePrivate 2010-02-03 22:16:02 +01:00
Michael Natterer
0b2c804e9d Move "disp_count" and "instance_count" to GimpImagePrivate
and add the neccessary API to access and modify them.
2010-02-03 21:22:00 +01:00
Michael Natterer
f769284aca Start private struct for GimpImage and move the first members there 2010-02-03 20:31:25 +01:00
Michael Natterer
b6ce5d075d Remove macros SCREEN_XRES() and SCREEN_YRES()
and add gimp_display_shell_get_screen_resolution() instead. The times
when these macros were used in inner loops have long passed.
2010-02-03 19:50:46 +01:00
Martin Nordholts
ed2d178da3 app: Get rid of config -> display module dependency
In order to make a clear separation between the core modules and the
UI modules, move the necessary enums from display-enums.h and
widgets-enums.h to config-enums.h and the files
gimpdisplayoptions.[ch] from the display to the config module. This
removes the config -> display dependency.

This change has three main benefits
 * It lets us remove includes of display files from the config module
 * We don't have to link gimp-console and test-config with a subset of
   object files from the display module
 * It is reflected in devel-docs/gimp-module-dependencies.svg that the
   application is made up of core modules and UI modules and that no
   core module depends on any UI module
2010-02-01 21:56:48 +01:00
Michael Natterer
74bf91cb63 Bug 603711 - Crashes when using path tool
gimp_display_shell_get_*_coord(): initialize the coords with
GIMP_COORDS_DEFAULT_VALUES allGimpCoords members get initialized.
2010-01-31 17:19:51 +01:00
Martin Nordholts
8ba9700ddb Bug 597368 - Widget spacing around canvas steals working space
Remove spacing between the canvas and the surrounding widgets so that
that space can be used for the actual canvas itself instead.
2010-01-30 08:59:28 +01:00
Martin Nordholts
2604db71a8 app: Don't yell in FIXME, explain instead 2010-01-19 23:15:37 +01:00
Michael Natterer
7175f3e883 Some more changes to build with GSEAL_ENABLE
- use more GTK+ accessors instead of struct members
- remove quite some #undef GSEAL_ENABLE from completely ported files
2010-01-15 15:35:03 +01:00
Alexia Death
d3dde03b78 app: Fix a tug of war with scrollbars when middle click panning.
Whenever panning with a mouse scrollbars generated reverse events,
one for each, causing flicker on image borders.
2010-01-10 22:16:27 +02:00
Martin Nordholts
5d79f664d3 app: Add "dialog-factory", "ui-manager" properties to GimpDockColumns
Add "dialog-factory", "ui-manager" properties to GimpDockColumns and
let GimpDock look for these before trying to look for a dock window
which does not exist in single-window mode.
2010-01-07 19:18:03 +01:00
Martin Nordholts
bc5da21ba2 app: Add gimp_dock_columns_new() and GimpContext property
Add and use gimp_dock_columns_new() and add a GimpContext property to
GimpDockColumns. Also move the widget construction from _init() to
_constructor() in GimpDockWindow so we have a context object to pass
to gimp_dock_columns_new().
2010-01-07 19:13:13 +01:00
Martin Nordholts
f1bbb2c70a app: Fix menubar suddently stopping to work when toggling window modes
The image window must not disconnect from the active shell when any
page is removed, only when the active page is removed. This fixes the
bug with this step-by-step:

1. Start GIMP with a clean gimpdir
2. Create two windows
3. Enable single-window mode
4. Disable single-window mode
5. Try to execute a menu action, e.g. Select -> Invert, on both images

Expected result:
It works

Actual result:
It won't work in the image window that was reused and thus once had
two notebook pages, since it disconnected from page 1 when page 2 was
removed.

Also add some debug output.
2010-01-06 14:50:36 +01:00
Martin Nordholts
fecc04914e app: gimp_image_window_page_removed() gets the widget, not page
The first GtkNotebook::"page-removed" signal parameter is the
GtkWidget that was removed, not a GtkNotebookPage. Correct function
signature.
2010-01-06 14:50:36 +01:00
Martin Nordholts
4fcd3024f1 app: Set a GimpContext on GimpDockColumns
In order to make a GimpDock get hold of a GimpContext both in
single-window mode and in multi-window mode, don't make it look for a
GimpContext in a GimpDockWindow, put the context in GimpDockColumns
instead. GimpDockColumns exists both in s-w-m and m-w-m, contrary to
GimpDockWindow. Still use the GimpDockWindow as a backup though.
2010-01-05 11:31:15 +01:00
Martin Nordholts
90d7ffde1a app: Make all GimpDialogFactory members private
Add necessary trivial API that allows us to make remaining
GimpDialogFactory instance members private, and make them private.
2009-12-20 20:21:26 +01:00
Alexia Death
dbf844c012 app: Disable history buffer via use of gimprc option
Adds non-UI option to disable the use of often buggy history buffer.
This option defaults to false, since a lot of device/X/GDK combos are broken
and the resulting stroke often actually looks better without history events.
Put (use-event-history yes) in gimprc if you want more events and possibly bugs.
2009-12-20 18:46:25 +02:00
Alexia Death
1f4098200a Revert "app: Removing code for making use of the X event history buffer"
This reverts commit af4717e78f.
People want it, to see when the backend is fixed.
2009-12-20 17:29:22 +02:00
Alexia Death
af4717e78f app: Removing code for making use of the X event history buffer
X event history buffer is major source of problems. Almost all reports
about painting at an offset from the cursor in GIMP seem to originate
from history buffer bugs either at X or GTK level. There are device&X
combinations that work fine and there are others that are broken.
With current smothing the benefits of using the buffer are almost gone
and more exact does not always mean better to look at.
2009-12-20 16:27:03 +02:00
Martin Nordholts
f3235e6f45 app: Add "dock-factory" property to GimpImageWindow
With the introduction of a single-window mode, not only dock windows
needs to be able to create docks, the image window also needs to. So
give it a "dock-factory" property.
2009-12-08 19:49:13 +01:00
Martin Nordholts
ae3c3291b0 app: Check for API availability in gimp_statusbar_init() 2009-11-30 23:14:54 +01:00
Martin Nordholts
a81dc5ead3 app: Use more proper API in gimp_statusbar_init()
Use more proper API in gimp_statusbar_init() when we rearrange widgets
to get rid of warnings. Requires an up to date GTK+, max 2 weeks old
or so, for gtk_statusbar_get_message_area().

This makes app/tests run again since there are no warnings about wrong
widget parent.
2009-11-30 22:55:31 +01:00
Michael Natterer
6a00a4ef22 Add comment why we implement focus_in_event() and focus_out_event() 2009-11-04 19:32:13 +01:00
Michael Natterer
a4694d8a0a Optimize gimp_statusbar_replace_valist()
Don't replace anything if the status message didn't change. Gets rid
of quite some statusbar invalidations in many tools.
2009-11-03 15:49:18 +01:00
Michael Natterer
8c07e52759 Don't let focus-in and focus-out on the canvas invalidate everything
Implement GtkWidget::focus_in_event() and ::focus_out_event() in
GimpCanvas and don't chanin up so the default handler never runs.
Remove code that tries to do the same in the canvas' tool events
callback.

The default impl invalidates the entire widget for no reason (the
canvas doesn't draw a focus indicator anyway), and the old solution
failed for empty displays and was constantly invalidating the entire
drop zone when the toplevel window gained or lost focus.
2009-11-03 13:58:36 +01:00
Michael Natterer
10bb9b090f Get rid of useless const in "const GimpDisplayShell*" 2009-11-01 20:47:18 +01:00
Michael Natterer
deed1636f9 Remove all code from gimp_display_shell_new()
Move the entire widget construction code to constructor().
2009-11-01 18:18:17 +01:00
Michael Natterer
439994d994 Clean up gimp_display_shell_init()
Only initialize members that don't default to zero. It was simply too
much and soon widgets will be constructed in init().
2009-11-01 14:51:08 +01:00
Martin Nordholts
fdf2454666 app: Add gimp_image_window_new/destroy()
Add gimp_image_window_new/destroy() so we have a central place where
the Gimp::image_windows list is managed.
2009-10-25 22:02:38 +01:00
Martin Nordholts
19baff1a50 app: Add gimp_image_window_get_shell() 2009-10-25 21:57:14 +01:00
Martin Nordholts
b9214fd3cf app: Add "gimp" property to GimpImageWindow 2009-10-25 21:44:23 +01:00
Martin Nordholts
870d7f9376 app: Connect to GtkNotebook::page-removed in GimpImageWindow
We must disconnect from the last display shell when it is removed
when rearranging the UI, so connect to GtkNotebook::page-removed
in GimpImageWindow and do that.
2009-10-25 20:03:51 +01:00
Martin Nordholts
75ee76ecb6 app: Handle gimp_image_window_get_active_shell() returning NULL
When rearranging the UI it is pretty common that
gimp_image_window_get_active_shell() returns NULL so check for that.
2009-10-25 20:03:51 +01:00
Martin Nordholts
65c0ce5dbe app: Get rid of const disqualifier warning
Get rid of const qualifier for a bunch of GimpDisplayShell getters to
get rid of a disqualifier warning. The problem is that we call into
GTK+ which sometime misses const which breaks the chain. As a general
guideline we should avoid const for widgets.
2009-10-24 21:02:19 +02:00
Michael Natterer
ea7c37293c Don't block all key events on the canvas (fixes tool interaction)
(gimp_display_shell_canvas_tool_events): when ignoring events on
overlays, special case key events because they always originate from
the topelvel and never from the canvas' window itself.
2009-10-21 19:35:20 +02:00
Michael Natterer
8780342dcb Set a 10px border on the canvas so overlays have some spacing 2009-10-18 23:03:04 +02:00
Michael Natterer
8124792130 Derive GimpCanvas from GimpOverlayBox
- adapt callbacks to ignore / not block events on offscreen children
- use GimpOverlayBox' scroll API which makes sure overlay children
  don't scroll along
2009-10-18 22:19:29 +02:00
Michael Natterer
6608d66cde Build with GSEAL_ENABLE and #undef it where accessors are missing 2009-10-17 19:51:33 +02:00
Martin Nordholts
eb6bef33e4 Use gtk_widget_set_visible()
In places where the pattern

  if (show)
    gtk_widget_show (widget);
  else
    gtk_widget_hide (widget);

is used, change to

  gtk_widget_set_visible (widget, show);

Also do some other minor cleanups.
2009-10-17 15:07:34 +02:00
Martin Nordholts
c83788377a app: Remove unused includes from gimpdisplayshell.c 2009-10-09 23:04:29 +02:00
Martin Nordholts
676e7f8c31 app: Formating 2009-10-09 20:04:56 +02:00
Michael Natterer
23955439d6 Don't access GtkAdjustment's members directly
but also don't use its accessors because doing that would emit
"changed" multiple times when setting up an adjustment with multiple
utility functions. Instead, use g_object_set() and freeze/thaw
notification around all calls. g_object_thaw_notify() will make sure
"changed" is emitted if anything has changed since freezing.
2009-10-09 09:59:01 +02:00
Michael Natterer
7c39a22dc2 Simplify GimpDisplayShell's icon update API
It makes no sense to distinguish between idle and immediate update in
the public API, the code can simply decide by itself to immediately
update a NULL image's icon.
2009-10-08 23:30:56 +02:00