Commit Graph

149 Commits

Author SHA1 Message Date
Ryan Lortie
af71917015 GtkApplication: adjust to GApplication changes
GApplication now makes the session bus and object path available as a
public API on the application instance.  Use that instead of trying to
guess values for ourselves.

This causes this version of Gtk+ to depend on GLib 2.32.2, so bumping
version dependency accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=671249
2012-04-30 17:50:45 -04:00
Ryan Lortie
babd137e32 GtkApplication: fixes for NULL session bus
We currently have a couple of cases where GtkApplication assumes that
the session bus will be non-NULL causing critical error output or (in
the case of trying to publish menus) an infinite loop.

Three fixes:

 - if the session bus is NULL due to not having registered the
   GtkApplication yet then give a g_critical on the entry point to the
   menu setters instead of going into an infinite loop.  Document this.

 - check for NULL session bus even when calling the menu setters at the
   right time in order to prevent the infinite loop for
   non-programer-error cases (ie: because we had trouble connecting to
   the session bus)

 - check for NULL session bus when publishing the X11 properties on the
   GtkApplicationWindow and skip publishing them if we're not on the bus

https://bugzilla.gnome.org/show_bug.cgi?id=671249
2012-04-30 17:50:45 -04:00
Murray Cumming
d4c1b46a9e GtkAppplication docs: Fix small typo. 2012-04-19 09:26:00 +02:00
Murray Cumming
c00cfda370 GtkApplication Docs: Add a hint.
gtk_application_set_app_menu(), gtk_application_set_menubar():
Mention that you probably want to call this in the startup signal
handler. If you do it earlier you will likely get a warning about
a missing D-Bus connection, because doing it earlier does not
make sense anyway.
2012-03-28 11:26:22 +02:00
Murray Cumming
79758e3d98 Docs: GtkApplication: Hint about GtkActionMap 2012-03-26 10:51:46 +02:00
Javier Jardón
9d0febc9a6 Change FSF Address 2012-02-27 17:06:11 +00:00
Javier Jardón
df1ff836a8 gtk/gtkapplication.c: Do not use gtk_dialog_run() 2012-02-27 17:06:11 +00:00
Javier Jardón
80674d9dc0 docs: GtkApplication "quit" signal is gone now 2012-02-23 11:58:18 +00:00
Ryan Lortie
ef2df583f2 GtkApplication: simplify session quit handling
Instead of firing a 'quit' signal and expecting the application to do
something that will cause it to quit, just call the new
g_application_quit() API for ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=670485
2012-02-21 01:23:01 +01:00
Ryan Lortie
659c7130f0 GtkApplication: remove end session API
This seems a bit "too powerful" and unlikely to be used by most
applications.  Remove it from now, until someone comes up with a strong
desire for it.

https://bugzilla.gnome.org/show_bug.cgi?id=670485
2012-02-21 01:23:01 +01:00
Matthias Clasen
585a6652d5 Use G_SOURCE_CONTINUE/REMOVE
Now that GLib provides these macros, we should use them
to make the code more readable.
2012-01-30 19:12:27 -05:00
Cosimo Cecchi
c76cccd437 application: sync clipboard and recent manager on shutdown
This mimics the code for gtk_main(), since GApplication iterates the
main context directly.
2012-01-25 18:31:25 -05:00
Matthias Clasen
7d56c052d4 Fix a doc typo 2012-01-24 22:28:34 -05:00
Matthias Clasen
e7d6400149 GtkApplication: documentation additions
Document that startup() needs to chain up first.
2012-01-24 22:22:08 -05:00
Matthias Clasen
284ff06ef6 GtkApplication: fix !x11 build
Since we moved the menu models to GTK+, we need to deal with
them on all platforms, even if we don't do anything special
with them on win32.
2012-01-20 08:16:35 -05:00
Ryan Lortie
60317cbf1a move menus over from GLib
App menu and menubar are now properties of GtkApplication and their bus
location is exported using X window properties.

https://bugzilla.gnome.org/show_bug.cgi?id=668118
2012-01-18 13:40:05 -05:00
Javier Jardón
c958667a92 gtkapplication.c: Add missing "Since" tag 2012-01-12 12:58:56 +00:00
Dan Winship
05c484dcb0 GtkApplication: add inhibitor dialog under OS X
Since OS X doesn't have an inhibitors API, we need to display the
inhibit reason ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=667705
2012-01-11 12:00:06 -05:00
Dan Winship
7afc7081c1 GtkApplication: fix/simplify OS X implementation
Make the OS X implementation compile, and remove the code that was
only needed to support user interaction during the quit request.

https://bugzilla.gnome.org/show_bug.cgi?id=667705
2012-01-11 12:00:06 -05:00
Rico Tzschichholz
f24dd8f067 Fix some missing renames of GtkApplicationEndStyle 2012-01-11 08:49:34 +01:00
Matthias Clasen
7c0c65ec8d Rename GtkApplicationEndStyle
Call it EndSession to make it clearer what this is about.
2012-01-10 22:16:01 -05:00
Matthias Clasen
1c486fb8b8 Simplify logout notification api
We don't expose ::quit-requested as API anymore. Instead, we expect
users to register inhibitors when needed. Without quit-requested,
there is no need for ::quit-cancelled and gtk_application_quit_response
anymore.

We still emit ::quit when the application is about to quit.
2012-01-10 21:45:30 -05:00
Matthias Clasen
9cb4518a24 Fix wrong refencences in the docs
Replace all references to g_application_set_app_menu and
g_application_set_menubar by their gtk variants, which
actually exist. Pointed out in bug 667546
2012-01-09 17:30:09 -05:00
Rob Bradford
4007449a58 application: Correct the fallback definition for gtk_application_end_session
The function definition used a pointer to the enum value rather than the enum
itself.

This broke the build on platforms that don't have an implmentation of these
functions.
2012-01-09 15:09:27 +00:00
Matthias Clasen
f3533e4fc2 Fix the gtk_application_end_session implementation
We were passing the wrong flags, causing the meaning of
the request_confirmation parameter to be inverted.
2012-01-08 02:16:26 -05:00
Matthias Clasen
f78696f3d0 GtkApplication: only allow quit_response when it make sense
This check was present in the OS X implementation, but it
makes sense in the D-Bus implementation as well.
2012-01-07 20:01:23 -05:00
Matthias Clasen
00d5214695 Remove some debug spew 2012-01-07 19:55:20 -05:00
Matthias Clasen
bb957e5389 GtkApplication: Add OS X implementation from EggSMClient 2012-01-07 19:52:14 -05:00
Benjamin Otte
f6d2f4fa8d application: return a value 2012-01-07 15:56:26 +01:00
Martin Pitt
700a334d87 gtkapplication.c: Fix syntax error
Previous commit accidentally removed the closing } from
gtk_application_end_session(). Add it back to unbreak the build.
2012-01-07 10:04:18 +01:00
Matthias Clasen
916009b5d6 Add a trivial implementation of the new apis
For non-X11, this is just a placeholder until we get around
to moving the EggSMClient implementations over.
2012-01-07 03:20:56 -05:00
Matthias Clasen
48872705f0 Document the new apis 2012-01-07 03:20:56 -05:00
Matthias Clasen
3142d13972 Add gtk_application_end_session
This function allows applications to request that
the user session be ended by logout/shutdown/reboot.
2012-01-07 03:20:56 -05:00
Matthias Clasen
bdd7e15c84 GtkApplication: Add an inhibit api
This lets applications block logout and similar actions ahead
of time. Currently only implemented for D-Bus, but Windows has
very similar API since Vista.
2012-01-07 03:20:56 -05:00
Matthias Clasen
3133791302 GtkApplication: Add logout notification
This is fairly basic, allowing applications to learn when
the session manager is about to end the session, and possibly
block this. The only implementation at this point is using the
org.gnome.SessionManager D-Bus interface of gnome-session. It should
be straightforward to port the EggSMClient implementations for
Windows and OS X.
2012-01-07 03:20:56 -05:00
Matthias Clasen
7df5cf2a3a GtkApplication: Rename a member for clarity
'session' is a bit ambiguous (and GtkApplication may grow session
management support at some point), so rename the bus connection
to 'session_bus'.
2012-01-05 23:53:40 -05:00
Cosimo Cecchi
157d9271fa application: don't unconditionally unref the GMenuModel in getters
Both the app-menu and menubar models can be NULL, so we shouldn't
blindly unref them, since g_object_unref() doesn't cope with NULL
pointers.
2011-12-21 12:20:15 +01:00
Cosimo Cecchi
72c04c064a application: mark menu/menubar getters as (transfer none)
Since they do not return a reference to the underlying GMenuModel.
2011-12-21 12:19:31 +01:00
Cosimo Cecchi
9ae0ffb9cb application: use the same variable names in definitions and declarations
gobject-introspection will be confused and mark the methods as not
introspectable otherwise.
2011-12-21 11:29:39 +01:00
Matthias Clasen
5d8641dd92 Add another bloatpad screenshot 2011-12-19 15:16:11 -05:00
Ryan Lortie
8578fefaa5 GtkApplication: add menu API
We add the app-menu and menubar public APIs to GtkApplication while
leaving the implementation in GApplication.

The actual implementation will be moved soon.
2011-12-19 12:51:12 -05:00
Ryan Lortie
06c8921975 GtkApplication: document relationship to gdkthreads 2011-12-19 12:51:12 -05:00
Ryan Lortie
363c2d684c GtkApplication: lock gdk on incoming messages
When we have incoming activations or action invocations we should
acquire the GDK lock, just in case the program in question is using gdk
threads.

https://bugzilla.gnome.org/show_bug.cgi?id=665737
2011-12-19 12:51:12 -05:00
Ryan Lortie
76d671d6a2 Move X property handling to GtkApplicationWindow
Don't try to deal with this using a qdata and signal connections in
GtkApplication.
2011-12-19 12:51:12 -05:00
Matthias Clasen
cff5ba1bc2 Document that gtk_init is called without argv
This answers a question in bug 661823.
2011-12-19 12:51:12 -05:00
Matthias Clasen
080007d7cb Show off some menus 2011-12-19 12:51:12 -05:00
Matthias Clasen
06a75b7e1f Some more menu-related docs 2011-12-19 12:51:12 -05:00
Matthias Clasen
3103ae2685 Two small fixes
Don't leak a session bus reference, and don't assume a display
is X11 just because we've built the X11 backend.
2011-12-19 12:51:12 -05:00
William Hua
8bc7513a7b begin GtkApplication menu support for Mac OS 2011-12-19 12:51:11 -05:00
Matthias Clasen
f485dd3f08 Documentation additions 2011-12-19 12:51:11 -05:00
Matthias Clasen
f7244431a9 GtkApplication: Extract accelerators from menus
This allows to specify accelerators in a convenient way, by
adding accel="..." attributes to the menu items in the
XML for the menu.

Currently, the accelerators are extracted only once, when the
menu property is changed on the application.
2011-12-19 12:51:11 -05:00
Matthias Clasen
2398d7e900 Introduce gtkaccelmapprivate.h
Move internal accel map API there and update all users.
Also, add an internal function to create an accel path for
an action and parameter, and use it in gtkapplication.c and
gtkmodelmenuitem.c instead of duplicating that code.
2011-12-19 12:51:11 -05:00
Matthias Clasen
153cc818db GtkApplication: Add API to install accelerators for actions 2011-12-19 12:51:11 -05:00
Ryan Lortie
90fcf994d5 GtkApplication: export windows on the bus
And advertise their location on the bus using X11 properties.
2011-12-19 12:51:11 -05:00
Ryan Lortie
03db3e1ca1 (trivially) implement 'shutdown' in GtkApplication 2011-12-19 12:51:11 -05:00
Matthias Clasen
7ef340fb87 Clean up includes 2011-12-19 12:51:10 -05:00
Matthias Clasen
0683f086bb Whitespace fixes 2011-12-19 12:51:09 -05:00
Matthias Clasen
d9c3714fcb GtkApplication: doc improvement 2011-12-19 12:51:08 -05:00
Ryan Lortie
a93b9dd1cb add GtkApplicationWindow
This is a GtkWindow subclass that "application windows" will use.  Each
is associated with a GtkApplication, has the ability to show menus and
will have its own associated set of actions.
2011-12-19 12:51:08 -05:00
Matthias Clasen
6b7be4a3a2 Add a very bad fallback check
...maybe committing this inspires some better solution.
2011-12-19 12:51:07 -05:00
Matthias Clasen
5705a330c2 GtkApplication: Insert separators after sections
The previous code was only inserting a separator when a new
section was starting right away, which may not always be the
case.
2011-12-19 12:45:51 -05:00
Matthias Clasen
5aee67793f GtkApplication: Initial attempt at section headings
This should be redone to show the label together with the
separator line, somehow. For now, just put the label below
the separator, as a separate item.
2011-12-19 12:45:51 -05:00
Matthias Clasen
92af3d04b8 GtkApplication: use activate for actions here, too 2011-12-19 12:45:51 -05:00
Matthias Clasen
95d9a5e368 Adapt to api changes in GMenuModel 2011-12-19 12:45:51 -05:00
Matthias Clasen
cc24dbe9c7 GtkApplication: add a way to get the appmenu
This function either returns a GtkMenu or NULL.
Still to do: detect if the app menu is externally handled.
2011-12-19 12:45:51 -05:00
Javier Jardón
5c6656e485 gtk/gtkapplication.c: Fix typo 2011-11-20 23:05:47 +00:00
Matthias Clasen
190c271986 Add a missing include 2011-11-09 22:03:10 -05:00
Ryan Lortie
7e22a5350c Don't implement GApplication mainloop
Let the default GApplication implementation take care of it.

https://bugzilla.gnome.org/show_bug.cgi?id=658805
2011-11-09 00:22:52 -05:00
Ryan Lortie
f86351c05f GtkApplication: chain up ::startup 2011-09-14 14:04:10 -04:00
Claudio Saavedra
c3b7590c77 Avoid GApplication being released twice on gtk_application_remove_window() calls
Removing the window from the window list before setting the
application to %NULL avoids gtk_application_remove_window() triggering
another call to gtk_application_window_removed(), which would release
the application a second time.

https://bugzilla.gnome.org/show_bug.cgi?id=653053
2011-06-21 00:38:33 +03:00
Matthias Clasen
8143ce69eb GtkApplication: Add window-added/-removed signals
This is useful to let unrelated parts of an application (or
plugins) learn about the windows of an application. Based
on a patch by Matt Barnes,
https://bugzilla.gnome.org/show_bug.cgi?id=641087
2011-05-31 19:12:13 -04:00
Matthias Clasen
75390b2d60 Sort GtkApplication windows by most-recently-focused
Based on a patch by Matt Barnes,
https://bugzilla.gnome.org/show_bug.cgi?id=624539
2011-05-31 18:28:55 -04:00
Matthias Clasen
7db4bee4b6 Clarify documentation about application vs window lifecycle
https://bugzilla.gnome.org/show_bug.cgi?id=639931
2011-01-24 22:20:35 -05:00
Pavel Holejsovsky
9389054da2 [GI] Add (type) annotations to real types 2011-01-20 10:38:38 +01:00
Matthias Clasen
f2cde4cf3b Move the GtkApplication example to the right place 2011-01-06 01:13:50 -05:00
Hans Breuer
fc122305d0 Protect inclusion of unistd.h 2011-01-02 13:29:23 +01:00
Matthias Clasen
9157e15653 GtkApplication: drop Quit from the docs
GtkApplication does not currently implement any default actions.
2010-11-08 11:31:01 +09:00
Matthias Clasen
ac0b97aa23 ifdef X-specific stuff
gdk_x11_ APIs can only be used inside #ifdef GDK_WINDOWING_X11.
2010-10-30 17:37:01 +09:00
Matthias Clasen
1be9b7f782 Some GtkApplication cleanups
Remove no-longer-needed vfuncs, no longer existing functions,
and improve the docs here and there.
2010-10-23 21:24:24 +02:00
Javier Jardón
9f035742e3 gtkapplication: fix docs 2010-10-20 11:07:11 +02:00
Ryan Lortie
c5ebb61b6f GtkApplication: add gtk_application_get_windows()
Return a GList of the GtkWindow objects for each window that has the
application set as its "application" property.
2010-10-19 21:10:02 +02:00
Ryan Lortie
ab5fb5dee5 GtkApplication rewrite 2010-10-19 01:31:09 +02:00
Jonh Wendell
5c2966dda3 Do not access an invalid ActionGroup. Closes #624362. 2010-07-14 14:50:28 -03:00
Jonh Wendell
5f1b5d2406 Merge branch 'windows_list' 2010-07-13 16:49:21 -03:00
Javier Jardón
0a07e9733b gtk/: fully remove gtkalias hacks
https://bugzilla.gnome.org/show_bug.cgi?id=623845
2010-07-10 02:51:26 +02:00
Emmanuele Bassi
15646b6e74 docs: Document the GtkApplication::quit signal behavior
And add Since: annotations to the GtkApplication signals.
2010-07-08 14:12:27 +01:00
Ryan Lortie
424842e3a9 GtkApplication: use new GVariant bytestring API 2010-07-07 16:37:55 -04:00
Jonh Wendell
9125ccb1cb [GtkApplication] Add gtk_application_get_windows()
Closes #623598.
2010-07-05 17:12:53 -03:00
Emmanuele Bassi
b98667d41e application: Remove a variable and silence a compiler warning 2010-06-18 14:26:57 +01:00
Emmanuele Bassi
2755b93913 application: Revert the leak plug
The &s in the signature of a GVariant means "pass me a pointer". To
avoid repeating the same mistake, use a const gchar* to declare the
key.
2010-06-18 14:26:05 +01:00
Emmanuele Bassi
3e1b82336c application: Plug a leak
The key returned by g_variant_iter_next() should be freed as well.

Also, clean up the coding style a bit.
2010-06-18 12:06:39 +01:00
Christian Persch
9d0b941da6 application: Fix marshaler for GVariant gtype change
Use VARIANT instead of BOXED.
2010-06-18 00:25:06 +02:00
Emmanuele Bassi
4f357dbf95 application: Allow sub-classes to override the Window creation
Sub-classes of GtkApplication might want to override the way an
application window is created - for instance, to hook into GtkBuilder
or to set up some basic UI or state.

A new GtkApplication::create_window() virtual function is added to the
GtkApplicationClass vtable, which returns the newly created GtkWindow.
The gtk_application_create_window() function calls the vfunc and adds
the returned window to the list of windows managed by the application
instance.

Calling gtk_application_add_window() will also set the default window,
if one is not already set.

This commit also removes a spurious g_object_ref_sink() on the newly
created GtkWindow.
2010-06-17 15:41:12 +01:00
Colin Walters
bdaefd7efe [GtkApplication] Update for GApplication API changes
Move appid parameter first to match GApplication.
2010-06-16 11:02:39 -04:00
Colin Walters
6c71da01cc [GtkApplication] Update for GApplication API changes
We now implement "quit" and "action" signals here.

https://bugzilla.gnome.org/show_bug.cgi?id=621003
2010-06-14 18:30:51 -04:00
Matthias Clasen
79b161f709 Use gtk_action_group_get_action when looking up actions
...instead of open-coding it. Pointed out by Christian Persch
in bug 620960
2010-06-08 09:03:07 -04:00
Matthias Clasen
cca298ad7d Remove debug spew 2010-06-08 08:58:16 -04:00
Matthias Clasen
b366ae9c22 Update to GApplication api changes 2010-06-08 08:29:01 -04:00
Matthias Clasen
1ae257d00a Add GtkApplication
This is a work in progress to stub out an application class. The
primary goal is to provide a mechanism for applications to export
GtkActions, and there is a standard "Quit" action.

This is based on GApplication.

Future work:
 * Add a way to say "This is my application menubar", which gets
   put into all toplevel windows on non-OS-X, and into the top
   on OS X.
 * Support session management.
 * Support application settings.

https://bugzilla.gnome.org/show_bug.cgi?id=127958
2010-06-07 16:46:30 -04:00