Commit Graph

2404 Commits

Author SHA1 Message Date
Martin Nordholts b55c545359 app: Kill UI configurer gracefully
Kill UI configurer gracefully so it's easier to find real leaks.
2010-06-24 22:59:37 +02:00
Michael Natterer 6eda16d550 app: call dialogs_exit() after controllers_exit() and devices_exit()
which would have been the correct oder all the time, because these
systems are initialized in reverse order. The wrong order didn't
matter until now, but for some reason it now sometimes triggered
warnings about dialog_factories being NULL during controllers
shutdown.
2010-06-18 09:11:14 +02:00
Martin Nordholts d7dc2dc1ab app: Make tooltips in the toolbox work again
We need to be able to pass a GimpUIManager to
gimp_dialog_factory_dialog_new(), so make that possible. Also make
sure to set ui_manager in gimp_dialog_factory_dialog_new_internal()
when we create both a dock window and a dock, so tooltips works in
toolboxes created from scratch.
2010-05-16 12:19:18 +02:00
Michael Natterer a0358f7c64 Depend on GLib >= 2.24.0 and GTK+ 2.20.0 2010-04-19 19:03:08 +02:00
Martin Nordholts 798e2e67e9 app: Move toolbox special casing into dialog factory
Move toolbox special casing into
gimp_dialog_factory_dialog_new_internal() and on the fly fix problems
with double toolboxes appearing and sometimes not appearing.
2010-03-02 22:38:15 +01:00
Martin Nordholts 11b1300b6f app: Introduce gimp_dialog_factory_get_singleton()
Instead of including dialogs/dialogs.h everywhere, introduce
gimp_dialog_factory_get_singleton(). The dialog factory singleton is
still initialized by dialogs.c though.

Right now the assumption is that we never will have another dialog
factory instance around. There were so many problems before when we
had four of them, so let's just keep one of them around.
2010-02-28 23:23:24 +01:00
Martin Nordholts 947e28596f app: Remove gimp_dialog_factory_from_name()
We only have one dialog factory now, and
gimp_dialog_factory_from_name() doesn't provide compile-time type
safety, so use global_dialog_factory directly instead.
2010-02-28 20:02:45 +01:00
Martin Nordholts 2a51c69e9b app: Set_busy() on individual dialog factories 2010-02-28 20:02:45 +01:00
Martin Nordholts 87d89ce990 app: Save and restore dialog factories explicitly
With only one dialog factory around the for-each functions are not
needed any more. Remove them, starting with save and restore.
2010-02-28 16:23:32 +01:00
Martin Nordholts 82a0b95147 app: Update image window side docks visiblity from the image window
Update image window side docks visiblity from the image window itself
instead of from the ui configurer. The image window has a dependency
to the config object anyway, so no need to complicate things.
2010-02-24 19:53:48 +01:00
Martin Nordholts f0ba888c06 app: Don't show toolbox when last image is closed
Don't show toolbox when last image is closed. We don't need to do that
any longer after the introduction of the empty image window.
2010-02-20 14:28:08 +01:00
Martin Nordholts dec798e0df app: Serialize factory entry name along with GimpSessionInfo
Serialize factory entry name along with GimpSessionInfo so we can make
the Recently Closed Docks feature work across sessions in a natural
way.
2010-02-20 13:05:16 +01:00
Martin Nordholts 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
Martin Nordholts c3619fb85c app: Merge "toplevel" and "display" factories
Merge "toplevel" and "display" factories so that we only have one
dialog factory. This allows us to get rid of a lot of special casing.
2010-02-20 10:58:29 +01:00
Martin Nordholts 8b458fb591 app: Merge "toplevel" and "dock" dialog factories
Merge "toplevel" and "dock" dialog factories. The end goal is to have
only one dialog factory.
2010-02-20 09:28:26 +01:00
Martin Nordholts 1093462ae9 app: Merge 'global_toolbox_factory' into 'global_dock_factory'
Get rid of 'global_toolbox_factory' and manage everything dock-related
with 'global_dock_factory'. The whole of 'global_toolbox_factory' was
a big special-case and getting rid of it makes it easier to extend the
session management with e.g. single-window mode dock functionality.

To get rid of 'global_toolbox_factory' we, roughly, have to
 * Replace 'global_toolbox_factory' with 'global_dock_factory'
   everywhere. We can also get rid of lots of code that did special
   things for the "toolbox" factory.
 * Make the use or interaction with the toolbox explicit in some
   places. For example, a function gimp_dock_window_has_toolbox() has
   been introduced.
 * Make GimpSessionInfoDock have an 'identifier' parameter so we can
   differentiate between the "gimp-dock" and "gimp-toolbox" dock
   types.
2010-01-20 18:29:54 +01:00
Martin Nordholts 66197c5d11 app: global_dock_window_factory -> global_dock_factory
Rename back global_dock_window_factory to
global_dock_factory. Renaming to global_dock_window_factory was done
under the assumption that there would be a separate factory that would
create non-toplevel dockables, but I don't expect this to happen in
the forseeable future.
2010-01-19 22:40:06 +01:00
Martin Nordholts 56a8cb68a8 app: Have dialog factory entries for the dock windows
Let dock windows have proper GimpDialogFactory entries. This allows us
to get rid of a lot of ugly mostly duplicated code. This also makes us
ready the merge the dock window and toolbox factories which will soon
be done. A few things should be noted:

 * We adjust the wrap box aspect ratio in the toolbox to avoid having
   the toolbox dock window explode

 * We make sure that we still can handle sessionrc files from GIMP 2.6
   and older
2010-01-19 22:24:17 +01:00
Martin Nordholts 33573b466b app: Check for dirty images before forcing single-window mode
Check for dirty images before forcing single-window mode since it is
annoying to have the UI split up and _then_ being asked about unsaved
images. The user might even click 'Cancel' in which case the UI will
have been switched to multi-window mode.
2010-01-06 18:19:20 +01:00
Martin Nordholts 8a66f9357f app: Prevent losing dockables, force multi-window mode on exit
In order to prevent people from losing dockable dialogs, force
multi-window mode on exit. This is a workaround until single-window
mode is session managed.

This idea comes from some guy in the IRC channel who I unfortunately
forgot the name of and fail to find in the logs.
2010-01-05 13:21:09 +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
Martin Nordholts 8699511bbd app: global_dock_window_factory -> global_dock_factory
With GimpDock not being a toplevel any longer, it makes more sense to
name global_dock_factory global_dock_window_factory. Do that.
2009-12-20 14:41:02 +01: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 b1b560b0c4 app: Only kill living dock windows when switching to s-w-m
Only kill living dock windows when switching to single-window
mode. When we remove the last dock in a non-toolbox dock window, it
will commit suicide.
2009-12-06 09:50:02 +01:00
Martin Nordholts 13bac61020 app: Move g_list_copy() out from gimp_dock_columns_get_docks()
Move g_list_copy() out from gimp_dock_columns_get_docks(). Fixes at
least one memory leak (in gimp_dock_window_get_dock()) and feels nicer
and more flexible.
2009-11-15 19:21:57 +01:00
Martin Nordholts 521543106c app: Enable repeated toggling between Multi- and Single-window mode
Enable repeated toggling between Multi- an Single-window mode. When
enabling Single-window mode all docks and displays are put in a single
window. When disabling Single-window mode they are moved out to their
own windows again.
2009-10-25 22:05:57 +01:00
Martin Nordholts d7c61bade9 app: Copy dialogs list so we can remove while we iterate 2009-10-25 20:35:49 +01:00
Martin Nordholts ca5fbf45d4 app: gimp_get_image_window_iter() -> gimp_get_image_windows()
Rename gimp_get_image_window_iter() to gimp_get_image_windows() and
make it return a copy of the list of windows. Typically we will kill
or create new windows when we use this function which is why we do a
copy.
2009-10-25 20:31:55 +01:00
Martin Nordholts 39ee4ffa43 app: Use gimp_dock_window_remove_dock() not gtk_container_remove()
Since we added a GimpDockColumns to GimpDockWindows we need to use
gimp_dock_window_remove_dock() not gtk_container_remove(). This makes
"Windows→Single-window mode" work as before again.
2009-10-25 20:27:28 +01:00
Martin Nordholts 6f95bc6888 app: Keep GimpDocks in GtkPaneds in GimpDockColumns
Use the new GimpPanedBox to make the space for GimpDocks in
GimpDockColumns manually distributable by the use of GtkPaneds.
2009-10-24 20:10:42 +02:00
Michael Natterer c58eee0229 gui_sanity_check(): bump GTK+ dependency here too 2009-10-17 17:49:28 +02:00
Michael Natterer 454f1391d6 Use gtk_widget_get_window() instead of widget->window 2009-10-09 21:19:07 +02:00
Michael Natterer c5b856f16f Use gimp_display_get_image() instead of display->image 2009-10-06 19:20:44 +02:00
Michael Natterer d1ded0617f More gimp_display_get_shell() instead of display->shell 2009-10-05 19:58:03 +02:00
Michael Natterer ac98c2c234 Use gimp_display_get_shell() instead of directly accessing it 2009-10-04 19:56:39 +02:00
Michael Natterer 31a41c2b3d Use gimp_display_shell_present() instead of gtk_window_present() 2009-10-04 19:27:58 +02:00
Michael Natterer 27994481c9 (gimp_dbus_service_activate): present the toplevel not the shell 2009-10-04 15:50:28 +02:00
Michael Natterer 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
Martin Nordholts fcf5895575 app: Move docks to image window in 'Single-window mode'
When 'Single-window mode is enabled, move the toolbox and existing
docks into the image window. Needs a lot of more work but is
functional enough for curious people.

Implemented by adding a new GimpUIConfigurer component that has global
knowledge. There is a single application instance of this
component. It subscribes to changes in the single-window-mode config
property and adjusts the UI accordingly.
2009-10-04 02:10:11 +02:00
Michael Natterer 98a4653186 (gui_display_get_window): return the ID of the toplevel, not of the shell 2009-09-30 17:01:55 +02:00
Michael Natterer 97f556160f Remove #include "display/gimpimagewindow.h" 2009-09-30 15:00:09 +02:00
Michael Natterer ccdab9e4cd Make updagin the image window's ui manager more sane
(gimp_image_window_image_notify): update the ui manager unconditionally
(both when a display is emptied *and* filled)

(gui_display_create): remove updating code here. It was not belonging
here anyway and the image window does the right thing now.
2009-09-30 00:00:36 +02:00
Michael Natterer 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
Michael Natterer 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
Michael Natterer 87001c1b3a gtk_window_present() the toplevel, not the shell 2009-09-28 22:55:54 +02:00
Michael Natterer 54edc20113 Add missing #include "gimpimagewindow.h" 2009-09-28 22:55:54 +02:00
Michael Natterer accdd3d8a1 Go via the toplevel to get to the menubar manager 2009-09-28 22:55:52 +02:00
Michael Natterer 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
Michael Natterer 6793d68769 Move the menubar and the menubar_manager to GimpImageWindow
Also move some of their related code and update other code to
go via gtk_widget_get_toplevel(), but also add some horrid temp
/* FIXME image window */ hacks.
2009-09-28 22:55:38 +02:00
Sven Neumann fa628b580a Revert part of commit c8853243ea
g_str_equal() is a hash function and should not be used instead of
strcmp() as it doesn't provide a proper signature.
2009-09-20 20:34:32 +02:00