Commit Graph

334 Commits

Author SHA1 Message Date
f4af9b549e Globally switch to saying "window_id" instead of just "window"
when dealing with native window handles. Also get rid of using
GdkNativeWindow and simply consistently use guint32 all over the
place. This is more obvious and consistent and keeps the diff to the
gtk3-port branch smaller.
2011-02-06 12:07:55 +01:00
c79deb40dd app: don't use a timeout for delaying display flushing
because it might never be called. Instead, check the time since
the last flush_now and make sure they are at least 20 ms apart.
2010-10-11 23:33:33 +02:00
be2037ce03 app: limit realtime image updates to about 50 fps
which increases responsiveness while painting quite a bit.
2010-10-11 22:49:10 +02:00
ddc63de6d6 app: remove "gboolean use_offsets" from gimpdisplayshell-transform.[ch] 2010-09-23 19:24:04 +02:00
8671860945 app: move "image" member of GimpDisplay to the private struct 2010-02-28 16:15:59 +01:00
bf830398a5 app: Cleanup GimpImageWindow and dependencies, only one dialog factory
Cleanup GimpImageWindow and dependencies like GimpDisplay, there is
only one dialog factory now.
2010-02-20 11:09:51 +01:00
c9b9b8e18e Increating and decreasing the display count were swapped 2010-02-03 22:59:50 +01:00
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
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
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
b9214fd3cf app: Add "gimp" property to GimpImageWindow 2009-10-25 21:44:23 +01:00
dd0575edb4 Move refing/unrefing the image to gimp_display_set_image()
and don't do it in gimp_display_connect()/disconnect() because
set_image() is the natural place to do it.
2009-10-07 21:13:39 +02:00
067cfe9ff0 Move a call to gimp_display_shell_connect() around
from gimp_display_shell_reconnect() to gimp_display_set_image()
because it makes unsetting and setting an image in
gimp_display_set_image() more symmetric.
2009-10-07 20:11:48 +02:00
1ae5d6ad8d Use the local shell variable and don't call get_shell() again 2009-10-07 19:59:54 +02:00
6ad76d226e Use gimp_display_set_image() in gimp_display_new()
instead of manually calling gimp_display_connect(). Make
gimp_display_set_image() handle displays in construction
(which don't have a shell yet).
2009-10-07 19:42:08 +02:00
23cd244c65 Make display->instance private, add an accessor and use it everywhere 2009-10-06 09:16:46 +02:00
5d70d60927 Move the display ID to the private struct 2009-10-05 20:10:00 +02:00
c339125d7d Add private struct and move "shell" and "update_areas" there 2009-10-05 20:06:13 +02:00
297d205269 Use gimp_display_get_shell() also in gimpdisplay.c 2009-10-05 19:27:04 +02:00
161f1346db Create the new display ID in set_property() not in gimp_display_new()
Make the ID a read-only property and set it when the "gimp"
construct-only property gets set. Removes code from gimp_display_new()
where it doesn't belong.
2009-10-04 22:00:04 +02:00
18cbe3422e Add getters for "gimp", "image" and "shell" 2009-10-04 19:39:22 +02:00
4a0b826493 (gimp_display_new): add a local "shell" variable for more readable code 2009-10-04 19:30:32 +02:00
31a41c2b3d Use gimp_display_shell_present() instead of gtk_window_present() 2009-10-04 19:27:58 +02:00
dee0afed79 Move the statusbar back to GimpDisplayShell
Keeping it in GimpImageWindow was a bad idea because
- it wasted space
- it produced evil code because
- it conceptually didn't belong there
2009-10-04 15:33:03 +02:00
301e5c2c34 app: Maintain a list of GimpImageWindow:s on an app instance level 2009-10-04 02:10:11 +02:00
f6fd3aed51 Move GimpDisplayShell's expose functions to separate files 2009-10-02 23:55:26 +02:00
3d13f8d4d5 Tweak display finding logic of previous commit a bit
(gimp_display_new): add the new shell to the active display's image
window, not the first display's.
2009-10-02 21:50:02 +02:00
3106b66186 Finally enable multiple images in one window
(gimp_display_new): if single-window-mode is active, put the new shell
into the first display's image window.
2009-10-02 21:15:07 +02:00
625885eb9d Make sure the shell is really destroyed when removing it from the window
Explicitely call gtk_widget_destroy() to break whatever reference
cycles so the shell really goes away.
2009-10-01 19:44:13 +02:00
ee2fdbcf8f Enable some #if 0'ed code and use the just added API
gimp_display_delete(): remove shells from image windows with more than
one shell instead of destroying the window.
2009-09-29 23:01:33 +02:00
1c430a2b19 Move all GimpImageWindow members to a private struct
Add accessor functions for publically available members and visibility
functions for menubar and statusbar.
2009-09-29 21:44:43 +02:00
59274856ad Derive GimpDisplayShell from GtkVBox instead of GimpImageWindow
...and pack the widget into a separately created GimpImageWindow.
2009-09-29 20:56:14 +02:00
253b8e2cbe Use gimp_display_shell_get_window() instead of gtk_widget_get_toplevel()
The new function does the right thing, unlike get_toplevel() which
returns the shell itself if it is not in a window. Check the return
value of get_window() for being non-NULL.
2009-09-29 20:32:26 +02:00
35739c743c Change GimpImageWindow API to speak in shells, not displays
A widget container should keep around child widgets, not whatever
objects that just have widgets.
2009-09-28 22:55:55 +02:00
375a25dd24 Destroy the toplevel, not the shell in gimp_display_delete()
Also add disabled code that removes the display from an image window
that has more then one display.
2009-09-28 22:55:53 +02:00
5b5e4e039a Add gimp_image_window_add_display() and use it
This API is most likely not final, but enables adding the vbox of
shell widgets to the image window's vbox *after* the shell constructor
returns. Seems to work nicely :-)
2009-09-28 22:55:51 +02:00
2762100885 Show the shell after it has been associated with its image window, not before
...so the image window's session management has a chance to set
the window's size.
2009-09-28 22:55:46 +02:00
c7fdac4894 gimp_display_set_image(): emit notify::image only if the image changed 2009-09-28 22:55:44 +02:00
3547a25390 Add a GimpDisplayShell::scaled() handler to GimpImageWindow
...which is connected to the window's active display. Remove updating
the window's menubar_manager from GimpDisplayShell's scaled()
impl. Had to hack around a bit with the new API to set the window's
active display because they are still the same widget.
2009-09-28 22:55:39 +02:00
10b98034d4 Move the statusbar to GimpImageWindow
As with the menubar, port some code properly, and add some
horrible /* FIXME image window */ hacks to make it work.
2009-09-28 22:55:38 +02:00
d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
5aeb568650 s/gimp_container_children_type/gimp_container_get_children_type/
s/gimp_container_policy/gimp_container_get_policy/
s/gimp_container_num_children/gimp_container_get_n_children/

* app/actions/actions.c
* app/actions/file-actions.c
* app/actions/file-commands.c
* app/actions/tool-options-actions.c
* app/actions/tools-actions.c
* app/actions/tools-commands.c
* app/actions/vectors-actions.c
* app/core/gimpcontainer-filter.c
* app/core/gimpcontainer.c
* app/core/gimpcontainer.h
* app/core/gimpimage-convert.c
* app/core/gimpimage-flip.c
* app/core/gimpimage-merge.c
* app/core/gimpimage-resize.c
* app/core/gimpimage-rotate.c
* app/core/gimpimage-scale.c
* app/core/gimpimage-undo.c
* app/core/gimpimage.c
* app/core/gimpimagefile.c
* app/core/gimplist.c
* app/core/gimpundostack.c
* app/dialogs/palette-import-dialog.c
* app/dialogs/quit-dialog.c
* app/display/gimpdisplay.c
* app/display/gimpdisplayshell-layer-select.c
* app/display/gimpdisplayshell-title.c
* app/gui/gui-vtable.c
* app/menus/tool-options-menu.c
* app/tools/gimp-tools.c
* app/widgets/gimpcontrollerlist.c
* app/widgets/gimpimagepropview.c
* app/widgets/gimpsettingsbox.c
* app/widgets/gimpviewablebutton.c
* app/xcf/xcf-load.c
* app/xcf/xcf-save.c

svn path=/trunk/; revision=27692
2008-11-20 22:45:19 +00:00
a748e3f58e add new functions gimp_get_image_iter(), display_iter() and
2008-11-02  Michael Natterer  <mitch@gimp.org>

	* app/core/gimp.[ch]: add new functions gimp_get_image_iter(),
	display_iter() and tool_info_iter().

	* app/tools/gimp-tools.c
	* app/tools/gimptexttool.c
	* app/tools/gimpvectortool.c
	* app/dialogs/quit-dialog.c
	* app/gui/gui.c
	* app/menus/windows-menu.c
	* app/actions/images-commands.c
	* app/actions/tools-actions.c
	* app/actions/windows-actions.c
	* app/actions/tool-options-commands.c
	* app/display/gimpdisplay.c
	* app/display/gimpdisplay-foreach.c
	* app/widgets/gimptoolbox.c
	* tools/pdbgen/pdb/image.pdb: use them here.

	* app/pdb/image-cmds.c: regenerated.


svn path=/trunk/; revision=27526
2008-11-02 21:34:14 +00:00
5503e6a055 Add GEGL_CFLAGS and #includes as if gimpdrawable.h and gimpimage.h had a
2008-10-09  Michael Natterer  <mitch@gimp.org>

	Add GEGL_CFLAGS and #includes as if gimpdrawable.h and gimpimage.h
	had a GEGL dependency (they will have in the next commit, but I
	wanted to keep the commit separate).

	* app/dialogs/Makefile.am
	* app/file/Makefile.am
	* app/gui/Makefile.am
	* app/menus/Makefile.am
	* app/paint/Makefile.am
	* app/plug-in/Makefile.am
	* app/text/Makefile.am
	* app/vectors/Makefile.am
	* app/widgets/Makefile.am
	* app/xcf/Makefile.am: add GEGL_CFLAGS.

	* app/actions/*.c
	* app/core/*.c
	* app/dialogs/*.c
	* app/display/*.c
	* app/file/*.c
	* app/gui/*.c
	* app/menus/*.c
	* app/paint/*.c
	* app/pdb/gimppdb-utils.c
	* app/pdb/gimpprocedure.c
	* app/plug-in/*.c
	* app/text/*.c
	* app/tools/*.c
	* app/vectors/*.c
	* app/widgets/*.c
	* app/xcf/*.c: add <gegl.h> or replace <glib-object.h> by <gegl.h>
	to all files which include a drawable subclass or gimpimage.h

	* tools/pdbgen/app.pl: include <gegl.h> instead of <glib-object.h>
	in all generated files.

	* app/pdb/*-cmds.c: regenerated.

	* data/images/gimp-splash.png: the goat is still sleeping.
	By Aurore Derriennic.


svn path=/trunk/; revision=27202
2008-10-09 20:24:04 +00:00
dc62afec23 emit notify::image.
2008-05-10  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplay.c (gimp_display_set_image): emit
	notify::image.


svn path=/trunk/; revision=25622
2008-05-10 15:22:17 +00:00
fe11741319 added new function gimp_display_close() which decides if
2008-04-05  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplay.[ch]: added new function
	gimp_display_close() which decides if gimp_display_delete() or
	gimp_display_empty() needs to be called.

	* app/display/gimpdisplay-foreach.[ch]: added new function
	gimp_displays_close() and removed the 'do_quit' parameter from
	gimp_displays_delete().

	* app/gui/gui.c (gui_exit_callback): changed accordingly.

	* app/display/gimpdisplayshell-close.c: removed
	gimp_display_shell_really_close() and call gimp_display_close()
	instead.

	* app/display/gimpdisplayshell.c (gimp_display_shell_empty): 
moved
	code to update the ui managers here.

	* app/actions/file-commands.c (file_save_cmd_callback)
	(file_close_cmd_callback)
	* app/dialogs/file-save-dialog.c (file_save_dialog_response)
	* app/dialogs/quit-dialog.c (quit_close_all_dialog_response):
	close displays instead of deleting them.

	* app/gui/gui-vtable.c (gui_display_delete): call
	gimp_display_close().


svn path=/trunk/; revision=25377
2008-04-05 20:32:24 +00:00
d8269f2214 forgot the icon change here
svn path=/trunk/; revision=25228
2008-03-25 16:33:37 +00:00
54d306e8ea added a dialog factory for displays and register "gimp-no-image-window"
2008-03-23  Michael Natterer  <mitch@gimp.org>

	* app/dialogs/dialogs.[ch]: added a dialog factory for displays
	and register "gimp-no-image-window" with it.

	* app/display/gimpdisplay.[ch]: add a GimpDialogFactory parameter
	to gimp_display_new() and pass it on to gimp_display_shell_new().

	* app/display/gimpdisplayshell.[ch]: keep the passed
	GimpDialogFactory around. When the shell becomes empty, add it to
	the dialog factory and resize it to the remembered size; when it
	becomes non-empty, remove it from the dialog factory again.

	* app/gui/gui-vtable.c: pass the display dialog factory to
	gimp_display_new().


svn path=/trunk/; revision=25177
2008-03-23 13:40:39 +00:00
a098b12f55 add gimp_display_empty()/fill() which turns it into an empty display and
2008-03-19  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplay.[ch]: add gimp_display_empty()/fill()
	which turns it into an empty display and back.

	* app/display/gimpdisplayshell.[ch]: add same api here.

	* app/display/gimpdisplayshell-close.c
	* app/gui/gui-vtable.c: use the new functions instead of having
	the code here.

	* app/display/gimpdisplayshell-selection.c
	(gimp_display_shell_selection_control): stop the timeout and free
	the segments when this function is called on an empty display.


svn path=/trunk/; revision=25124
2008-03-19 16:15:50 +00:00
ebdd875ce7 deal with NULL image and unset the icon.
2008-03-19  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell.c (gimp_display_shell_update_icon):
	deal with NULL image and unset the icon.

	* app/display/gimpdisplay.c (gimp_display_set_image): unset the
	icon when no image is set.

	* app/display/gimpdisplayshell-title.c
	(gimp_display_shell_format_title): use GIMP_NAME as the window
	title when no image is set. Append GIMP_ACRONYM otherwise.

svn path=/trunk/; revision=25115
2008-03-19 09:11:04 +00:00