Commit Graph

187 Commits

Author SHA1 Message Date
Javier Jardón
214a023e91 Deprecate widget flag: GTK_WIDGET_VISIBLE
Use gtk_widget_get_visible() instead

https://bugzilla.gnome.org/show_bug.cgi?id=69872
2010-03-01 07:52:07 +01:00
Javier Jardón
64f526d34e Deprecate widget flag: GTK_WIDGET_SENSITIVE
Use gtk_widget_get_sensitive() instead

https://bugzilla.gnome.org/show_bug.cgi?id=69872
2010-03-01 05:59:23 +01:00
Javier Jardón
4f78f70b15 Deprecate widget flag: GTK_WIDGET_DRAWABLE
Use gtk_widget_is_drawable() instead.

https://bugzilla.gnome.org/show_bug.cgi?id=69872
2010-03-01 04:55:55 +01:00
Johan Dahlin
fe85272112 [annotations] Add allow-none
This commit was created using a script that searched for all docstrings
containing a parameter and the string 'or %NULL'.
Gdk backends and demos excluded as they are not part of a public API

https://bugzilla.gnome.org/show_bug.cgi?id=610474
2010-02-19 17:57:51 -02:00
Cody Russell
2147e57f46 Remove existing signal connections in gtk_drag_dest_unset().
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=608370
2010-01-29 11:10:16 -06:00
Christian Dywan
bb1824c131 Deprecate flag macros for toplevel, state, no window and composite child
Deprecate widget flag macros GTK_WIDGET_STATE, GTK_WIDGET_SAVED_STATE,
GTK_WIDGET_FLAGS, GTK_WIDGET_TOPLEVEL, GTK_WIDGET_NO_WINDOW and
GTK_WIDGET_COMPOSITE_CHILD.

Also deprecate the type macros GTK_WIDGET_TYPE, GTK_OBJECT_TYPE_NAME and
GTK_OBJECT_TYPE which have become redundant.

Instances of GTK_WIDGET_TOPLEVEL are replaced with gtk_widget_is_toplevel,
GTK_WIDGET_TYPE is replaced with G_OBJECT_TYPE, GTK_WIDGET_COMPOSITE_CHILD
is replaced with use of the "composite-child" property and uses of
GTK_WIDGET_NO_WINDOW are adjusted to use gtk_widget_get_has_window.

Uses of GTK_WIDGET_SAVED_STATE and GTK_WIDGET_FLAGS inside GtkWidget are
changed to direct flag usage.

Documentation is updated to refer to gtk_widget_set_has_window and
gtk_widget_get_has_window.

Gail and tests are updated as well.

Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=69872
2010-01-04 07:57:05 +01:00
Colin Walters
6529c07614 [introspection] Merge in Gtk-custom.c annotations
The Gtk-custom.c file in gir-repository contained a number of
introspection annotations.  Merge those into the GTK source files.

Some documentation was moved from the tmpl/ files to accomodate
the addition of annotations.
2009-12-16 17:22:01 -02:00
Robin Stocker
26e2c7f398 Example for setting default action in gtk_drag_dest_set 2009-11-08 01:35:42 +01:00
Benjamin Otte
1a385c50f0 fix compile warnings
Fallout from running make CFLAGS="-Werror"; mostly missing casts and
constness issues.
2009-06-17 10:28:03 +02:00
Matthias Clasen
f02dedde6d Don't export a private function 2009-06-15 20:05:49 -04:00
Matthias Clasen
c981ddf92f Don't grab the keyboard during DND
Instead use passive grabs for the few keys we care about.
With a corresponding metacity change, this will allow workspace
switching and focus cycling during DND, which is very useful.
Fixes bug 390312.
2009-06-07 22:19:52 -04:00
Matthias Clasen
1be770bc40 improve deprecation annotation
svn path=/trunk/; revision=21819
2008-11-29 07:19:12 +00:00
Sven Neumann
b699ac5853 gtk/gtkaccellabel.c gtk/gtkaction.c gtk/gtkclist.c gtk/gtkcolorbutton.c
2008-08-12  Sven Neumann  <sven@gimp.org>

	* gtk/gtkaccellabel.c
	* gtk/gtkaction.c
	* gtk/gtkclist.c
	* gtk/gtkcolorbutton.c
	* gtk/gtkctree.c
	* gtk/gtkdialog.c
	* gtk/gtkdnd-quartz.c
	* gtk/gtkdnd.c
	* gtk/gtkentry.c
	* gtk/gtkfilechooserdefault.c
	* gtk/gtkfilesel.c
	* gtk/gtkgamma.c
	* gtk/gtkiconview.c
	* gtk/gtkkeyhash.c
	* gtk/gtklabel.c
	* gtk/gtkmenu.c
	* gtk/gtkmenubar.c
	* gtk/gtkpaned.c
	* gtk/gtkrecentchooserdialog.c
	* gtk/gtkrecentchooserutils.c
	* gtk/gtkselection.c
	* gtk/gtksizegroup.c
	* gtk/gtktextbtree.c
	* gtk/gtktextbuffer.c
	* gtk/gtktextview.c
	* gtk/gtktoolbar.c
	* gtk/gtktreemodel.c
	* gtk/gtkuimanager.c
	* gtk/gtkwindow-decorate.c
	* gtk/gtkwindow.c: use canonical signal names in some more places
	that I missed earlier. Also changed this in the documentation and
	comments.


svn path=/trunk/; revision=21094
2008-08-12 14:37:03 +00:00
Sven Neumann
4c33ae06be gtk/gtkdnd-quartz.c gtk/gtkdnd.c gtk/gtkentry.c gtk/gtkfilesel.c
2008-08-11  Sven Neumann  <sven@gimp.org>

	* gtk/gtkdnd-quartz.c
	* gtk/gtkdnd.c
	* gtk/gtkentry.c
	* gtk/gtkfilesel.c
	* gtk/gtkimcontextsimple.c
	* gtk/gtkimmulticontext.c
	* gtk/gtkoptionmenu.c
	* gtk/gtkplug.c
	* gtk/gtkrecentchooserdefault.c
	* gtk/gtkscrolledwindow.c
	* gtk/gtksocket-x11.c: use canonical signal names in some more
	places that I missed earlier.


svn path=/trunk/; revision=21069
2008-08-11 13:36:15 +00:00
Sven Neumann
2a95978506 gtk/gtkaboutdialog.c gtk/gtkcellrendereraccel.c gtk/gtkcellrenderercombo.c
2008-08-11  Sven Neumann  <sven@gimp.org>

	* gtk/gtkaboutdialog.c
	* gtk/gtkcellrendereraccel.c
	* gtk/gtkcellrenderercombo.c
	* gtk/gtkcellrendererspin.c
	* gtk/gtkcellrenderertext.c
	* gtk/gtkclipboard.c
	* gtk/gtkcolorsel.c
	* gtk/gtkcombo.c
	* gtk/gtkcombobox.c
	* gtk/gtkdnd-quartz.c
	* gtk/gtkdnd.c
	* gtk/gtkentry.c
	* gtk/gtkentrycompletion.c
	* gtk/gtkfilechooserbutton.c
	* gtk/gtkfilechooserdefault.c
	* gtk/gtkfilechooserentry.c
	* gtk/gtkfontsel.c
	* gtk/gtkinputdialog.c
	* gtk/gtkmenutoolbutton.c
	* gtk/gtkpathbar.c
	* gtk/gtktooltip.c: use canonical signal names in 
g_signal_connect().


svn path=/trunk/; revision=21060
2008-08-11 09:17:49 +00:00
Cody Russell
57223c9a05 Revert name change
svn path=/trunk/; revision=20724
2008-07-01 22:57:50 +00:00
Cody Russell
fce9c8b7d4 Practically everything changed.
2008-06-30  Cody Russell  <bratsche@gnome.org>

        * Practically everything changed.

        Change	all references	of GIMP	Toolkit	(and variations	of it)
        to GTK+	Toolkit, showing no mercy at all to our	beloved
	ancestry. (#540529)


svn path=/trunk/; revision=20709
2008-06-30 23:01:56 +00:00
Johan Dahlin
d97cdbdf53 Include "config.h" instead of <config.h> Command used: find -name
2008-06-21  Johan Dahlin  <jdahlin@async.com.br>

    * *.[ch]: Include "config.h" instead of <config.h>
    Command used:
    find -name \*.[ch]|xargs perl -p -i -e 's/^#include <config.h>/#include "config.h"/g'
    Rubberstamped by Mitch and Tim


svn path=/trunk/; revision=20669
2008-06-22 14:28:52 +00:00
Gian Mario Tagliaretti
75a9722aa1 Fix the docs, the mask param of gtk_drag_set_icon_pixmap can accept NULL for none. Fixes bug #533920.
svn path=/trunk/; revision=20119
2008-05-20 17:43:01 +00:00
Matthias Clasen
0509519d35 Unify the handling of various "Enter" keysyms all over the place.
2008-02-12  Matthias Clasen  <mclasen@redhat.com>

        * gtk/*.c: Unify the handling of various "Enter" keysyms
        all over the place.  (#515047, Christian Persch)



svn path=/trunk/; revision=19528
2008-02-12 15:51:09 +00:00
Mathias Hasselmann
594e3660e9 Another attempt to improve gtk_drag_dest_set docs.
* gtk/gtkdnd.c: Another attempt to improve gtk_drag_dest_set docs.

svn path=/trunk/; revision=19164
2007-12-12 09:39:36 +00:00
Mathias Hasselmann
dce782750f Mention impact of GtkDestDefaults on "drag-motion" handlers. Clearify
* gtk/gtkdnd.c, gtk/gtkwidget.c: Mention impact of GtkDestDefaults
on "drag-motion" handlers. Clearify documentation for
gtk_drag_dest_set.

svn path=/trunk/; revision=19159
2007-12-11 18:56:56 +00:00
Hiroyuki Ikezoe
31f26042f7 Use g_object_ref() instead of gtk_widget_ref(). (#483563)
2007-10-05  Hiroyuki Ikezoe  <poincare@ikezoe.net>

	* gtk/gtkdnd.c: Use g_object_ref() instead of gtk_widget_ref().
	(#483563)


svn path=/trunk/; revision=18884
2007-10-05 03:08:55 +00:00
Matthias Clasen
af6b614527 Remove update_idle here. Might fix #383003.
2007-09-09  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtkdnd.c (gtk_drag_source_info_destroy): Remove
        update_idle here. Might fix #383003.



svn path=/trunk/; revision=18776
2007-09-10 03:16:13 +00:00
Matthias Clasen
065d1560e6 Add GTK_TARGET_OTHER_{APP,WIDGET} to restrict drags within an
2007-04-28  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtkdnd.[hc]: Add GTK_TARGET_OTHER_{APP,WIDGET} to
        restrict drags within an application/widget.  (#163141,
        Jorn Baayen)


svn path=/trunk/; revision=17676
2007-04-28 15:34:39 +00:00
Michael Natterer
42debff10d gtk/gtkcheckbutton.c gtk/gtkdnd.c gtk/gtkentry.c gtk/gtkmenu.c
2007-01-18  Michael Natterer  <mitch@imendio.com>

	* gtk/gtkcheckbutton.c
	* gtk/gtkdnd.c
	* gtk/gtkentry.c
	* gtk/gtkmenu.c
	* gtk/gtktreeview.c
	* gtk/gtkviewport.c: pass more clip rectangles to gtk_paint_foo()
	functions. Based on a patch from maemo-gtk (bug #398023).


svn path=/trunk/; revision=17183
2007-01-18 17:30:10 +00:00
Carlos Garnacho
d42bbb6466 Make GtkNotebook able to drop detached tabs anywhere. Bug #360225.
2006-12-28  Carlos Garnacho  <carlosg@gnome.org>

        Make GtkNotebook able to drop detached tabs anywhere. Bug #360225.

        * gtk/gtkwidget.c (gtk_widget_class_init): add "drag-failed" signal.
        * gtk/gtkmarshalers.list: add new marshaler definition.
        * gtk/gtkenums.h: add GtkDragResult enum.

        * gtk/gtkdnd.c (gtk_drag_drop_finished): emit "drag-failed" if DND
        operation wasn't successful.
        (_gtk_drag_source_handle_event) (gtk_drag_drop)
        (gtk_drag_selection_get) (gtk_drag_cancel) (gtk_drag_key_cb)
        (gtk_drag_grab_broken_event_cb) (gtk_drag_grab_notify_cb)
        (gtk_drag_button_release_cb) (gtk_drag_abort_timeout): tell
        gtk_drag_drop_finished() the operation result.

        * gtk/gtknotebook.c (gtk_notebook_drag_failed): new function.
        (gtk_notebook_drag_data_get): do not call window creation hook here.
        (gtk_notebook_init): do not set "application/x-rootwindow-drop"
        target, instead connect to "drag-failed".
        (gtk_notebook_draw_focus): fix potential crasher if cur_page is NULL.
2006-12-28 16:38:49 +00:00
Matthias Clasen
721c3bc101 Replace a lot of idle and timeout calls by the new gdk_threads api.
2006-12-22  Matthias Clasen  <mclasen@redhat.com>

        * *.c: Replace a lot of idle and timeout calls by
        the new gdk_threads api.
2006-12-22 19:10:43 +00:00
Matthias Clasen
1312c002df Fix problems with drag cancellation. (#376535, Michael Natterer)
2006-11-17  Matthias Clasen  <mclasen@redhat.com>

	Fix problems with drag cancellation. (#376535, Michael Natterer)

	* gtk/gtkdnd.c (gtk_drag_source_info_destroy): Disconnect signal
	handlers before emitting drag-end.
	(gtk_drag_end): Disconnect signal handlers before removing
	the grab.
2006-11-18 04:37:33 +00:00
Alexander Larsson
853f5e5fc2 Cancel drag when the grab is shadowed. (#122688)
2006-11-06  Alexander Larsson  <alexl@redhat.com>

	* gtk/gtkdnd.c: (gtk_drag_begin_internal),
	(gtk_drag_source_info_destroy), (gtk_drag_end),
	(gtk_drag_grab_notify_cb):
	Cancel drag when the grab is shadowed. (#122688)
2006-11-06 17:16:37 +00:00
Matthias Clasen
07e7719441 Apply a cleanup patch by Kjartan Maraas (#341812)
2006-10-08  Matthias Clasen  <mclasen@redhat.com>

	* Apply a cleanup patch by Kjartan Maraas  (#341812)
2006-10-08 05:07:55 +00:00
Matthias Clasen
f45a35921a Commit a patch by Behdad to fix typos, omissions and other errors in the
2006-09-10  Matthias Clasen  <mclasen@redhat.com>

        * Commit a patch by Behdad to fix typos, omissions and other
        errors in the symbol aliasing, and add checks for local PLT
        entries.  (#354687, Behdad Esfahbod)
2006-09-10 06:39:16 +00:00
Matthias Clasen
0db1e78f9d fix 347277 2006-07-18 22:16:44 +00:00
Matthias Clasen
f8794cccca Improve consistency of signal and property names 2006-07-06 05:14:03 +00:00
Matthias Clasen
3a0c91edbe fix late setting of dnd icons 2006-04-27 05:16:43 +00:00
Søren Sandmann
b9d1a03440 Create 'composited' label.
Tue Apr 25 10:25:28 2006  Søren Sandmann  <sandmann@redhat.com>

	* tests/testgtk.c (create_alpha_window): Create 'composited' label.

	* tests/testgtk.c (on_composited_changed): New function, change
	the label to say whether the screen is composited or not.

	* gtk/gtkwindow.c (gtk_window_on_composited_changed): When
	composited status change, invalidate the window and propagate the signal;.

	* gtk/gtkwindow.c (gtk_window_map): Set the appropriate type hint
	if reset_type_hint is TRUE.

	* gtk/gtkwindow.c (gtk_window_set_type_hint): If hint is one of
	the old hints, store a shadow copy in the public window->type_hint
	bitfield, otherwise set this field to normal. Set the private
	field to the type hint.

	* gtk/gtkwindow.c (gtk_window_init): Initialize priv->type_hint.

	* gtk/gtkwindow.c (struct _GtkWindowPrivate): New field
	"reset_type_hint" indicating whether the type hint needs to be
	reset. New field type_hint containing a GdkWindowTypeHint.

	* gtk/gtkwidget.c (propagate_composited_changed): New function to
	propagate changes in composited status.
	(gtk_widget_class_init): Add composited_changed signal.

	* gtk/gtkwidget.h (struct _GtkWidgetClass): New signal composited-changed.

	* gtk/gtkwidget.c (gtk_widget_is_composited): New function.

	* gtk/gtktooltips.c (gtk_tooltips_draw_tips): Set transient for.

	* gtk/gtktooltips.c (gtk_tooltips_force_window): Set the type hint

	* gtk/gtkmenuitem.c (gtk_menu_item_position_menu): Compute whether
	the item belongs to a menubar. Set the type_hint appropriately
	depending on the outcome.

	* gtk/gtkmenu.c (gtk_menu_position): Set the default type hint here.

	* gtk/gtkmenu.c (gtk_menu_attach_to_widget): connect to hierarchy
	changed on the attach widget.

	* gtk/gtkmenu.c (attach_widget_hierarchy_changed): New function to
	set the transient_for property for menus.

	* gtk/gtkdnd.c (set_icon_stock_pixbuf): Set the appropriate type hint.

	* gtk/gtkcombo.c (gtk_combo_popup_list): Make the popup window
	transient for the toplevel.

	* gtk/gtkcombobox.c (gtk_combo_box_set_popup_widget): Set
	transient-for, for the popup window.

	* gdk/x11/gdkwindow-x11.c (gdk_window_get_type_hint): Support for
	new window types.

	* gdk/x11/gdkwindow-x11.c (gdk_window_set_type_hint): Add support
	for new window types.

	* gdk/x11/gdkscreen-x11.c (_gdk_x11_screen_process_owner_change):
	New function called whenever the compositing manager comes and goes.

	* gdk/x11/gdkscreen-x11.c (gdk_screen_is_composited): New function.

	* gdk/x11/gdkscreen-x11.c
	(_gdk_x11_screen_request_cm_notification, make_cm_atom,
	check_is_composited): New functions

	* gdk/x11/gdkevents-x11.c (gdk_event_translate): Call
	_gdk_x11_screen_process_owner_change when an
	XFixesSelectionNotifyEvent is received.

	* gdk/x11/gdkdisplay-x11.c (gdk_display_open): Call
	_gdk_x11_screen_request_cm_notification() on all screens.

	* gdk/quartz/gdkscreen-quartz.c (gdk_screen_is_composited): Dummy
	implementation.

	* gdk/gdkscreen.c (gdk_screen_class_init): New signal,
	'composited-changed'.

	* gdk/gdkwindow.h: Add new EWMH window types.

	* gdk/win32/gdkscreen-win32.c (gdk_screen_is_composited)
2006-04-25 14:27:32 +00:00
Christian Persch
c114a3c19a Fix UMR in gtk_drag_dest_motion. Bug #338725.
2006-04-17  Christian Persch  <chpe@cvs.gnome.org>

	* gtk/gtkdnd.c: (gtk_drag_dest_set), (gtk_drag_dest_set_proxy): Fix
	UMR in gtk_drag_dest_motion. Bug #338725.
2006-04-17 13:43:23 +00:00
Matthias Clasen
bbec8800a4 Make sure to get an icon window when constructing the fallback_icon. This
2006-03-30  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkdnd.c (gtk_drag_get_icon): Make sure to get an
	icon window when constructing the fallback_icon. This
	fixes a crash when dragging icons between screens in
	nautilus.  (#325751, Hylke van der Schaaf)
2006-03-30 18:22:39 +00:00
Carlos Garnacho
efbac09061 make sure that gdk_drag_event() is called when track_motion is TRUE to
2006-03-23  Carlos Garnacho  <carlosg@gnome.org>

        * gtk/gtkdnd.c (gtk_drag_dest_motion): make sure that gdk_drag_event()
        is called when track_motion is TRUE to receive drag_motion and
        drag_leave events properly.
2006-03-23 14:39:56 +00:00
Matthias Clasen
411d798e93 Improved DND support for GtkNotebook (#332991, Carlos Garnacho)
2006-03-22  Matthias Clasen  <mclasen@redhat.com>

	Improved DND support for GtkNotebook  (#332991, Carlos Garnacho)

	* gtk/gtk.symbols:
	* gtk/gtkdnd.h:
	* gtk/gtkdnd.c: Add a track_motion flag on GtkDragDest
	with getter and setter, for cases where the drag destination
	is interested in drag motion events independent of targets.

	* gtk/gtksettings.c (gtk_settings_class_init): Add a setting
	for the timeout used when expanding during DND.

	* gtk/gtknotebook.c: Use the track_motion flag to switch
	notebook tabs when hovering over tabs during DND.
2006-03-22 20:17:23 +00:00
Matthias Clasen
2d12378f9e Remove an unused variable.
2006-03-20  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkdnd.c (gtk_drag_get_cursor): Remove an unused variable.
2006-03-21 03:59:44 +00:00
Federico Mena Quintero
712dc6b8da Cancel drags when the grabs get broken. Fixes bug #333056:
2006-03-07  Federico Mena Quintero  <federico@novell.com>

	Cancel drags when the grabs get broken.  Fixes bug #333056:

	* gtk/gtkdnd.c (gtk_drag_selection_received): The time argument is
	a guint, not guint32.
	(gtk_drag_source_event_cb): Return gboolean, not gint.
	(gtk_drag_anim_timeout): Likewise.
	(gtk_drag_motion_cb): Likewise.
	(gtk_drag_key_cb): Likewise.
	(gtk_drag_button_release_cb): Likewise.
	(gtk_drag_abort_timeout): Likewise.
	(gtk_drag_begin_internal): Connect to "grab-broken-event" on the
	ipc_widget.
	(gtk_drag_source_info_destroy): Disconnect from the
	"grab-broken-event" callback.
	(gtk_drag_end): Likewise.
	(gtk_drag_grab_broken_event_cb): New callback.  We cancel the drag
	if the grab was broken and not regrabbed by the DnD code.

2006-03-07  Federico Mena Quintero  <federico@novell.com>

	* gtk/gtkfilechooserdefault.c (shortcuts_button_press_event_cb):
	Hack to let the treeview's button-press-event handler run before
	ours.  This lets the selection be updated before we pop up a
	context menu.
2006-03-07 17:48:07 +00:00
Matthias Clasen
01f9d21e9e slight cleanup 2006-02-27 06:44:33 +00:00
Matthias Clasen
aaed59e21d Comment out some unused code, and fix the reference point of composited
2006-02-27  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkdnd.c (gtk_drag_get_cursor): Comment out some unused
	code, and fix the reference point of composited drag cursors.
	(#320132, Christian Neumair)
2006-02-27 06:42:20 +00:00
Matthias Clasen
94cb364cf6 DND keynav support:
2006-02-17  Matthias Clasen  <mclasen@redhat.com>

        DND keynav support:

        * gtk/gtkdnd.c (gtk_drag_update_idle): Protect against
        info->last_event being NULL.
        (gtk_drag_key_cb): Handle arrow keys to move the drag icon
        and space or enter to drop.
2006-02-17 16:47:29 +00:00
Matthias Clasen
df3005e14b Fix the build 2006-01-03 15:38:31 +00:00
Matthias Clasen
53de39a409 Remove pointless cast 2006-01-03 13:50:59 +00:00
Matthias Clasen
beddd0c5e8 Call gtk_drag_update for non-motion events. (#325443, Peter Harvey)
2006-01-03  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkdnd.c (gtk_drag_begin_internal): Call gtk_drag_update
	for non-motion events.  (#325443, Peter Harvey)
2006-01-03 13:50:02 +00:00
Matthias Clasen
2ea833db9f Warn if the icon cannot be loaded. (#323504, Kjartan Maraas)
2005-12-14  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkdnd.c (gtk_drag_set_icon_name): Warn if the icon
	cannot be loaded.  (#323504, Kjartan Maraas)
2005-12-14 19:14:14 +00:00
Matthias Clasen
04f94a98f2 Fix the anchor of the default drag cursors. (#319200, Federico Mena
2005-10-28  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkdnd.c (gtk_drag_get_cursor): Fix the anchor of the default
	drag cursors.  (#319200, Federico Mena Quintero)
2005-10-28 17:06:43 +00:00