Compare commits

...

27 Commits

Author SHA1 Message Date
Carlos Garnacho 08f4e5f091 x11: Set GdkDeviceTool on motion/button events
The last known tool from the device is used here. If no tool is known,
the event will just have a NULL pointer there.
2015-01-06 15:43:32 +01:00
Carlos Garnacho 8999ce720a x11: Update GdkDevices on "Wacom Serial IDs" property changes
This takes care of the emission of GdkDevice::tool-changed, plus the
updating of the internal device accounting.
2015-01-06 15:43:32 +01:00
Carlos Garnacho 3666cd4cef events: Add gdk_event_[gs]et_device_tool()
This getter/setter will manage the tool pointer in GdkEventPrivate. The
setter should be most notably used by backends.
2015-01-06 15:43:32 +01:00
Carlos Garnacho a34d9203ee gdkdevice: Add GdkDevice::tool-changed signal
On the devices and backends that support it, this signal will be emitted
on slave/floating devices whenever the tool they are interacting with
changes. These notifications may also work as a sort of proximity events,
as the tool will be unset when the pen moves too far.

For backends, gdk_device_update_tool() has been included, all that should
be done on their side is just calling this whenever any tool might have
changed.
2015-01-06 15:43:32 +01:00
Carlos Garnacho 6315284d6f gdkdevice: Add GdkDeviceTool to identify device tools
GdkDeviceTool is an opaque typedef that can be used to identify a given
tool (eg. pens on tablets) during the app/device lifetime. Tools are only
set on non-master devices, and are owned by these.

The accounting functions are made private, the only public call on
GdkDeviceTool so far is gdk_device_tool_get_serial(), useful to identify
the tool across runs.
2015-01-06 15:38:43 +01:00
Bruce Cowan bb2be84af0 Updated British English translation 2015-01-05 20:41:18 +00:00
Benjamin Otte 78223932c5 cssselector: Reintroduce GOT_MATCH
I removed it in 14f5ce7108 because I
thought it was unnecessary, but it wasn't. When we build a tree like
this:

.matches ─┬─ .doesntmatch
          └─ .alsodoesntmatch

We would get the changes for the .matches part returned. This is however
only right if that node of the tree contains results. If results only
exist with the child nodes (all of which don't match), then this part
should not match either.
2015-01-05 21:20:26 +01:00
Benjamin Otte 506639add1 cssselector: The if was the wrong way around
We want to keep matching as long as selectors are simple. Otherwise we'd
never be matching, because the first selector is always simple. Oops.
2015-01-05 21:20:26 +01:00
Sebastien Lafargue 43d6ebf9fb cellrenderertext: notify inverted
The notify for "size" and "size-points" properties
are inverted.

https://bugzilla.gnome.org/show_bug.cgi?id=742311
2015-01-04 12:48:14 +01:00
Emmanuele Bassi b46fdb2d13 calendar: Handle invalid dates
GtkCalendar can have an invalid date — mostly at initialization. This
means that GDateTime construction may fail. We need to handle that case
gracefully, like the old code did.

This fixes the `notify` test suite, which started failing with:

/Notification/GtkCalendar:
GLib-CRITICAL **: g_date_time_get_day_of_week: assertion 'datetime != NULL' failed

inside the Continuous builder.
2015-01-02 23:15:55 +00:00
Christian Hergert 21360a453c textview: fix duplicated binding entries. use kp variants instead.
This appears to have accidentally used the normal keypresses twice instead
of the KP variants. This resulted in shift+insert pasting twice.

https://bugzilla.gnome.org/show_bug.cgi?id=742170
2014-12-31 23:27:55 -08:00
Inaki Larranaga Murgoitio bf3b0ea641 Updated Basque language 2014-12-31 17:46:21 +01:00
Balázs Úr cfcb43e3ca Updated Hungarian translation 2014-12-31 13:29:14 +00:00
Gábor Kelemen dce50674c0 Updated Hungarian translation 2014-12-31 13:02:56 +00:00
Balázs Úr c0e26aad56 Updated Hungarian translation 2014-12-31 12:03:47 +00:00
Trần Ngọc Quân 38f9e4bf11 Updated Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2014-12-31 15:50:54 +07:00
Ignacio Casal Quinteiro 23fa0e341f Fix typos in documentation 2014-12-30 13:46:11 +01:00
Jasper St. Pierre 5a41f63426 gtkstylecontext: Don't try to emit a signal when finalizing 2014-12-28 18:13:34 -08:00
Jasper St. Pierre ecc64f63e4 gdkeventsource-wayland: Fix style 2014-12-28 18:13:34 -08:00
Jasper St. Pierre 915e4c6dd7 inspector: Update translations .ui.h file 2014-12-28 18:13:34 -08:00
Matthias Clasen b4375cde48 Inspector: Show some X display characteristics
This helps diagnose e.g. csd problems.
2014-12-28 11:36:10 -05:00
Matthias Clasen 20f1c06eed Restore a missing file
No wonder nobody has tried my awesome magnifier yet...
2014-12-28 11:14:39 -05:00
Rico Tzschichholz 07efae7288 mir: Add missing reference to gdkmir-private.h 2014-12-28 13:34:16 +01:00
Trần Ngọc Quân 049ec56107 Updated vi translation for gtk+properties
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2014-12-28 09:20:14 +07:00
Christian Hergert 4d4883f010 scrolledwindow: fix spurious warnings from previous scrollbar commits 2014-12-26 14:19:55 -08:00
Emmanuele Bassi 5d42c55f28 x11/gl: Set the correct minor version
The major version is set twice.

https://bugzilla.gnome.org/show_bug.cgi?id=741954
2014-12-25 11:49:58 +00:00
Philip Chimento ec37fbe2e2 quartz: NSWindow NULL check in get_scale_factor
Sending backingScaleFactor to a NULL NSWindow will silently give the
value 0 for the scale factor, causing insidious divide-by-zero bugs down
the line. This checks if the NSWindow is NULL first, as seems to happen
throughout the rest of the file.

Note that I don't have a hi-DPI OS X machine to test this on, though.

https://bugzilla.gnome.org/show_bug.cgi?id=738338
2014-12-24 14:57:40 -08:00
31 changed files with 16952 additions and 12059 deletions
+5
View File
@@ -747,6 +747,9 @@ gdk_device_list_axes
gdk_device_get_axis_value
gdk_device_get_last_event_window
<SUBSECTION>
gdk_device_tool_get_serial
<SUBSECTION Standard>
GDK_TYPE_AXIS_USE
GDK_TYPE_EXTENSION_MODE
@@ -846,6 +849,8 @@ gdk_event_get_device
gdk_event_set_device
gdk_event_get_source_device
gdk_event_set_source_device
gdk_event_get_device_tool
gdk_event_set_device_tool
<SUBSECTION>
gdk_setting_get
+118
View File
@@ -43,6 +43,11 @@
typedef struct _GdkAxisInfo GdkAxisInfo;
struct _GdkDeviceTool
{
guint serial;
};
struct _GdkAxisInfo
{
GdkAtom label;
@@ -57,6 +62,7 @@ struct _GdkAxisInfo
enum {
CHANGED,
TOOL_CHANGED,
LAST_SIGNAL
};
@@ -256,6 +262,14 @@ gdk_device_class_init (GdkDeviceClass *klass)
0, NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
signals[TOOL_CHANGED] =
g_signal_new (g_intern_static_string ("tool-changed"),
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
0, NULL, NULL,
g_cclosure_marshal_VOID__BOXED,
G_TYPE_NONE, 1, GDK_TYPE_DEVICE_TOOL);
}
static void
@@ -287,6 +301,12 @@ gdk_device_dispose (GObject *object)
device->axes = NULL;
}
if (device->tools)
{
g_ptr_array_free (device->tools, TRUE);
device->tools = NULL;
}
g_free (device->name);
g_free (device->keys);
@@ -1757,3 +1777,101 @@ gdk_device_get_last_event_window (GdkDevice *device)
return info->window_under_pointer;
}
static GdkDeviceTool *
gdk_device_tool_copy (GdkDeviceTool *tool)
{
return tool;
}
static void
gdk_device_tool_free (GdkDeviceTool *tool)
{
/* Nothing to free here, memory is owned by GdkDevice */
}
G_DEFINE_BOXED_TYPE (GdkDeviceTool, gdk_device_tool,
gdk_device_tool_copy, gdk_device_tool_free);
GdkDeviceTool *
gdk_device_tool_new (guint serial)
{
GdkDeviceTool *tool;
tool = g_new0 (GdkDeviceTool, 1);
tool->serial = serial;
return tool;
}
void
gdk_device_add_tool (GdkDevice *device,
GdkDeviceTool *tool)
{
g_return_if_fail (GDK_IS_DEVICE (device));
g_return_if_fail (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER);
g_return_if_fail (tool != NULL);
if (!device->tools)
device->tools = g_ptr_array_new_with_free_func ((GDestroyNotify) g_free);
g_ptr_array_add (device->tools, tool);
}
GdkDeviceTool *
gdk_device_lookup_tool (GdkDevice *device,
guint serial)
{
GdkDeviceTool *tool;
guint i;
g_return_val_if_fail (GDK_IS_DEVICE (device), NULL);
g_return_val_if_fail (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER, NULL);
if (!device->tools)
return NULL;
for (i = 0; i < device->tools->len; i++)
{
tool = g_ptr_array_index (device->tools, i);
if (tool->serial == serial)
return tool;
}
return NULL;
}
void
gdk_device_update_tool (GdkDevice *device,
GdkDeviceTool *tool)
{
g_return_if_fail (GDK_IS_DEVICE (device));
g_return_if_fail (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER);
g_return_if_fail (!tool || gdk_device_lookup_tool (device, gdk_device_tool_get_serial (tool)) != NULL);
if (device->last_tool == tool)
return;
device->last_tool = tool;
g_signal_emit (device, signals[TOOL_CHANGED], 0, tool);
}
/**
* gdk_device_tool_get_serial:
* @tool: a #GdkDeviceTool
*
* Gets the serial of this tool, this value can be used to identify a
* physical tool (eg. a tablet pen) across program executions.
*
* Returns: The serial ID for this tool
*
* Since: 3.16
**/
guint
gdk_device_tool_get_serial (GdkDeviceTool *tool)
{
g_return_val_if_fail (tool != NULL, 0);
return tool->serial;
}
+9
View File
@@ -32,7 +32,10 @@ G_BEGIN_DECLS
#define GDK_DEVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE, GdkDevice))
#define GDK_IS_DEVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE))
#define GDK_TYPE_DEVICE_TOOL (gdk_device_tool_get_type ())
typedef struct _GdkTimeCoord GdkTimeCoord;
typedef struct _GdkDeviceTool GdkDeviceTool;
/**
* GdkInputSource:
@@ -274,6 +277,12 @@ gboolean gdk_device_grab_info_libgtk_only (GdkDisplay *display,
GDK_AVAILABLE_IN_3_12
GdkWindow *gdk_device_get_last_event_window (GdkDevice *device);
GDK_AVAILABLE_IN_3_16
GType gdk_device_tool_get_type (void) G_GNUC_CONST;
GDK_AVAILABLE_IN_3_16
guint gdk_device_tool_get_serial (GdkDeviceTool *tool);
G_END_DECLS
#endif /* __GDK_DEVICE_H__ */
+12
View File
@@ -56,6 +56,9 @@ struct _GdkDevice
GList *slaves;
GdkDeviceType type;
GArray *axes;
GPtrArray *tools;
GdkDeviceTool *last_tool;
};
struct _GdkDeviceClass
@@ -173,6 +176,15 @@ GdkWindow * _gdk_device_window_at_position (GdkDevice *device,
GdkModifierType *mask,
gboolean get_toplevel);
/* Device tools */
GdkDeviceTool *gdk_device_tool_new (guint serial);
GdkDeviceTool *gdk_device_lookup_tool (GdkDevice *device,
guint serial);
void gdk_device_add_tool (GdkDevice *device,
GdkDeviceTool *tool);
void gdk_device_update_tool (GdkDevice *device,
GdkDeviceTool *tool);
G_END_DECLS
#endif /* __GDK_DEVICE_PRIVATE_H__ */
+52
View File
@@ -642,6 +642,7 @@ gdk_event_copy (const GdkEvent *event)
new_private->screen = private->screen;
new_private->device = private->device;
new_private->source_device = private->source_device;
new_private->tool = private->tool;
}
switch (event->any.type)
@@ -2262,3 +2263,54 @@ gdk_event_get_event_type (const GdkEvent *event)
return event->type;
}
/**
* gdk_event_get_device_tool:
* @event: a #GdkEvent
*
* If the event was generated by a device that supports
* different tools (eg. a tablet), this function will
* return a #GdkDeviceTool representing the tool that
* caused the event. Otherwise, %NULL will be returned.
*
* Note: the #GdkDeviceTool<!-- -->s will be constant during
* the application lifetime, if settings must be stored
* persistently across runs, see gdk_device_tool_get_serial()
*
* Returns: The current device tool, or %NULL
*
* Since: 3.16
**/
GdkDeviceTool *
gdk_event_get_device_tool (const GdkEvent *event)
{
GdkEventPrivate *private;
if (!gdk_event_is_allocated (event))
return NULL;
private = (GdkEventPrivate *) event;
return private->tool;
}
/**
* gdk_event_set_device_tool:
* @event: a #GdkEvent
* @tool: (nullable): tool to set on the event, or %NULL
*
* Sets the device tool for this event, should be rarely used.
*
* Since: 3.16
**/
void
gdk_event_set_device_tool (GdkEvent *event,
GdkDeviceTool *tool)
{
GdkEventPrivate *private;
if (!gdk_event_is_allocated (event))
return;
private = (GdkEventPrivate *) event;
private->tool = tool;
}
+7
View File
@@ -1309,6 +1309,13 @@ GDK_AVAILABLE_IN_ALL
gboolean gdk_setting_get (const gchar *name,
GValue *value);
GDK_AVAILABLE_IN_3_16
GdkDeviceTool *gdk_event_get_device_tool (const GdkEvent *event);
GDK_AVAILABLE_IN_3_16
void gdk_event_set_device_tool (GdkEvent *event,
GdkDeviceTool *tool);
G_END_DECLS
#endif /* __GDK_EVENTS_H__ */
+1
View File
@@ -184,6 +184,7 @@ struct _GdkEventPrivate
gpointer windowing_data;
GdkDevice *device;
GdkDevice *source_device;
GdkDeviceTool *tool;
};
typedef struct _GdkWindowPaint GdkWindowPaint;
+1
View File
@@ -32,6 +32,7 @@ libgdk_mir_la_SOURCES = \
gdkmirwindow.c \
gdkmirwindowimpl.c \
gdkmir-debug.c \
gdkmir-private.h \
gdkmir.h
libgdkinclude_HEADERS = \
+1 -1
View File
@@ -2852,7 +2852,7 @@ gdk_quartz_window_get_scale_factor (GdkWindow *window)
impl = GDK_WINDOW_IMPL_QUARTZ (window->impl);
if (gdk_quartz_osx_version() >= GDK_OSX_LION)
if (impl->toplevel != NULL && gdk_quartz_osx_version() >= GDK_OSX_LION)
return [(id <ScaleFactor>) impl->toplevel backingScaleFactor];
return 1;
+2 -2
View File
@@ -135,9 +135,9 @@ _gdk_wayland_display_event_source_new (GdkDisplay *display)
display_wayland = GDK_WAYLAND_DISPLAY (display);
wl_source->display = display;
wl_source->pfd.fd = wl_display_get_fd(display_wayland->wl_display);
wl_source->pfd.fd = wl_display_get_fd (display_wayland->wl_display);
wl_source->pfd.events = G_IO_IN | G_IO_ERR | G_IO_HUP;
g_source_add_poll(source, &wl_source->pfd);
g_source_add_poll (source, &wl_source->pfd);
g_source_set_priority (source, GDK_PRIORITY_EVENTS);
g_source_set_can_recurse (source, TRUE);
+71
View File
@@ -32,6 +32,7 @@
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/XInput2.h>
#include <X11/Xatom.h>
#include <string.h>
@@ -543,6 +544,7 @@ gdk_x11_device_manager_xi2_constructed (GObject *object)
screen = gdk_display_get_default_screen (display);
XISetMask (mask, XI_HierarchyChanged);
XISetMask (mask, XI_DeviceChanged);
XISetMask (mask, XI_PropertyEvent);
event_mask.deviceid = XIAllDevices;
event_mask.mask_len = sizeof (mask);
@@ -775,6 +777,68 @@ handle_device_changed (GdkX11DeviceManagerXI2 *device_manager,
_gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (source_device));
}
static guint
device_get_tool_serial (GdkDevice *device)
{
GdkDisplay *display;
gulong nitems, bytes_after;
guint serial_id = 0;
guint32 *data;
int rc, format;
Atom type;
display = gdk_device_get_display (device);
gdk_x11_display_error_trap_push (display);
rc = XIGetProperty (GDK_DISPLAY_XDISPLAY (display),
gdk_x11_device_get_id (device),
gdk_x11_get_xatom_by_name_for_display (display, "Wacom Serial IDs"),
0, 4, False, XA_INTEGER, &type, &format, &nitems, &bytes_after,
(guchar **) &data);
gdk_x11_display_error_trap_pop_ignored (display);
if (rc != Success)
return 0;
if (type == XA_INTEGER && format == 32 && nitems >= 4)
serial_id = data[3];
XFree (data);
return serial_id;
}
static void
handle_property_change (GdkX11DeviceManagerXI2 *device_manager,
XIPropertyEvent *ev)
{
GdkDevice *device;
device = g_hash_table_lookup (device_manager->id_table,
GUINT_TO_POINTER (ev->deviceid));
if (ev->property == gdk_x11_get_xatom_by_name ("Wacom Serial IDs"))
{
GdkDeviceTool *tool = NULL;
guint serial_id;
if (ev->what != XIPropertyDeleted)
{
serial_id = device_get_tool_serial (device);
tool = gdk_device_lookup_tool (device, serial_id);
if (!tool && serial_id > 0)
{
tool = gdk_device_tool_new (serial_id);
gdk_device_add_tool (device, tool);
}
}
gdk_device_update_tool (device, tool);
}
}
static GdkCrossingMode
translate_crossing_mode (gint mode)
{
@@ -1169,6 +1233,11 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
(XIDeviceChangedEvent *) ev);
return_val = FALSE;
break;
case XI_PropertyEvent:
handle_property_change (device_manager,
(XIPropertyEvent *) ev);
return_val = FALSE;
break;
case XI_KeyPress:
case XI_KeyRelease:
{
@@ -1308,6 +1377,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
source_device = g_hash_table_lookup (device_manager->id_table,
GUINT_TO_POINTER (xev->sourceid));
gdk_event_set_source_device (event, source_device);
gdk_event_set_device_tool (event, source_device->last_tool);
event->button.axes = translate_axes (event->button.device,
event->button.x,
@@ -1412,6 +1482,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
event->motion.device = device;
gdk_event_set_source_device (event, source_device);
gdk_event_set_device_tool (event, source_device->last_tool);
event->motion.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
+1 -1
View File
@@ -742,7 +742,7 @@ create_gl3_context (GdkDisplay *display,
static const int attrib_list[] = {
GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB,
GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
GLX_CONTEXT_MAJOR_VERSION_ARB, 2,
GLX_CONTEXT_MINOR_VERSION_ARB, 2,
None,
};
+6
View File
@@ -108,6 +108,9 @@ day_of_week (guint year, guint mm, guint dd)
guint days;
dt = g_date_time_new_local (year, mm, dd, 1, 1, 1);
if (dt == NULL)
return 0;
days = g_date_time_get_day_of_week (dt);
g_date_time_unref (dt);
@@ -121,6 +124,9 @@ week_of_year (guint year, guint mm, guint dd)
guint week;
dt = g_date_time_new_local (year, mm, dd, 1, 1, 1);
if (dt == NULL)
return 1;
week = g_date_time_get_week_of_year (dt);
g_date_time_unref (dt);
+2 -2
View File
@@ -1384,12 +1384,12 @@ gtk_cell_renderer_text_set_property (GObject *object,
case PROP_SIZE:
pango_font_description_set_size (priv->font,
g_value_get_int (value));
g_object_notify (object, "size-points");
g_object_notify (object, "size");
break;
case PROP_SIZE_POINTS:
pango_font_description_set_size (priv->font,
g_value_get_double (value) * PANGO_SCALE);
g_object_notify (object, "size");
g_object_notify (object, "size-points");
break;
}
+1 -1
View File
@@ -49,7 +49,7 @@
* @See_also: #GtkColorSelectionDialog, #GtkFontButton
*
* The #GtkColorButton is a button which displays the currently selected
* color an allows to open a color selection dialog to change the color.
* color and allows to open a color selection dialog to change the color.
* It is suitable widget for selecting a color in a preference dialog.
*/
+1 -1
View File
@@ -39,7 +39,7 @@
* @See_also: #GtkColorChooserDialog
*
* The #GtkColorChooserWidget widget lets the user select a
* color. By default, the chooser presents a prefined palette
* color. By default, the chooser presents a predefined palette
* of colors, plus a small number of settable custom colors.
* It is also possible to select a different color with the
* single-color editor. To enter the single-color editing mode,
+16 -4
View File
@@ -1754,6 +1754,17 @@ _gtk_css_selector_tree_match_all (const GtkCssSelectorTree *tree,
return array;
}
/* When checking for changes via the tree we need to know if a rule further
down the tree matched, because if so we need to add "our bit" to the
Change. For instance in a a match like *.class:active we'll
get a tree that first checks :active, if that matches we continue down
to the tree, and if we get a match we add CHANGE_CLASS. However, the
end of the tree where we have a match is an ANY which doesn't actually
modify the change, so we don't know if we have a match or not. We fix
this by setting GTK_CSS_CHANGE_GOT_MATCH which lets us guarantee
that change != 0 on any match. */
#define GTK_CSS_CHANGE_GOT_MATCH GTK_CSS_CHANGE_RESERVED_BIT
static GtkCssChange
gtk_css_selector_tree_collect_change (const GtkCssSelectorTree *tree)
{
@@ -1780,15 +1791,16 @@ gtk_css_selector_tree_get_change (const GtkCssSelectorTree *tree,
if (!gtk_css_selector_match (&tree->selector, matcher))
return 0;
if (tree->selector.class->is_simple)
return gtk_css_selector_tree_collect_change (tree);
if (!tree->selector.class->is_simple)
return gtk_css_selector_tree_collect_change (tree) | GTK_CSS_CHANGE_GOT_MATCH;
for (prev = gtk_css_selector_tree_get_previous (tree);
prev != NULL;
prev = gtk_css_selector_tree_get_sibling (prev))
change |= gtk_css_selector_tree_get_change (prev, matcher);
change = tree->selector.class->get_change (&tree->selector, change);
if (change || gtk_css_selector_tree_get_matches (tree))
change = tree->selector.class->get_change (&tree->selector, change & ~GTK_CSS_CHANGE_GOT_MATCH) | GTK_CSS_CHANGE_GOT_MATCH;
return change;
}
@@ -1807,7 +1819,7 @@ _gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree *tree,
change |= gtk_css_selector_tree_get_change (tree, matcher);
/* Never return reserved bit set */
return change;
return change & ~GTK_CSS_CHANGE_RESERVED_BIT;
}
#ifdef PRINT_TREE
+3
View File
@@ -4017,6 +4017,9 @@ gtk_scrolled_window_realize (GtkWidget *widget)
priv->hindicator.window = create_indicator_window (scrolled_window, priv->hscrollbar);
priv->vindicator.window = create_indicator_window (scrolled_window, priv->vscrollbar);
priv->hindicator.scrollbar = priv->hscrollbar;
priv->vindicator.scrollbar = priv->vscrollbar;
gtk_scrolled_window_update_touch_mode (scrolled_window);
dm = gdk_display_get_device_manager (gtk_widget_get_display (widget));
+14 -6
View File
@@ -522,6 +522,18 @@ _gtk_style_context_update_animating (GtkStyleContext *context)
gtk_style_context_stop_animating (context);
}
static void
gtk_style_context_clear_parent (GtkStyleContext *context)
{
GtkStyleContextPrivate *priv = context->priv;
if (priv->parent)
{
priv->parent->priv->children = g_slist_remove (priv->parent->priv->children, context);
g_object_unref (priv->parent);
}
}
static void
gtk_style_context_finalize (GObject *object)
{
@@ -536,7 +548,7 @@ gtk_style_context_finalize (GObject *object)
/* children hold a reference to us */
g_assert (priv->children == NULL);
gtk_style_context_set_parent (style_context, NULL);
gtk_style_context_clear_parent (style_context);
gtk_style_context_set_cascade (style_context, NULL);
@@ -1397,11 +1409,7 @@ gtk_style_context_set_parent (GtkStyleContext *context,
gtk_style_context_set_invalid (parent, TRUE);
}
if (priv->parent)
{
priv->parent->priv->children = g_slist_remove (priv->parent->priv->children, context);
g_object_unref (priv->parent);
}
gtk_style_context_clear_parent (context);
priv->parent = parent;
+3 -3
View File
@@ -1492,11 +1492,11 @@ G_GNUC_END_IGNORE_DEPRECATIONS
gtk_binding_entry_add_signal (binding_set, GDK_KEY_v, GDK_CONTROL_MASK,
"paste-clipboard", 0);
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, GDK_SHIFT_MASK,
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, GDK_SHIFT_MASK,
"cut-clipboard", 0);
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_CONTROL_MASK,
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, GDK_CONTROL_MASK,
"copy-clipboard", 0);
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, GDK_SHIFT_MASK,
"paste-clipboard", 0);
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, GDK_SHIFT_MASK,
+38 -10
View File
@@ -57,6 +57,7 @@ struct _GtkInspectorGeneralPrivate
{
GtkWidget *version_box;
GtkWidget *env_box;
GtkWidget *x_box;
GtkWidget *gl_box;
GtkWidget *gtk_version;
GtkWidget *gdk_backend;
@@ -69,6 +70,9 @@ struct _GtkInspectorGeneralPrivate
GtkWidget *gtk_exe_prefix;
GtkWidget *gtk_data_prefix;
GtkWidget *gsettings_schema_dir;
GtkWidget *x_display;
GtkWidget *x_rgba;
GtkWidget *x_composited;
GtkSizeGroup *labels;
GtkAdjustment *focus_adjustment;
};
@@ -268,14 +272,33 @@ init_env (GtkInspectorGeneral *gen)
set_path_label (gen->priv->gsettings_schema_dir, "GSETTINGS_SCHEMA_DIR");
}
static void
init_x (GtkInspectorGeneral *gen)
{
GdkScreen *screen;
gchar *name;
screen = gdk_screen_get_default ();
name = gdk_screen_make_display_name (screen);
gtk_label_set_label (GTK_LABEL (gen->priv->x_display), name);
g_free (name);
if (gdk_screen_get_rgba_visual (screen) != NULL)
gtk_widget_show (gen->priv->x_rgba);
if (gdk_screen_is_composited (screen))
gtk_widget_show (gen->priv->x_composited);
}
static void
gtk_inspector_general_init (GtkInspectorGeneral *gen)
{
gen->priv = gtk_inspector_general_get_instance_private (gen);
gtk_widget_init_template (GTK_WIDGET (gen));
init_version (gen);
init_gl (gen);
init_env (gen);
init_x (gen);
init_gl (gen);
}
static gboolean
@@ -284,18 +307,18 @@ keynav_failed (GtkWidget *widget, GtkDirectionType direction, GtkInspectorGenera
GtkWidget *next;
gdouble value, lower, upper, page;
if (direction == GTK_DIR_DOWN &&
widget == gen->priv->version_box)
if (direction == GTK_DIR_DOWN && widget == gen->priv->version_box)
next = gen->priv->env_box;
else if (direction == GTK_DIR_DOWN &&
widget == gen->priv->env_box)
else if (direction == GTK_DIR_DOWN && widget == gen->priv->env_box)
next = gen->priv->x_box;
else if (direction == GTK_DIR_DOWN && widget == gen->priv->x_box)
next = gen->priv->gl_box;
else if (direction == GTK_DIR_UP &&
widget == gen->priv->env_box)
next = gen->priv->version_box;
else if (direction == GTK_DIR_UP &&
widget == gen->priv->gl_box)
else if (direction == GTK_DIR_UP && widget == gen->priv->gl_box)
next = gen->priv->x_box;
else if (direction == GTK_DIR_UP && widget == gen->priv->x_box)
next = gen->priv->env_box;
else if (direction == GTK_DIR_UP && widget == gen->priv->env_box)
next = gen->priv->version_box;
else
next = NULL;
@@ -337,6 +360,7 @@ gtk_inspector_general_constructed (GObject *object)
g_signal_connect (gen->priv->version_box, "keynav-failed", G_CALLBACK (keynav_failed), gen);
g_signal_connect (gen->priv->env_box, "keynav-failed", G_CALLBACK (keynav_failed), gen);
g_signal_connect (gen->priv->x_box, "keynav-failed", G_CALLBACK (keynav_failed), gen);
g_signal_connect (gen->priv->gl_box, "keynav-failed", G_CALLBACK (keynav_failed), gen);
}
@@ -351,6 +375,7 @@ gtk_inspector_general_class_init (GtkInspectorGeneralClass *klass)
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/general.ui");
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, version_box);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, env_box);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, x_box);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gl_box);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gtk_version);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gdk_backend);
@@ -364,6 +389,9 @@ gtk_inspector_general_class_init (GtkInspectorGeneralClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gtk_data_prefix);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gsettings_schema_dir);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, labels);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, x_display);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, x_composited);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, x_rgba);
}
// vim: set et sw=2 ts=2:
+123
View File
@@ -9,6 +9,7 @@
<property name="orientation">vertical</property>
<property name="margin">60</property>
<property name="spacing">10</property>
<child>
<object class="GtkFrame" id="version_frame">
<property name="visible">True</property>
@@ -89,6 +90,7 @@
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="env_frame">
<property name="visible">True</property>
@@ -346,6 +348,123 @@
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="x_frame">
<property name="visible">True</property>
<property name="halign">center</property>
<child>
<object class="GtkListBox" id="x_box">
<property name="visible">True</property>
<property name="selection-mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="orientation">horizontal</property>
<property name="margin">10</property>
<property name="spacing">40</property>
<child>
<object class="GtkLabel" id="x_display_label">
<property name="visible">True</property>
<property name="label" translatable="yes">X display</property>
<property name="halign">start</property>
<property name="valign">baseline</property>
<property name="xalign">0.0</property>
</object>
</child>
<child>
<object class="GtkLabel" id="x_display">
<property name="visible">True</property>
<property name="selectable">True</property>
<property name="halign">end</property>
<property name="valign">baseline</property>
<property name="ellipsize">end</property>
</object>
<packing>
<property name="expand">True</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="orientation">horizontal</property>
<property name="margin">10</property>
<property name="spacing">40</property>
<child>
<object class="GtkLabel" id="x_rgba_label">
<property name="visible">True</property>
<property name="label" translatable="yes">RGBA visual</property>
<property name="halign">start</property>
<property name="valign">baseline</property>
<property name="xalign">0.0</property>
</object>
</child>
<child>
<object class="GtkImage" id="x_rgba">
<property name="halign">end</property>
<property name="valign">baseline</property>
<property name="icon-name">object-select-symbolic</property>
<property name="icon-size">1</property>
</object>
<packing>
<property name="expand">True</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="orientation">horizontal</property>
<property name="margin">10</property>
<property name="spacing">40</property>
<child>
<object class="GtkLabel" id="x_composited_label">
<property name="visible">True</property>
<property name="label" translatable="yes">Composited</property>
<property name="halign">start</property>
<property name="valign">baseline</property>
<property name="xalign">0.0</property>
</object>
</child>
<child>
<object class="GtkImage" id="x_composited">
<property name="halign">end</property>
<property name="valign">baseline</property>
<property name="icon-name">object-select-symbolic</property>
<property name="icon-size">1</property>
</object>
<packing>
<property name="expand">True</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="gl_frame">
<property name="visible">True</property>
@@ -445,6 +564,9 @@
<widget name="gtk_exe_prefix_label"/>
<widget name="gtk_data_prefix_label"/>
<widget name="gsettings_schema_dir_label"/>
<widget name="x_display_label"/>
<widget name="x_rgba_label"/>
<widget name="x_composited_label"/>
</widgets>
</object>
<object class="GtkSizeGroup">
@@ -453,6 +575,7 @@
<widget name="version_frame"/>
<widget name="gl_frame"/>
<widget name="env_frame"/>
<widget name="x_frame"/>
</widgets>
</object>
</interface>
+3
View File
@@ -1,5 +1,8 @@
N_("GTK+ Version");
N_("GDK Backend");
N_("Prefix");
N_("X display");
N_("RGBA visual");
N_("Composited");
N_("GL Version");
N_("GL Vendor");
+62
View File
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface domain="gtk30">
<template class="GtkInspectorMagnifier" parent="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="orientation">horizontal</property>
<property name="spacing">6</property>
<property name="margin">6</property>
<child>
<object class="GtkScale" id="magnification">
<property name="visible">True</property>
<property name="orientation">horizontal</property>
<property name="width-request">150</property>
<property name="draw-value">False</property>
<property name="adjustment">adjustment</property>
<marks>
<mark value="1.0" position="bottom"/>
<mark value="2.0" position="bottom"/>
<mark value="3.0" position="bottom"/>
<mark value="4.0" position="bottom"/>
<mark value="5.0" position="bottom"/>
</marks>
</object>
<packing>
<property name="pack-type">start</property>
</packing>
</child>
<child type="center">
<object class="GtkLabel" id="object_title">
<property name="visible">True</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="hscrollbar-policy">automatic</property>
<property name="vscrollbar-policy">automatic</property>
<property name="expand">True</property>
<property name="shadow-type">none</property>
<child>
<object class="GtkMagnifier" id="magnifier">
<property name="visible">True</property>
<property name="resize">True</property>
<property name="magnification" bind-source="adjustment" bind-property="value" bind-flags="sync-create"/>
</object>
</child>
</object>
</child>
</template>
<object class="GtkAdjustment" id="adjustment">
<property name="lower">1.0</property>
<property name="upper">5.0</property>
<property name="page-size">0.0</property>
<property name="page-increment">0.1</property>
<property name="step-increment">0.1</property>
<property name="value">2.0</property>
</object>
</interface>
+2546 -2217
View File
File diff suppressed because it is too large Load Diff
+1381 -1130
View File
File diff suppressed because it is too large Load Diff
+7594 -5735
View File
File diff suppressed because it is too large Load Diff
+1603 -1018
View File
File diff suppressed because it is too large Load Diff
+1839 -994
View File
File diff suppressed because it is too large Load Diff
+1291 -822
View File
File diff suppressed because it is too large Load Diff
+146 -112
View File
@@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: Gtk+ master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk"
"%2b&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-12-06 22:05+0000\n"
"PO-Revision-Date: 2014-12-07 15:02+0700\n"
"POT-Creation-Date: 2014-12-30 22:06+0000\n"
"PO-Revision-Date: 2014-12-31 15:48+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <gnome-vi-list@gnome.org>\n"
"Language: vi\n"
@@ -32,12 +32,12 @@ msgstr ""
#: ../gdk/gdk.c:177
#, c-format
msgid "Error parsing option --gdk-debug"
msgstr "Lỗi phân tích cú pháp của tuỳ chọn --gdk-debug"
msgstr "Lỗi phân tích cú pháp của tùy chọn --gdk-debug"
#: ../gdk/gdk.c:197
#, c-format
msgid "Error parsing option --gdk-no-debug"
msgstr "Lỗi phân tích cú pháp của tuỳ chọn --gdk-no-debug"
msgstr "Lỗi phân tích cú pháp của tùy chọn --gdk-no-debug"
#. Description of --class=CLASS in --help output
#: ../gdk/gdk.c:225
@@ -105,7 +105,7 @@ msgstr "GL hỗ trợ tắt thông qua GDK_DEBUG"
#: ../gdk/keyname-table.h:6843
msgctxt "keyboard label"
msgid "BackSpace"
msgstr "X lùi"
msgstr "Xóa lùi"
#: ../gdk/keyname-table.h:6844
msgctxt "keyboard label"
@@ -435,13 +435,14 @@ msgstr "Tạm ngưng"
#: ../gdk/mir/gdkmirwindowimpl.c:1308 ../gdk/mir/gdkmirwindowimpl.c:1318
#: ../gdk/wayland/gdkglcontext-wayland.c:263
#: ../gdk/wayland/gdkglcontext-wayland.c:273 ../gdk/x11/gdkglcontext-x11.c:697
#: ../gdk/wayland/gdkglcontext-wayland.c:273
#: ../gdk/win32/gdkglcontext-win32.c:527 ../gdk/x11/gdkglcontext-x11.c:700
msgid "No available configurations for the given pixel format"
msgstr "Không có cấu hình sẵn có nào dành cho định dạng điểm ảnh đã cho"
#: ../gdk/mir/gdkmirwindowimpl.c:1350
#: ../gdk/wayland/gdkglcontext-wayland.c:306
#: ../gdk/x11/gdkglcontext-x11.c:1052
#: ../gdk/win32/gdkglcontext-win32.c:505 ../gdk/x11/gdkglcontext-x11.c:1055
msgid "No GL implementation is available"
msgstr "Không có phần thực hiện GL"
@@ -452,10 +453,19 @@ msgstr "Hồ sơ GL lõi 3.2 không sẵn sàng trên EGL"
#: ../gdk/mir/gdkmirwindowimpl.c:1385
#: ../gdk/wayland/gdkglcontext-wayland.c:341
#: ../gdk/x11/gdkglcontext-x11.c:1092 ../gdk/x11/gdkglcontext-x11.c:1136
#: ../gdk/win32/gdkglcontext-win32.c:541 ../gdk/x11/gdkglcontext-x11.c:1095
#: ../gdk/x11/gdkglcontext-x11.c:1139
msgid "Unable to create a GL context"
msgstr "Không thể tạo ngữ cảnh GL"
#: ../gdk/win32/gdkglcontext-win32.c:514
msgid ""
"The WGL_ARB_create_context extension needed to create 3.2 core profiles is "
"not available"
msgstr ""
"Phần mở rộng WGL_ARB_create_context cần thiết để tạo hồ sơ lõi 3.2 không sẵn "
"có"
#. Description of --sync in --help output
#: ../gdk/win32/gdkmain-win32.c:53
msgid "Don't batch GDI requests"
@@ -464,7 +474,7 @@ msgstr "Đừng gửi bó yêu cầu GDI"
#. Description of --no-wintab in --help output
#: ../gdk/win32/gdkmain-win32.c:55
msgid "Don't use the Wintab API for tablet support"
msgstr "Đừng dùng API Wintab để hỗ trợ phiến đồ họa"
msgstr "Đừng dùng API Wintab để hỗ trợ bảng vẽ"
#. Description of --ignore-wintab in --help output
#: ../gdk/win32/gdkmain-win32.c:57
@@ -474,7 +484,7 @@ msgstr "Tương đương --no-wintab"
#. Description of --use-wintab in --help output
#: ../gdk/win32/gdkmain-win32.c:59
msgid "Do use the Wintab API [default]"
msgstr "Dùng API WIntab [mặc định]"
msgstr "Dùng API Wintab [mặc định]"
#. Description of --max-colors=COLORS in --help output
#: ../gdk/win32/gdkmain-win32.c:61
@@ -502,12 +512,12 @@ msgid "Opening %d Item"
msgid_plural "Opening %d Items"
msgstr[0] "Đang mở %d mục"
#: ../gdk/x11/gdkglcontext-x11.c:726
#: ../gdk/x11/gdkglcontext-x11.c:729
#, c-format
msgid "No available configurations for the given RGBA pixel format"
msgstr "Không có cấu hình sẵn có cho định dạng điểm ảnh RGBA"
#: ../gdk/x11/gdkglcontext-x11.c:1061
#: ../gdk/x11/gdkglcontext-x11.c:1064
msgid ""
"The GLX_ARB_create_context_profile extension needed to create 3.2 core "
"profiles is not available"
@@ -641,7 +651,7 @@ msgstr "_CD-ROM"
#: ../gtk/a11y/gtkimageaccessible.c:57 ../gtk/deprecated/gtkstock.c:346
msgctxt "Stock label"
msgid "_Clear"
msgstr "_X trắng"
msgstr "_Xóa trắng"
#: ../gtk/a11y/gtkimageaccessible.c:58 ../gtk/deprecated/gtkstock.c:347
msgctxt "Stock label"
@@ -654,7 +664,7 @@ msgstr "Thu nhỏ"
#: ../gtk/a11y/gtkimageaccessible.c:60 ../gtk/gtkheaderbar.c:458
msgid "Maximize"
msgstr "Phóng to hết cỡ "
msgstr "Phóng to hết cỡ"
#: ../gtk/a11y/gtkimageaccessible.c:61 ../gtk/gtkheaderbar.c:458
msgid "Restore"
@@ -673,7 +683,7 @@ msgstr "Cắ_t"
#: ../gtk/a11y/gtkimageaccessible.c:64 ../gtk/deprecated/gtkstock.c:352
msgctxt "Stock label"
msgid "_Delete"
msgstr "_X"
msgstr "_Xóa"
#: ../gtk/a11y/gtkimageaccessible.c:65 ../gtk/deprecated/gtkstock.c:334
msgctxt "Stock label"
@@ -1205,7 +1215,7 @@ msgstr ""
#: ../gtk/gtkmessagedialog.c:957 ../gtk/gtkmountoperation.c:543
#: ../gtk/gtkpagesetupunixdialog.c:196 ../gtk/gtkprintbackend.c:763
#: ../gtk/gtkprinteroptionwidget.c:545 ../gtk/gtkprintunixdialog.c:665
#: ../gtk/gtkprintunixdialog.c:733 ../gtk/gtkwindow.c:11811
#: ../gtk/gtkprintunixdialog.c:733 ../gtk/gtkwindow.c:11844
#: ../gtk/inspector/css-editor.c:199 ../gtk/ui/gtkappchooserdialog.ui.h:2
#: ../gtk/ui/gtkassistant.ui.h:5 ../gtk/ui/gtkcolorchooserdialog.ui.h:2
#: ../gtk/ui/gtkfontchooserdialog.ui.h:2
@@ -1257,7 +1267,7 @@ msgstr "Á_p dụng"
#: ../gtk/deprecated/gtkfontsel.c:1698 ../gtk/gtkmessagedialog.c:936
#: ../gtk/gtkmessagedialog.c:958 ../gtk/gtkprintbackend.c:764
#: ../gtk/gtkwindow.c:11812 ../gtk/inspector/classes-list.c:127
#: ../gtk/gtkwindow.c:11845 ../gtk/inspector/classes-list.c:127
msgid "_OK"
msgstr "_OK"
@@ -1465,45 +1475,45 @@ msgstr "GNU Lesser General Public License, chỉ phiên bản 2.1"
msgid "GNU Lesser General Public License, version 3 only"
msgstr "GNU Lesser General Public License, chỉ phiên bản 3"
#: ../gtk/gtkaboutdialog.c:701
#: ../gtk/gtkaboutdialog.c:699
msgid "C_redits"
msgstr "Công t_rạng"
#: ../gtk/gtkaboutdialog.c:709
#: ../gtk/gtkaboutdialog.c:707
msgid "_License"
msgstr "Giấy _phép"
#: ../gtk/gtkaboutdialog.c:718 ../gtk/gtkcustompaperunixdialog.c:329
#: ../gtk/gtkaboutdialog.c:716 ../gtk/gtkcustompaperunixdialog.c:329
#: ../gtk/gtkmessagedialog.c:940 ../gtk/ui/gtkassistant.ui.h:6
msgid "_Close"
msgstr "Đón_g"
#: ../gtk/gtkaboutdialog.c:1007
#: ../gtk/gtkaboutdialog.c:1005
msgid "Could not show link"
msgstr "Không thể hiện liên kết"
#: ../gtk/gtkaboutdialog.c:1044
#: ../gtk/gtkaboutdialog.c:1042
msgid "Website"
msgstr "Trang Web"
#: ../gtk/gtkaboutdialog.c:1098 ../gtk/ui/gtkapplication-quartz.ui.h:1
#: ../gtk/gtkaboutdialog.c:1092 ../gtk/ui/gtkapplication-quartz.ui.h:1
#, c-format
msgid "About %s"
msgstr "Giới thiệu %s"
#: ../gtk/gtkaboutdialog.c:2342
#: ../gtk/gtkaboutdialog.c:2316
msgid "Created by"
msgstr "Tác giả"
#: ../gtk/gtkaboutdialog.c:2345
#: ../gtk/gtkaboutdialog.c:2319
msgid "Documented by"
msgstr "Tài liệu"
#: ../gtk/gtkaboutdialog.c:2355
#: ../gtk/gtkaboutdialog.c:2329
msgid "Translated by"
msgstr "Bản dịch"
#: ../gtk/gtkaboutdialog.c:2360
#: ../gtk/gtkaboutdialog.c:2334
msgid "Artwork by"
msgstr "Đồ họa"
@@ -1577,7 +1587,7 @@ msgctxt "keyboard label"
msgid "Backslash"
msgstr "Gạch chéo ngược"
#: ../gtk/gtkappchooserbutton.c:291
#: ../gtk/gtkappchooserbutton.c:292
msgid "Other application…"
msgstr "Ứng dụng khác…"
@@ -1712,7 +1722,7 @@ msgstr "Thẻ không được quản lý: <%s>"
#. * text direction of RTL and specify "calendar:YM", then the year
#. * will appear to the right of the month.
#.
#: ../gtk/gtkcalendar.c:871
#: ../gtk/gtkcalendar.c:798
msgid "calendar:MY"
msgstr "calendar:MY"
@@ -1720,7 +1730,7 @@ msgstr "calendar:MY"
#. * first day of the week to calendar:week_start:1 if you want Monday
#. * to be the first day of the week, and so on.
#.
#: ../gtk/gtkcalendar.c:909
#: ../gtk/gtkcalendar.c:836
msgid "calendar:week_start:0"
msgstr "calendar:week_start:1"
@@ -1729,7 +1739,7 @@ msgstr "calendar:week_start:1"
#. *
#. * If you don't understand this, leave it as "2000"
#.
#: ../gtk/gtkcalendar.c:1936
#: ../gtk/gtkcalendar.c:1862
msgctxt "year measurement template"
msgid "2000"
msgstr "2000"
@@ -1744,7 +1754,7 @@ msgstr "2000"
#. * digits. That needs support from your system and locale definition
#. * too.
#.
#: ../gtk/gtkcalendar.c:1967 ../gtk/gtkcalendar.c:2637
#: ../gtk/gtkcalendar.c:1893 ../gtk/gtkcalendar.c:2571
#, c-format
msgctxt "calendar:day:digits"
msgid "%d"
@@ -1760,7 +1770,7 @@ msgstr "%d"
#. * digits. That needs support from your system and locale definition
#. * too.
#.
#: ../gtk/gtkcalendar.c:1999 ../gtk/gtkcalendar.c:2503
#: ../gtk/gtkcalendar.c:1925 ../gtk/gtkcalendar.c:2437
#, c-format
msgctxt "calendar:week:digits"
msgid "%d"
@@ -1776,7 +1786,7 @@ msgstr "%d"
#. *
#. * "%Y" is appropriate for most locales.
#.
#: ../gtk/gtkcalendar.c:2290
#: ../gtk/gtkcalendar.c:2216
msgctxt "calendar year format"
msgid "%Y"
msgstr "%Y"
@@ -2044,7 +2054,7 @@ msgstr "Trong suốt"
#: ../gtk/gtkcolorswatch.c:449
msgid "_Customize"
msgstr "_Tuỳ biến"
msgstr "_Tùy biến"
#. Translate to the default units to use for presenting
#. * lengths to the user. Translate to default:inch if you
@@ -2110,30 +2120,30 @@ msgstr "_Phải:"
msgid "Paper Margins"
msgstr "Lề giấy"
#: ../gtk/gtkentry.c:9619 ../gtk/gtkentry.c:9772 ../gtk/gtklabel.c:6591
#: ../gtk/gtktextview.c:8868 ../gtk/gtktextview.c:9056
#: ../gtk/gtkentry.c:9626 ../gtk/gtkentry.c:9779 ../gtk/gtklabel.c:6591
#: ../gtk/gtktextview.c:9018 ../gtk/gtktextview.c:9206
msgid "Cu_t"
msgstr "Cắ_t"
#: ../gtk/gtkentry.c:9623 ../gtk/gtkentry.c:9775 ../gtk/gtklabel.c:6592
#: ../gtk/gtktextview.c:8872 ../gtk/gtktextview.c:9060
#: ../gtk/gtkentry.c:9630 ../gtk/gtkentry.c:9782 ../gtk/gtklabel.c:6592
#: ../gtk/gtktextview.c:9022 ../gtk/gtktextview.c:9210
msgid "_Copy"
msgstr "_Chép"
#: ../gtk/gtkentry.c:9627 ../gtk/gtkentry.c:9778 ../gtk/gtklabel.c:6593
#: ../gtk/gtktextview.c:8874 ../gtk/gtktextview.c:9062
#: ../gtk/gtkentry.c:9634 ../gtk/gtkentry.c:9785 ../gtk/gtklabel.c:6593
#: ../gtk/gtktextview.c:9024 ../gtk/gtktextview.c:9212
msgid "_Paste"
msgstr "_Dán"
#: ../gtk/gtkentry.c:9630 ../gtk/gtklabel.c:6595 ../gtk/gtktextview.c:8877
#: ../gtk/gtkentry.c:9637 ../gtk/gtklabel.c:6595 ../gtk/gtktextview.c:9027
msgid "_Delete"
msgstr "_Xóa bỏ"
#: ../gtk/gtkentry.c:9641 ../gtk/gtklabel.c:6604 ../gtk/gtktextview.c:8891
#: ../gtk/gtkentry.c:9648 ../gtk/gtklabel.c:6604 ../gtk/gtktextview.c:9041
msgid "Select _All"
msgstr "Chọn tất _cả"
#: ../gtk/gtkentry.c:10837
#: ../gtk/gtkentry.c:10848
msgid "Caps Lock is on"
msgstr "Caps Lock được bật"
@@ -2337,8 +2347,8 @@ msgstr "Chọn phông chữ"
#. Translators, these strings are names for various 'standard' cover
#. * pages that the printing system may support.
#.
#: ../gtk/gtkfontbutton.c:1182 ../gtk/inspector/general.c:221
#: ../gtk/inspector/general.c:222 ../gtk/inspector/gestures.c:128
#: ../gtk/gtkfontbutton.c:1182 ../gtk/inspector/general.c:225
#: ../gtk/inspector/general.c:226 ../gtk/inspector/gestures.c:128
#: ../gtk/inspector/prop-editor.c:1200 ../gtk/inspector/size-groups.c:252
#: ../modules/printbackends/cups/gtkprintbackendcups.c:5203
msgid "None"
@@ -2352,7 +2362,7 @@ msgstr "Gặp lỗi khi tạo ngữ cảnh OpenGL"
msgid "Application menu"
msgstr "Trình đơn ứng dụng"
#: ../gtk/gtkheaderbar.c:476 ../gtk/gtkwindow.c:8502
#: ../gtk/gtkheaderbar.c:476 ../gtk/gtkwindow.c:8524
msgid "Close"
msgstr "Đóng"
@@ -2361,7 +2371,7 @@ msgstr "Đóng"
msgid "Icon '%s' not present in theme %s"
msgstr "Biểu tượng “%s” không có trong chủ đề (theme) %s"
#: ../gtk/gtkicontheme.c:4005 ../gtk/gtkicontheme.c:4372
#: ../gtk/gtkicontheme.c:4010 ../gtk/gtkicontheme.c:4377
msgid "Failed to load icon"
msgstr "Gặp lỗi khi tải biểu tượng"
@@ -2472,18 +2482,18 @@ msgstr "URI không hợp lệ"
#: ../gtk/gtklockbutton.c:272 ../gtk/ui/gtklockbutton.ui.h:1
msgid "Lock"
msgstr "Kh"
msgstr "Khóa"
#: ../gtk/gtklockbutton.c:281 ../gtk/ui/gtklockbutton.ui.h:2
msgid "Unlock"
msgstr "Bỏ kh"
msgstr "Bỏ khóa"
#: ../gtk/gtklockbutton.c:290
msgid ""
"Dialog is unlocked.\n"
"Click to prevent further changes"
msgstr ""
"Hộp thoại đã mở kh.\n"
"Hộp thoại đã mở khóa.\n"
"Nhấn để ngăn thay đổi"
#: ../gtk/gtklockbutton.c:299
@@ -2491,7 +2501,7 @@ msgid ""
"Dialog is locked.\n"
"Click to make changes"
msgstr ""
"Hộp thoại đã kh.\n"
"Hộp thoại đã khóa.\n"
"Nhấn để có thể thay đổi"
#: ../gtk/gtklockbutton.c:308
@@ -2525,7 +2535,7 @@ msgstr "Các cờ gỡ lỗi GTK+ cần đặt"
#. Description of --gtk-no-debug=FLAGS in --help output
#: ../gtk/gtkmain.c:463
msgid "GTK+ debugging flags to unset"
msgstr "Các cờ gỡ lỗi GTK+ cần bỏ đặt"
msgstr "Các cờ gỡ lỗi GTK+ cần xóa"
#: ../gtk/gtkmain.c:765
#, c-format
@@ -2646,12 +2656,12 @@ msgstr "Z Shell"
msgid "Cannot end process with PID %d: %s"
msgstr "Không thể chấm dứt tiến trình có PID %d: %s"
#: ../gtk/gtknotebook.c:5130 ../gtk/gtknotebook.c:7858
#: ../gtk/gtknotebook.c:5128 ../gtk/gtknotebook.c:7856
#, c-format
msgid "Page %u"
msgstr "Trang %u"
#: ../gtk/gtkpagesetup.c:644 ../gtk/gtkpapersize.c:985
#: ../gtk/gtkpagesetup.c:652 ../gtk/gtkpapersize.c:985
#: ../gtk/gtkpapersize.c:1025
msgid "Not a valid page setup file"
msgstr "Không phải một tập tin cài đặt trang hợp lệ"
@@ -2710,7 +2720,7 @@ msgstr "Các tập tin mới dùng gần đây"
#: ../gtk/gtkplacessidebar.c:968
msgid "Home"
msgstr "Home"
msgstr "Thư mục riêng"
#: ../gtk/gtkplacessidebar.c:970
msgid "Open your personal folder"
@@ -2807,11 +2817,11 @@ msgstr "_Dừng ổ nhiều đĩa"
#. stop() for type G_DRIVE_START_STOP_TYPE_PASSWORD is normally not used
#: ../gtk/gtkplacessidebar.c:2279
msgid "_Unlock Drive"
msgstr "_Mở kh ổ đĩa"
msgstr "_Mở khóa ổ đĩa"
#: ../gtk/gtkplacessidebar.c:2280
msgid "_Lock Drive"
msgstr "_Kh ổ đĩa"
msgstr "_Khóa ổ đĩa"
#: ../gtk/gtkplacessidebar.c:2309 ../gtk/gtkplacessidebar.c:3205
#, c-format
@@ -2916,7 +2926,7 @@ msgstr "%s yêu cầu #%d"
#: ../gtk/gtkprintoperation.c:1777
msgctxt "print operation status"
msgid "Initial state"
msgstr "Tình trạng đầu tiên"
msgstr "Tình trạng khởi tạo"
#: ../gtk/gtkprintoperation.c:1778
msgctxt "print operation status"
@@ -3150,7 +3160,7 @@ msgstr "Không thể gỡ bỏ mục"
#: ../gtk/gtkrecentchooserdefault.c:1608
msgid "Could not clear list"
msgstr "Không thể x danh sách"
msgstr "Không thể xóa danh sách"
#: ../gtk/gtkrecentchooserdefault.c:1692
msgid "Copy _Location"
@@ -3216,15 +3226,15 @@ msgctxt "recent menu label"
msgid "%d. %s"
msgstr "%d. %s"
#: ../gtk/gtkrecentmanager.c:1029 ../gtk/gtkrecentmanager.c:1042
#: ../gtk/gtkrecentmanager.c:1179 ../gtk/gtkrecentmanager.c:1189
#: ../gtk/gtkrecentmanager.c:1241 ../gtk/gtkrecentmanager.c:1250
#: ../gtk/gtkrecentmanager.c:1265
#: ../gtk/gtkrecentmanager.c:1042 ../gtk/gtkrecentmanager.c:1055
#: ../gtk/gtkrecentmanager.c:1192 ../gtk/gtkrecentmanager.c:1202
#: ../gtk/gtkrecentmanager.c:1254 ../gtk/gtkrecentmanager.c:1263
#: ../gtk/gtkrecentmanager.c:1278
#, c-format
msgid "Unable to find an item with URI '%s'"
msgstr "Không thể tìm thấy mục có URI “%s”"
#: ../gtk/gtkrecentmanager.c:2468
#: ../gtk/gtkrecentmanager.c:2484
#, c-format
msgid "No registered application with name '%s' for item with URI '%s' found"
msgstr "Không tìm thấy ứng dụng nào đăng ký tên “%s” cho mục có URI “%s”"
@@ -3435,11 +3445,11 @@ msgctxt "volume percentage"
msgid "%d%%"
msgstr "%d%%"
#: ../gtk/gtkwindow.c:11799
#: ../gtk/gtkwindow.c:11832
msgid "Do you want to use GTK+ Inspector?"
msgstr "Bạn có muốn dùng GTK+ Inspector?"
#: ../gtk/gtkwindow.c:11801
#: ../gtk/gtkwindow.c:11834
msgid ""
"GTK+ Inspector is an interactive debugger that lets you explore and modify "
"the internals of any GTK+ application. Using it may cause the application to "
@@ -3448,7 +3458,7 @@ msgstr ""
"Bộ điều tra GTK+ là một bộ gỡ lỗi tương tác, nó giúp bạn dò tìm và sửa bên "
"trong một ứng dụng GTK+. Dùng nó có thể gây ra sự đổ vỡ của ứng dụng."
#: ../gtk/gtkwindow.c:11806
#: ../gtk/gtkwindow.c:11839
msgid "Don't show this message again"
msgstr "Đừng hiện lời nhắc này nữa"
@@ -3552,10 +3562,22 @@ msgid "GDK Backend"
msgstr "Phần thực chạy GDK"
#: ../gtk/inspector/general.ui.h:4
msgid "X display"
msgstr "Hiển thị X"
#: ../gtk/inspector/general.ui.h:5
msgid "RGBA visual"
msgstr "RGBA trực quan"
#: ../gtk/inspector/general.ui.h:6
msgid "Composited"
msgstr "Phức hợp"
#: ../gtk/inspector/general.ui.h:7
msgid "GL Version"
msgstr "Phiên bản GL"
#: ../gtk/inspector/general.ui.h:5
#: ../gtk/inspector/general.ui.h:8
msgid "GL Vendor"
msgstr "Đại diện GL"
@@ -3762,7 +3784,7 @@ msgstr "Thuộc tính"
#: ../gtk/inspector/prop-list.ui.h:4 ../gtk/inspector/signals-list.ui.h:6
msgid "Defined At"
msgstr "Được định nghĩa lúc"
msgstr "Được định nghĩa tại"
#: ../gtk/inspector/resource-list.ui.h:1
msgid "Path"
@@ -3803,7 +3825,7 @@ msgstr "Theo dõi tín hiệu phát ra trên đối tượng này"
#: ../gtk/inspector/signals-list.ui.h:2
msgid "Clear log"
msgstr "X nhật ký"
msgstr "Xóa nhật ký"
#: ../gtk/inspector/signals-list.ui.h:4
msgid "Connected"
@@ -3867,19 +3889,19 @@ msgstr "Bật thống kê bằng GOBJECT_DEBUG=instance-count"
msgid "Location"
msgstr "Địa điểm"
#: ../gtk/inspector/visual.c:270 ../gtk/inspector/visual.c:296
#: ../gtk/inspector/visual.c:273 ../gtk/inspector/visual.c:299
msgid "Theme is hardcoded by GTK_THEME"
msgstr "Chủ đề bị có định do GTK_THEME"
#: ../gtk/inspector/visual.c:414
#: ../gtk/inspector/visual.c:510
msgid "Backend does not support window scaling"
msgstr "Phần ứng dụng chạy phía sau không hỗ trợ co dãn cửa sổ"
#: ../gtk/inspector/visual.c:453
#: ../gtk/inspector/visual.c:549
msgid "Setting is hardcoded by GTK_TEST_TOUCHSCREEN"
msgstr "Cài đặt bị cố định bởi GTK_TEST_TOUCHSCREEN"
#: ../gtk/inspector/visual.c:518
#: ../gtk/inspector/visual.c:614
msgid ""
"Not settable at runtime.\n"
"Use GDK_GL=always or GDK_GL=disable instead"
@@ -3887,8 +3909,8 @@ msgstr ""
"Không thể đặt được lúc chạy.\n"
"Dùng GDK_GL=always hay GDK_GL=disable để thay thế"
#: ../gtk/inspector/visual.c:532 ../gtk/inspector/visual.c:533
#: ../gtk/inspector/visual.c:534
#: ../gtk/inspector/visual.c:628 ../gtk/inspector/visual.c:629
#: ../gtk/inspector/visual.c:630
msgid "GL rendering is disabled"
msgstr "Tô vẽ GL được bật"
@@ -3898,94 +3920,102 @@ msgid "GTK+ Theme"
msgstr "Chủ đề GTK+"
#: ../gtk/inspector/visual.ui.h:2
msgid "Dark variant"
msgstr "Biến thể đậm"
msgid "Dark Variant"
msgstr "Biến thể tối"
#: ../gtk/inspector/visual.ui.h:3
msgid "Cursor Theme"
msgstr "Chủ đề biểu tượng"
#: ../gtk/inspector/visual.ui.h:4
msgid "Cursor Size"
msgstr "Kích cỡ con trỏ"
#: ../gtk/inspector/visual.ui.h:5
msgid "Icon Theme"
msgstr "Chủ đề biểu tượng"
#: ../gtk/inspector/visual.ui.h:4 ../gtk/ui/gtkfontbutton.ui.h:1
#: ../gtk/inspector/visual.ui.h:6 ../gtk/ui/gtkfontbutton.ui.h:1
msgid "Font"
msgstr "Phông chữ"
#: ../gtk/inspector/visual.ui.h:5
#: ../gtk/inspector/visual.ui.h:7
msgid "Text Direction"
msgstr "Hướng chữ"
#: ../gtk/inspector/visual.ui.h:6
#: ../gtk/inspector/visual.ui.h:8
msgid "Left-to-Right"
msgstr "Trái-sang-Phải"
#: ../gtk/inspector/visual.ui.h:7
#: ../gtk/inspector/visual.ui.h:9
msgid "Right-to-Left"
msgstr "Phải-sang-Trái"
#: ../gtk/inspector/visual.ui.h:8
#: ../gtk/inspector/visual.ui.h:10
msgid "Window scaling"
msgstr "Giãn cửa sổ"
#: ../gtk/inspector/visual.ui.h:9
#: ../gtk/inspector/visual.ui.h:11
msgid "Animations"
msgstr "Hoạt ảnh"
#: ../gtk/inspector/visual.ui.h:10
#: ../gtk/inspector/visual.ui.h:12
msgid "Rendering Mode"
msgstr "Chế độ tô vẽ"
#: ../gtk/inspector/visual.ui.h:11
#: ../gtk/inspector/visual.ui.h:13
msgid "Similar"
msgstr "Tương tự"
#: ../gtk/inspector/visual.ui.h:12
#: ../gtk/inspector/visual.ui.h:14
msgid "Image"
msgstr "Ảnh"
#: ../gtk/inspector/visual.ui.h:13
#: ../gtk/inspector/visual.ui.h:15
msgid "Recording"
msgstr "Thu"
#: ../gtk/inspector/visual.ui.h:14
#: ../gtk/inspector/visual.ui.h:16
msgid "Show Graphic Updates"
msgstr "Hiện các cập nhật đồ họa"
#: ../gtk/inspector/visual.ui.h:15
#: ../gtk/inspector/visual.ui.h:17
msgid "Show Baselines"
msgstr "Hiện đường cơ sở"
#: ../gtk/inspector/visual.ui.h:16
#: ../gtk/inspector/visual.ui.h:18
msgid "Show Pixel Cache"
msgstr "Hiện bộ đệm điểm ảnh"
#: ../gtk/inspector/visual.ui.h:17
#: ../gtk/inspector/visual.ui.h:19
msgid "Simulate touchscreen"
msgstr "Mô phỏng touchscreen"
msgstr "Mô phỏng bút viết lên màn hình"
#: ../gtk/inspector/visual.ui.h:18
#: ../gtk/inspector/visual.ui.h:20
msgid "GL Rendering"
msgstr "Tô vẽ GL"
#: ../gtk/inspector/visual.ui.h:19
#: ../gtk/inspector/visual.ui.h:21
msgid "When needed"
msgstr "khi cần"
#: ../gtk/inspector/visual.ui.h:20
#: ../gtk/inspector/visual.ui.h:22
msgid "Always"
msgstr "Luôn"
#: ../gtk/inspector/visual.ui.h:21
#: ../gtk/inspector/visual.ui.h:23
msgid "Disabled"
msgstr "Bị tắt"
#: ../gtk/inspector/visual.ui.h:22
#: ../gtk/inspector/visual.ui.h:24
msgid "Software GL"
msgstr "Phần mềm GL"
#: ../gtk/inspector/visual.ui.h:23
#: ../gtk/inspector/visual.ui.h:25
msgid "Software Surfaces"
msgstr "Bề mặt phần mềm"
#: ../gtk/inspector/visual.ui.h:24
#: ../gtk/inspector/visual.ui.h:26
msgid "Texture Rectangle Extension"
msgstr "Phần mở rộng tô phủ hình chữ nhật"
@@ -4033,7 +4063,7 @@ msgstr "Thứ bậc"
msgid "Style Properties"
msgstr "Thuộc tính kiểu dáng"
#: ../gtk/inspector/window.ui.h:15 ../gtk/inspector/window.ui.h:24
#: ../gtk/inspector/window.ui.h:15 ../gtk/inspector/window.ui.h:25
msgid "CSS"
msgstr "CSS"
@@ -4054,22 +4084,26 @@ msgid "Gestures"
msgstr "Động tác"
#: ../gtk/inspector/window.ui.h:21
msgid "Magnifier"
msgstr "Kính lúp"
#: ../gtk/inspector/window.ui.h:22
msgid "Objects"
msgstr "Đối tượng"
#: ../gtk/inspector/window.ui.h:22
#: ../gtk/inspector/window.ui.h:23
msgid "Statistics"
msgstr "Thống kê"
#: ../gtk/inspector/window.ui.h:23
#: ../gtk/inspector/window.ui.h:24
msgid "Resources"
msgstr "Tài nguyên"
#: ../gtk/inspector/window.ui.h:25
#: ../gtk/inspector/window.ui.h:26
msgid "Visual"
msgstr "Trực quan"
#: ../gtk/inspector/window.ui.h:26 ../gtk/ui/gtkprintunixdialog.ui.h:24
#: ../gtk/inspector/window.ui.h:27 ../gtk/ui/gtkprintunixdialog.ui.h:24
msgid "General"
msgstr "Chung"
@@ -4986,7 +5020,7 @@ msgstr "ROC 8k"
#: ../gtk/updateiconcache.c:1386
#, c-format
msgid "Failed to write header\n"
msgstr "Lỗi ghi phần đầu\n"
msgstr "Gặp lỗi khi ghi phần đầu\n"
#: ../gtk/updateiconcache.c:1392
#, c-format
@@ -5455,7 +5489,7 @@ msgstr "Thông tin hóa đơn"
#: ../modules/printbackends/cups/gtkprintbackendcups.c:5203
msgid "Classified"
msgstr "Xem riêng"
msgstr "Cấp độ"
#: ../modules/printbackends/cups/gtkprintbackendcups.c:5203
msgid "Confidential"
@@ -5721,7 +5755,7 @@ msgstr "V"
#: ../gtk/ui/gtkcoloreditor.ui.h:8
msgid "Saturation"
msgstr "Độ bão h"
msgstr "Độ bão hòa"
#: ../gtk/ui/gtkfilechooserwidget.ui.h:1
msgid "Create Fo_lder"
@@ -5813,7 +5847,7 @@ msgstr "Trạng thái"
#: ../gtk/ui/gtkprintunixdialog.ui.h:8
msgid "Range"
msgstr "Phạm vi"
msgstr "Vùng"
#: ../gtk/ui/gtkprintunixdialog.ui.h:9
msgid "_All Pages"
@@ -5837,7 +5871,7 @@ msgid ""
"Specify one or more page ranges,\n"
" e.g. 13, 7, 11"
msgstr ""
"Hãy ghi rõ một hay nhiều vùng trang,\n"
"Đưa ra một hay nhiều vùng trang,\n"
" v.d. 1-3, 7, 11"
#: ../gtk/ui/gtkprintunixdialog.ui.h:17
@@ -5951,7 +5985,7 @@ msgid ""
" e.g. 1530, 235 pm, 141520, 114630 am, 4 pm"
msgstr ""
"Chỉ định giờ in,\n"
" v.d. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm"
" v.d. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm"
#: ../gtk/ui/gtkprintunixdialog.ui.h:67
msgid "Time of print"