Compare commits

...

64 Commits

Author SHA1 Message Date
Benjamin Otte 14562498ea sizegroup: Remove GtkQueueResizeFlags
They were only used with geometry widgets.
2015-03-24 04:45:38 +01:00
Benjamin Otte 6141b3f9f2 widget: Remove _gtk_widget_override_size_request()
The function was only used by the geometry widget.
2015-03-24 04:37:26 +01:00
Benjamin Otte caadc20ebc window: Ignore geometry widget
Ignore the geometry widget passed to gtk_window_set_geometry_hints().
Usind the widget itself was a hack that complicates the size request
machinery.

It is also incorrect in that it doesn't respect height-for-width.

Last but not least, it was only used by gnome-terminal and that
application can easily work without it.
2015-03-24 04:34:08 +01:00
Benjamin Otte fdc620cd56 cssnode: Clear widget path more aggressively
When recomputing CSS, we need a correct widget path in the fallback mode
where we're still using widget paths.
So we need to invalidate it everytime it actually changes, and not just
when emitting the style-updated signal.

Fixes css-match-regions reftest.
2015-03-24 04:23:07 +01:00
Changwoo Ryu 59579576c6 Updated Korean translation 2015-03-24 09:54:24 +09:00
Niels Nesse 641e280311 x11/gl: Removing some more legacy GL calls
They are not required any more.

http://bugzilla.gnome.org/show_bug.cgi?id=746668
2015-03-23 22:16:34 +00:00
Emmanuele Bassi 6bd7526ee7 x11/gl: Do not call glEnable/glDisable with GL_TEXTURE_2D
These are fixed pipeline functions, and Mesa will warn (if debugging
messages are enabled). At best, they are poinless calls.
2015-03-23 22:03:00 +00:00
Inaki Larranaga Murgoitio aaff396e48 Updated Basque language 2015-03-23 22:23:30 +01:00
Inaki Larranaga Murgoitio d6f6a52c00 Updated Basque language 2015-03-23 22:22:39 +01:00
Inaki Larranaga Murgoitio 84d5f0e64d Updated Basque language 2015-03-23 22:19:10 +01:00
Piotr Drąg c88ec37037 Fix a minor typo in translatable string 2015-03-23 17:35:41 +01:00
Piotr Drąg 68ff82cbf2 Updated Polish translation 2015-03-23 17:33:38 +01:00
Piotr Drąg 81776ea3f1 Updated POTFILES.in and POTFILES.skip 2015-03-23 17:25:55 +01:00
Marek Černocký 6b1ca8b887 Updated Czech translation 2015-03-23 16:15:57 +01:00
Matthias Clasen a08ee01c64 csd: Fix an oversight for popups
After the recent rework of client-side shadow code, menus,
tooltips and similar popups were ending up with solid decorations.
Fix this oversight.
2015-03-23 10:41:10 -04:00
Balázs Úr 83b6423409 Updated Hungarian translation 2015-03-23 14:40:53 +00:00
Yosef Or Boczko 51a434ad4b Update properties Hebrew translation 2015-03-23 14:53:57 +02:00
Yosef Or Boczko 1abb28ec65 Updated Hebrew translation 2015-03-23 14:52:42 +02:00
Tom Tryfonidis 66a7636b63 Updated Greek translations 2015-03-23 11:59:24 +02:00
Milo Casagrande 72afa5c2ee Updated Italian translation 2015-03-23 07:29:55 +00:00
Milo Casagrande 6cadef7ff6 Updated Italian translation 2015-03-23 07:25:57 +00:00
Matthias Clasen eea16f03f5 Stop using GDK_POINTER_MOTION_HINT_MASK in widgets
It is deprecated and no longer needed, and,as observed in
https://bugzilla.gnome.org/show_bug.cgi?id=746253 it
interferes with turning off event compression.
2015-03-22 17:33:38 -04:00
Matthias Clasen 6f829d4450 Silence another compiler warning
Again, our habit of comparing enum values against -1.
2015-03-22 15:20:43 -04:00
Matthias Clasen 70f6faf0f1 Don't return G_TYPE_INVALID as a pointer
Use NULL for g_return_val_if_fail checks if the function returns
a pointer. Pointed out by clang.
2015-03-22 15:19:59 -04:00
Matthias Clasen c723eba135 text view: Avoid clang compiler warnings
Again, our habit to use -1 as an unset value for enum types.
2015-03-22 15:19:17 -04:00
Matthias Clasen f00f2fdf0d Remove a redundant const
const gchar const is still just const gchar, unless there's
indirections in between.
2015-03-22 15:18:35 -04:00
Matthias Clasen a14bb5578f css: Silence a clang warning
Clang complains that this check can never be true. Since this
is a argument range check which we do to catch bad input,
convince clang to not complain instead of taking it out.
2015-03-22 15:17:27 -04:00
Matthias Clasen fb573e58f1 Remove a pointless comparison
Comparing an unsigned value against < 0 is not going to succeed.
Pointed out by clang.
2015-03-22 15:16:14 -04:00
Matthias Clasen 2250cd87eb paper size: Don't use abs() on floats
Use fabs() instead. Pointed out by clang.
2015-03-22 15:15:42 -04:00
Matthias Clasen ddf7501acd More of the same
A similar case in GtkIconHelper. Here we were confusing ourselves,
and compared a icon_size against -1, although the variable is
never set to -1.
2015-03-22 15:14:42 -04:00
Matthias Clasen 543eae0d76 Avoid some clang compiler warnings
Avoid some compiler warnings from clang in deprecated code.
Most of these are around our habit of using -1 as an 'unset'
value for enumerations.
2015-03-22 15:13:32 -04:00
Matthias Clasen fbbb3d1816 Fix some clang warnings
It complains about double const, and it is right.
2015-03-22 14:40:57 -04:00
Matthias Clasen 2a444e30f7 Make the blur code compile with clang
clang complains that the expression involving sqrt() is not
constant, and thus refuses to accept it as a case label. So,
use precomputed values instead.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-22 13:49:24 -04:00
Matthias Clasen 4ef0c34b65 Fix the build 2015-03-22 11:55:33 -04:00
Matthias Clasen db28b8c600 tooltip: Minor cleanup
Preserve the symmetry in gtk_tooltip_set_last_window.
2015-03-22 11:47:23 -04:00
Matthias Clasen a17d6290e4 search bar: Clean up weak pointer handling
Break out a setter that manages the weak pointer, and
use it in finalize. This also fixes a bug where we were
forgetting to disconnect the right signal handler in
some cases.
2015-03-22 11:46:16 -04:00
Matthias Clasen b55aa154e6 mount operation: Minor formatting cleanup
The pattern for g_object_add_weak_pointer calls is to
have the same expression in both arguments.
2015-03-22 11:45:19 -04:00
Matthias Clasen 03417cf864 menu button: Minor cleanup
Preserve the symmetry in set_align_widget_pointer.
2015-03-22 11:44:37 -04:00
Matthias Clasen c0c1774b01 Clean up some unfortunate formatting
"if (...) do" just looks wrong.
2015-03-22 11:44:00 -04:00
Matthias Clasen 37774928bd dnd: Introduce a helper to manage the weak pointer
Introduce a setter that takes care of updating the weak ref
whenever we assign info->widget. Just a cleanup of the previous patch.
2015-03-22 11:16:29 -04:00
Tom Hughes e7eaca9534 DND: Clean up weak pointers when they are no longer needed
Failure to do so leads to memory corruption down the road.
This was introduced in commit 650c25e06c.

https://bugzilla.gnome.org/show_bug.cgi?id=746602
2015-03-22 11:16:29 -04:00
Christian Kirbach ec32d8dade Updated German translation 2015-03-22 11:07:20 +00:00
Jordi Mas 1c007e4196 Upload Catalan translation 2015-03-22 04:18:27 -04:00
Matthias Clasen ca41bb440d Add an index for new api to the docs 2015-03-22 02:11:03 -04:00
Matthias Clasen 5c5464a469 radio-menu-item: Add join_group()
The other Radio* widgets have this convenience method that removes the
memory management of the opaque GSList used to handle the group from the
API usable from language bindings (especially the ones not based on
introspection).

This commit adds gtk_radio_menu_item_join_group().

https://bugzilla.gnome.org/show_bug.cgi?id=671362
2015-03-22 02:10:38 -04:00
Matthias Clasen ad05d84897 radio-menu-item: Allow arguments to be NULL
Some arguments, like the group and the label of a RadioMenuItem, can be
NULL: the RadioMenuItem has all the code to deal with them. The argument
validation is too strict, though, for instance doing:

  return_if_fail (IS_RADIO_MENU_ITEM (foo))

  if (foo != NULL)
    set_foo (foo)

Which is obviously incorrect.

This commit also modifies the annotations of the API, to ensure that
language bindings do the right thing.

https://bugzilla.gnome.org/show_bug.cgi?id=671362
2015-03-22 02:10:38 -04:00
Emmanuele Bassi 955aed9227 radio-menu-item: Handle a !NULL group
If we create a RadioMenuItem without a group, and then set a group, the
menu item will still be set as active, which means an inconsistently
drawn radio menu item - as the RadioMenuItem will set the active flag on
itself, but then it won't reset it when it gets a new group.

https://bugzilla.gnome.org/show_bug.cgi?id=671362
2015-03-22 02:10:37 -04:00
Matthias Clasen c16acff3ea Start 3.17 development
Bump the version to 3.17.0 and add version macros.
2015-03-22 02:10:23 -04:00
Olivier Fourdan 03213b9509 Improve CSD decorations without a compositor
It turned out that using mwm hints to instruct wms to
create border-only decorations is not really working
universally. So, instead of doing this, render a solid
frame without shadow on the client-side to handle this
case.

https://bugzilla.gnome.org/show_bug.cgi?id=746222

Signed-off-by: Olivier Fourdan <fourdan@xfce.org>
2015-03-22 01:34:37 -04:00
Matthias Clasen bae97a4c6b image: Optimize non-resize changes
When the image content is changed, only queue a resize
if the size is actually changing, otherwise just a
redraw. Suggested by Owen in

https://bugzilla.gnome.org/show_bug.cgi?id=613833
2015-03-21 22:40:46 -04:00
Christian Hergert 7bb3d9557f a11y: handle atk race condition where widget has been destroyed
If the widget has been destroyed since a DBus message had been sent,
we could be in a condition that the widget pointer exists but it does
not have a window.

This bails as if the widget didn't exist if there is no available
GdkWindow.

We also set the extents to 0 to be defensive since this is a vfunc
implementation.

https://bugzilla.gnome.org/show_bug.cgi?id=746586
2015-03-21 20:05:08 -04:00
Muhammet Kara 9e9c0a133e Updated Turkish translation 2015-03-21 21:25:38 +00:00
Alexander Larsson 8e032622c8 box-shadow: For top/bottom and left/right parts, repeat a single line
Since these part really are the same in all of the x or y direction
and we don't blur in that direction we can just blur one line and
repeat it during drawing.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 21:39:15 +01:00
Alexander Larsson 967cb56275 shadow-box: Blur only horizontally/vertically for the non-corner parts
There is no need to e.g. blur in the x-direction for the top part
of a box shadow. Also, there is no need to extend the mask in the
non-blurred direction.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 21:31:49 +01:00
Alexander Larsson 9c2a16fb3b shadow-box: Bail out blur early if radius is 1px
For radius 1px the current implementation rounds down to a 1 px box
filter which is a no-op. Rather than creating useless shadow masks
in this case we bail out blurring early.

Another alternative would be to make radius 1px round up to a 2 px box
filter, but that would change the rendering of Adwaita which is probably
not a great idea this late in the cycle.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 21:07:26 +01:00
Alexander Larsson d0dc1f52cc gtkcairoblur: Unroll inner loop for common radius values
This unrolls the inner blur loop for radius 1-10, allowing
the compiler to use a divide-by-constant operation instead
of a generic division.

Here is the blur-performance output before:

Radius  1: 124.95 msec, 32.01 kpixels/msec:
Radius  2: 117.27 msec, 34.11 kpixels/msec:
Radius  3: 123.57 msec, 32.37 kpixels/msec:
Radius  4: 118.17 msec, 33.85 kpixels/msec:
Radius  5: 119.32 msec, 33.52 kpixels/msec:
Radius  6: 124.17 msec, 32.21 kpixels/msec:
Radius  7: 121.04 msec, 33.05 kpixels/msec:
Radius  8: 130.64 msec, 30.62 kpixels/msec:
Radius  9: 119.47 msec, 33.48 kpixels/msec:
Radius 10: 117.95 msec, 33.91 kpixels/msec:
Radius 11: 122.38 msec, 32.68 kpixels/msec:
Radius 12: 121.92 msec, 32.81 kpixels/msec:
Radius 13: 125.45 msec, 31.89 kpixels/msec:
Radius 14: 121.63 msec, 32.89 kpixels/msec:
Radius 15: 120.18 msec, 33.28 kpixels/msec:

And after:

Radius  1: 42.26 msec, 94.65 kpixels/msec:
Radius  2: 59.15 msec, 67.62 kpixels/msec:
Radius  3: 60.29 msec, 66.35 kpixels/msec:
Radius  4: 64.53 msec, 61.99 kpixels/msec:
Radius  5: 60.07 msec, 66.59 kpixels/msec:
Radius  6: 62.43 msec, 64.07 kpixels/msec:
Radius  7: 60.36 msec, 66.27 kpixels/msec:
Radius  8: 59.59 msec, 67.13 kpixels/msec:
Radius  9: 76.17 msec, 52.51 kpixels/msec:
Radius 10: 79.41 msec, 50.37 kpixels/msec:
Radius 11: 118.92 msec, 33.64 kpixels/msec:
Radius 12: 121.31 msec, 32.97 kpixels/msec:
Radius 13: 118.30 msec, 33.81 kpixels/msec:
Radius 14: 116.82 msec, 34.24 kpixels/msec:
Radius 15: 116.99 msec, 34.19 kpixels/msec:

I.e. almost double performance for the unrolled radius values.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 21:07:26 +01:00
Alexander Larsson ae21e08782 gtkcairoblur: Minor restructure
This just moves get_box_filter_size to the top and makes
it a macro (so it can be used as a constant later).

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 20:59:57 +01:00
Alexander Larsson 9ba185b749 Add performance test for gtkcairoblur
This just creates a large cairo surface and times bluring it
at various values of radius.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 20:59:57 +01:00
hanniedu dd1af9bbdd Updated Dutch translation gtk and gtk-properties master 3.16 2015-03-21 18:25:17 +01:00
Matthias Clasen 8c8e6588dc HighContrast: Fix a typo
Commit 0a39d7d9 introduced a selected_bg_color with a missing $
in front of it.
2015-03-20 20:49:56 -04:00
Gábor Kelemen 4a2b44467b Updated Hungarian translation 2015-03-20 23:23:24 +00:00
Balázs Úr 5f52a2c8c9 Updated Hungarian translation 2015-03-20 22:57:03 +00:00
Matthias Clasen 40bb2a1616 reftests: Add a way to compare different runs
gtk-reftest already had an --output=DIR option to tell it where
to save all the resulting images. Now you can combine this with
the --compare-with=DIR option in a second run to make gtk-reftest
compare the .out.png files from the first run with the .out.png
files of the current run, instead of producing .ref.png files.

The intended use for this is to verify that changes do not affect
the generated output.
2015-03-20 16:42:04 -04:00
Rico Tzschichholz db8e6aa497 mir: Fix version annotation, the mir-backend is available since 3.16 2015-03-20 20:23:01 +01:00
81 changed files with 31012 additions and 29353 deletions
+2 -2
View File
@@ -9,8 +9,8 @@
# set GTK_BINARY_AGE and GTK_INTERFACE_AGE to 0. # set GTK_BINARY_AGE and GTK_INTERFACE_AGE to 0.
m4_define([gtk_major_version], [3]) m4_define([gtk_major_version], [3])
m4_define([gtk_minor_version], [15]) m4_define([gtk_minor_version], [17])
m4_define([gtk_micro_version], [12]) m4_define([gtk_micro_version], [0])
m4_define([gtk_interface_age], [0]) m4_define([gtk_interface_age], [0])
m4_define([gtk_binary_age], m4_define([gtk_binary_age],
[m4_eval(100 * gtk_minor_version + gtk_micro_version)]) [m4_eval(100 * gtk_minor_version + gtk_micro_version)])
+12 -9
View File
@@ -33,8 +33,7 @@ static GtkWidget *
create_menu (gint depth) create_menu (gint depth)
{ {
GtkWidget *menu; GtkWidget *menu;
GtkWidget *menuitem; GtkRadioMenuItem *last_item;
GSList *group;
char buf[32]; char buf[32];
int i, j; int i, j;
@@ -42,20 +41,24 @@ create_menu (gint depth)
return NULL; return NULL;
menu = gtk_menu_new (); menu = gtk_menu_new ();
group = NULL; last_item = NULL;
for (i = 0, j = 1; i < 5; i++, j++) for (i = 0, j = 1; i < 5; i++, j++)
{ {
GtkWidget *menu_item;
sprintf (buf, "item %2d - %d", depth, j); sprintf (buf, "item %2d - %d", depth, j);
menuitem = gtk_radio_menu_item_new_with_label (group, buf);
group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); menu_item = gtk_radio_menu_item_new_with_label_from_widget (NULL, buf);
gtk_widget_show (menuitem); gtk_radio_menu_item_join_group (GTK_RADIO_MENU_ITEM (menu_item), last_item);
last_item = GTK_RADIO_MENU_ITEM (menu_item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
gtk_widget_show (menu_item);
if (i == 3) if (i == 3)
gtk_widget_set_sensitive (menuitem, FALSE); gtk_widget_set_sensitive (menu_item, FALSE);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (depth - 1)); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), create_menu (depth - 1));
} }
return menu; return menu;
+4
View File
@@ -467,6 +467,10 @@
<title>Index of new symbols in 3.16</title> <title>Index of new symbols in 3.16</title>
<xi:include href="xml/api-index-3.16.xml"><xi:fallback /></xi:include> <xi:include href="xml/api-index-3.16.xml"><xi:fallback /></xi:include>
</index> </index>
<index id="api-index-3-18" role="3.18">
<title>Index of new symbols in 3.18</title>
<xi:include href="xml/api-index-3.18.xml"><xi:fallback /></xi:include>
</index>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include> <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
+1
View File
@@ -2771,6 +2771,7 @@ gtk_radio_menu_item_new_with_label_from_widget
gtk_radio_menu_item_new_with_mnemonic_from_widget gtk_radio_menu_item_new_with_mnemonic_from_widget
gtk_radio_menu_item_set_group gtk_radio_menu_item_set_group
gtk_radio_menu_item_get_group gtk_radio_menu_item_get_group
gtk_radio_menu_item_join_group
<SUBSECTION Standard> <SUBSECTION Standard>
GTK_RADIO_MENU_ITEM GTK_RADIO_MENU_ITEM
GTK_IS_RADIO_MENU_ITEM GTK_IS_RADIO_MENU_ITEM
+4 -3
View File
@@ -52,7 +52,8 @@ get_vertex_type_name (int type)
} }
static guint static guint
create_shader (int type, const char const *code) create_shader (int type,
const char *code)
{ {
guint shader; guint shader;
int status; int status;
@@ -85,8 +86,8 @@ create_shader (int type, const char const *code)
static void static void
make_program (GdkGLContextProgram *program, make_program (GdkGLContextProgram *program,
const char const *vertex_shader_code, const char *vertex_shader_code,
const char const *fragment_shader_code) const char *fragment_shader_code)
{ {
guint vertex_shader, fragment_shader; guint vertex_shader, fragment_shader;
int status; int status;
+24
View File
@@ -142,6 +142,16 @@
*/ */
#define GDK_VERSION_3_16 (G_ENCODE_VERSION (3, 16)) #define GDK_VERSION_3_16 (G_ENCODE_VERSION (3, 16))
/**
* GDK_VERSION_3_18:
*
* A macro that evaluates to the 3.18 version of GDK, in a format
* that can be used by the C pre-processor.
*
* Since: 3.18
*/
#define GDK_VERSION_3_18 (G_ENCODE_VERSION (3, 18))
/* evaluates to the current stable version; for development cycles, /* evaluates to the current stable version; for development cycles,
* this means the next stable target * this means the next stable target
*/ */
@@ -340,5 +350,19 @@
# define GDK_AVAILABLE_IN_3_16 _GDK_EXTERN # define GDK_AVAILABLE_IN_3_16 _GDK_EXTERN
#endif #endif
#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_18
# define GDK_DEPRECATED_IN_3_18 GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_18_FOR(f) GDK_DEPRECATED_FOR(f)
#else
# define GDK_DEPRECATED_IN_3_18 _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_18_FOR(f) _GDK_EXTERN
#endif
#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_18
# define GDK_AVAILABLE_IN_3_18 GDK_UNAVAILABLE(3, 18)
#else
# define GDK_AVAILABLE_IN_3_18 _GDK_EXTERN
#endif
#endif /* __GDK_VERSION_MACROS_H__ */ #endif /* __GDK_VERSION_MACROS_H__ */
+3 -3
View File
@@ -30,13 +30,13 @@
#define GDK_TYPE_MIR_WINDOW (gdk_mir_window_get_type ()) #define GDK_TYPE_MIR_WINDOW (gdk_mir_window_get_type ())
#define GDK_IS_MIR_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_MIR_WINDOW)) #define GDK_IS_MIR_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_MIR_WINDOW))
GDK_AVAILABLE_IN_3_10 GDK_AVAILABLE_IN_3_16
GType gdk_mir_display_get_type (void); GType gdk_mir_display_get_type (void);
GDK_AVAILABLE_IN_3_10 GDK_AVAILABLE_IN_3_16
MirConnection *gdk_mir_display_get_mir_connection (GdkDisplay *display); MirConnection *gdk_mir_display_get_mir_connection (GdkDisplay *display);
GDK_AVAILABLE_IN_3_10 GDK_AVAILABLE_IN_3_16
GType gdk_mir_window_get_type (void); GType gdk_mir_window_get_type (void);
GDK_AVAILABLE_IN_3_16 GDK_AVAILABLE_IN_3_16
-2
View File
@@ -461,7 +461,6 @@ gdk_x11_gl_context_texture_from_surface (GdkGLContext *paint_context,
glGenTextures (1, &texture_id); glGenTextures (1, &texture_id);
glBindTexture (target, texture_id); glBindTexture (target, texture_id);
glEnable (target);
glTexParameteri (target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri (target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri (target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri (target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
@@ -526,7 +525,6 @@ gdk_x11_gl_context_texture_from_surface (GdkGLContext *paint_context,
glXReleaseTexImageEXT (glx_pixmap->display, glx_pixmap->drawable, glXReleaseTexImageEXT (glx_pixmap->display, glx_pixmap->drawable,
GLX_FRONT_LEFT_EXT); GLX_FRONT_LEFT_EXT);
glDisable (target);
glDeleteTextures (1, &texture_id); glDeleteTextures (1, &texture_id);
glx_pixmap_destroy(glx_pixmap); glx_pixmap_destroy(glx_pixmap);
+8
View File
@@ -509,6 +509,11 @@ gtk_text_view_accessible_get_character_extents (AtkText *text,
GdkWindow *window; GdkWindow *window;
gint x_widget, y_widget, x_window, y_window; gint x_widget, y_widget, x_window, y_window;
*x = 0;
*y = 0;
*width = 0;
*height = 0;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL) if (widget == NULL)
return; return;
@@ -519,6 +524,9 @@ gtk_text_view_accessible_get_character_extents (AtkText *text,
gtk_text_view_get_iter_location (view, &iter, &rectangle); gtk_text_view_get_iter_location (view, &iter, &rectangle);
window = gtk_text_view_get_window (view, GTK_TEXT_WINDOW_WIDGET); window = gtk_text_view_get_window (view, GTK_TEXT_WINDOW_WIDGET);
if (window == NULL)
return;
gdk_window_get_origin (window, &x_widget, &y_widget); gdk_window_get_origin (window, &x_widget, &y_widget);
*height = rectangle.height; *height = rectangle.height;
+2 -2
View File
@@ -1111,7 +1111,7 @@ gtk_font_selection_size_activate (GtkWidget *w,
const gchar *text; const gchar *text;
text = gtk_entry_get_text (GTK_ENTRY (priv->size_entry)); text = gtk_entry_get_text (GTK_ENTRY (priv->size_entry));
new_size = MAX (0.1, atof (text) * PANGO_SCALE + 0.5); new_size = (int) MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
if (priv->size != new_size) if (priv->size != new_size)
gtk_font_selection_set_size (fontsel, new_size); gtk_font_selection_set_size (fontsel, new_size);
@@ -1130,7 +1130,7 @@ gtk_font_selection_size_focus_out (GtkWidget *w,
const gchar *text; const gchar *text;
text = gtk_entry_get_text (GTK_ENTRY (priv->size_entry)); text = gtk_entry_get_text (GTK_ENTRY (priv->size_entry));
new_size = MAX (0.1, atof (text) * PANGO_SCALE + 0.5); new_size = (int) MAX (0.1, atof (text) * PANGO_SCALE + 0.5);
gtk_font_selection_set_size (fontsel, new_size); gtk_font_selection_set_size (fontsel, new_size);
+2 -2
View File
@@ -77,7 +77,7 @@ struct _GtkHandleBoxPrivate
{ {
/* Properties */ /* Properties */
GtkPositionType handle_position; GtkPositionType handle_position;
GtkPositionType snap_edge; gint snap_edge;
GtkShadowType shadow_type; GtkShadowType shadow_type;
gboolean child_detached; gboolean child_detached;
/* Properties */ /* Properties */
@@ -1051,7 +1051,7 @@ gtk_handle_box_get_snap_edge (GtkHandleBox *handle_box)
{ {
g_return_val_if_fail (GTK_IS_HANDLE_BOX (handle_box), (GtkPositionType)-1); g_return_val_if_fail (GTK_IS_HANDLE_BOX (handle_box), (GtkPositionType)-1);
return handle_box->priv->snap_edge; return (GtkPositionType)handle_box->priv->snap_edge;
} }
/** /**
+3 -3
View File
@@ -2945,17 +2945,17 @@ gtk_icon_factory_buildable_custom_tag_end (GtkBuildable *buildable,
} }
if (source_data->icon_name) if (source_data->icon_name)
gtk_icon_source_set_icon_name (icon_source, source_data->icon_name); gtk_icon_source_set_icon_name (icon_source, source_data->icon_name);
if (source_data->size != -1) if ((gint)source_data->size != -1)
{ {
gtk_icon_source_set_size (icon_source, source_data->size); gtk_icon_source_set_size (icon_source, source_data->size);
gtk_icon_source_set_size_wildcarded (icon_source, FALSE); gtk_icon_source_set_size_wildcarded (icon_source, FALSE);
} }
if (source_data->direction != -1) if ((gint)source_data->direction != -1)
{ {
gtk_icon_source_set_direction (icon_source, source_data->direction); gtk_icon_source_set_direction (icon_source, source_data->direction);
gtk_icon_source_set_direction_wildcarded (icon_source, FALSE); gtk_icon_source_set_direction_wildcarded (icon_source, FALSE);
} }
if (source_data->state != -1) if ((gint)source_data->state != -1)
{ {
gtk_icon_source_set_state (icon_source, source_data->state); gtk_icon_source_set_state (icon_source, source_data->state);
gtk_icon_source_set_state_wildcarded (icon_source, FALSE); gtk_icon_source_set_state_wildcarded (icon_source, FALSE);
+1 -1
View File
@@ -95,7 +95,7 @@ real_add (const GtkStockItem *items,
gpointer old_key, old_value; gpointer old_key, old_value;
const GtkStockItem *item = &items[i]; const GtkStockItem *item = &items[i];
if (replace_primary && item->modifier == PRIMARY_MODIFIER) if (replace_primary && (guint)item->modifier == PRIMARY_MODIFIER)
{ {
item = gtk_stock_item_copy (item); item = gtk_stock_item_copy (item);
((GtkStockItem *)item)->modifier = (NON_STATIC_MASK | ((GtkStockItem *)item)->modifier = (NON_STATIC_MASK |
+84 -43
View File
@@ -25,6 +25,32 @@
#include <math.h> #include <math.h>
#include <string.h> #include <string.h>
/*
* Gets the size for a single box blur.
*
* Much of this, the 3 * sqrt(2 * pi) / 4, is the known value for
* approximating a Gaussian using box blurs. This yields quite a good
* approximation for a Gaussian. For more details, see:
* http://www.w3.org/TR/SVG11/filters.html#feGaussianBlurElement
* https://bugzilla.mozilla.org/show_bug.cgi?id=590039#c19
*/
#define GAUSSIAN_SCALE_FACTOR ((3.0 * sqrt(2 * G_PI) / 4))
#define get_box_filter_size(radius) ((int)(GAUSSIAN_SCALE_FACTOR * (radius)))
/* Sadly, clang is picky about get_box_filter_size(2) not being a
* constant expression, thus we have to use precomputed values.
*/
#define BOX_FILTER_SIZE_2 3
#define BOX_FILTER_SIZE_3 5
#define BOX_FILTER_SIZE_4 7
#define BOX_FILTER_SIZE_5 9
#define BOX_FILTER_SIZE_6 11
#define BOX_FILTER_SIZE_7 13
#define BOX_FILTER_SIZE_8 15
#define BOX_FILTER_SIZE_9 16
#define BOX_FILTER_SIZE_10 18
/* This applies a single box blur pass to a horizontal range of pixels; /* This applies a single box blur pass to a horizontal range of pixels;
* since the box blur has the same weight for all pixels, we can * since the box blur has the same weight for all pixels, we can
* implement an efficient sliding window algorithm where we add * implement an efficient sliding window algorithm where we add
@@ -60,18 +86,37 @@ blur_xspan (guchar *row,
* only divide down after all three passes. (SSE parallel implementation * only divide down after all three passes. (SSE parallel implementation
* of the divide step is possible.) * of the divide step is possible.)
*/ */
for (i = -d + offset; i < row_width + offset; i++)
#define BLUR_ROW_KERNEL(D) \
for (i = -(D) + offset; i < row_width + offset; i++) \
{ \
if (i >= 0 && i < row_width) \
sum += row[i]; \
\
if (i >= offset) \
{ \
if (i >= (D)) \
sum -= row[i - (D)]; \
\
tmp_buffer[i - offset] = (sum + (D) / 2) / (D); \
} \
} \
break;
/* We unroll the values for d for radius 2-10 to avoid a generic
* divide operation (not radius 1, because its a no-op) */
switch (d)
{ {
if (i >= 0 && i < row_width) case BOX_FILTER_SIZE_2: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_2);
sum += row[i]; case BOX_FILTER_SIZE_3: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_3);
case BOX_FILTER_SIZE_4: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_4);
if (i >= offset) case BOX_FILTER_SIZE_5: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_5);
{ case BOX_FILTER_SIZE_6: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_6);
if (i >= d) case BOX_FILTER_SIZE_7: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_7);
sum -= row[i - d]; case BOX_FILTER_SIZE_8: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_8);
case BOX_FILTER_SIZE_9: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_9);
tmp_buffer[i - offset] = (sum + d / 2) / d; case BOX_FILTER_SIZE_10: BLUR_ROW_KERNEL (BOX_FILTER_SIZE_10);
} default: BLUR_ROW_KERNEL (d);
} }
memcpy (row, tmp_buffer, row_width); memcpy (row, tmp_buffer, row_width);
@@ -140,45 +185,35 @@ flip_buffer (guchar *dst_buffer,
#undef BLOCK_SIZE #undef BLOCK_SIZE
} }
/*
* Gets the size for a single box blur.
*
* Much of this, the 3 * sqrt(2 * pi) / 4, is the known value for
* approximating a Gaussian using box blurs. This yields quite a good
* approximation for a Gaussian. For more details, see:
* http://www.w3.org/TR/SVG11/filters.html#feGaussianBlurElement
* https://bugzilla.mozilla.org/show_bug.cgi?id=590039#c19
*/
#define GAUSSIAN_SCALE_FACTOR ((3.0 * sqrt(2 * G_PI) / 4))
static int
get_box_filter_size (double radius)
{
return GAUSSIAN_SCALE_FACTOR * radius;
}
static void static void
_boxblur (guchar *buffer, _boxblur (guchar *buffer,
int width, int width,
int height, int height,
int radius) int radius,
GtkBlurFlags flags)
{ {
guchar *flipped_buffer; guchar *flipped_buffer;
int d = get_box_filter_size (radius); int d = get_box_filter_size (radius);
flipped_buffer = g_malloc (width * height); flipped_buffer = g_malloc (width * height);
/* Step 1: swap rows and columns */ if (flags & GTK_BLUR_Y)
flip_buffer (flipped_buffer, buffer, width, height); {
/* Step 1: swap rows and columns */
flip_buffer (flipped_buffer, buffer, width, height);
/* Step 2: blur rows (really columns) */ /* Step 2: blur rows (really columns) */
blur_rows (flipped_buffer, buffer, height, width, d); blur_rows (flipped_buffer, buffer, height, width, d);
/* Step 3: swap rows and columns */ /* Step 3: swap rows and columns */
flip_buffer (buffer, flipped_buffer, height, width); flip_buffer (buffer, flipped_buffer, height, width);
}
/* Step 4: blur rows */ if (flags & GTK_BLUR_X)
blur_rows (buffer, flipped_buffer, width, height, d); {
/* Step 4: blur rows */
blur_rows (buffer, flipped_buffer, width, height, d);
}
g_free (flipped_buffer); g_free (flipped_buffer);
} }
@@ -192,7 +227,8 @@ _boxblur (guchar *buffer,
*/ */
void void
_gtk_cairo_blur_surface (cairo_surface_t* surface, _gtk_cairo_blur_surface (cairo_surface_t* surface,
double radius_d) double radius_d,
GtkBlurFlags flags)
{ {
int radius = radius_d; int radius = radius_d;
@@ -200,7 +236,12 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface,
g_return_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE); g_return_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE);
g_return_if_fail (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_A8); g_return_if_fail (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_A8);
if (radius == 0) /* The code doesn't actually do any blurring for radius 1, as it
* ends up with box filter size 1 */
if (radius <= 1)
return;
if ((flags & (GTK_BLUR_X|GTK_BLUR_Y)) == 0)
return; return;
/* Before we mess with the surface, execute any pending drawing. */ /* Before we mess with the surface, execute any pending drawing. */
@@ -209,7 +250,7 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface,
_boxblur (cairo_image_surface_get_data (surface), _boxblur (cairo_image_surface_get_data (surface),
cairo_image_surface_get_stride (surface), cairo_image_surface_get_stride (surface),
cairo_image_surface_get_height (surface), cairo_image_surface_get_height (surface),
radius); radius, flags);
/* Inform cairo we altered the surface contents. */ /* Inform cairo we altered the surface contents. */
cairo_surface_mark_dirty (surface); cairo_surface_mark_dirty (surface);
+9 -1
View File
@@ -29,8 +29,16 @@
G_BEGIN_DECLS G_BEGIN_DECLS
typedef enum {
GTK_BLUR_NONE = 0,
GTK_BLUR_X = 1<<0,
GTK_BLUR_Y = 1<<1,
GTK_BLUR_REPEAT = 1<<2
} GtkBlurFlags;
void _gtk_cairo_blur_surface (cairo_surface_t *surface, void _gtk_cairo_blur_surface (cairo_surface_t *surface,
double radius); double radius,
GtkBlurFlags flags);;
int _gtk_cairo_blur_compute_pixels (double radius); int _gtk_cairo_blur_compute_pixels (double radius);
G_END_DECLS G_END_DECLS
+21 -41
View File
@@ -1941,34 +1941,6 @@ gtk_container_queue_resize_handler (GtkContainer *container)
} }
} }
static void
_gtk_container_queue_resize_internal (GtkContainer *container,
gboolean invalidate_only)
{
GtkWidget *widget;
g_return_if_fail (GTK_IS_CONTAINER (container));
widget = GTK_WIDGET (container);
do
{
_gtk_widget_set_alloc_needed (widget, TRUE);
_gtk_size_request_cache_clear (_gtk_widget_peek_request_cache (widget));
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
if (GTK_IS_RESIZE_CONTAINER (widget))
break;
G_GNUC_END_IGNORE_DEPRECATIONS;
widget = gtk_widget_get_parent (widget);
}
while (widget);
if (widget && !invalidate_only)
gtk_container_queue_resize_handler (GTK_CONTAINER (widget));
}
void void
_gtk_container_queue_restyle (GtkContainer *container) _gtk_container_queue_restyle (GtkContainer *container)
{ {
@@ -1999,20 +1971,28 @@ _gtk_container_queue_restyle (GtkContainer *container)
void void
_gtk_container_queue_resize (GtkContainer *container) _gtk_container_queue_resize (GtkContainer *container)
{ {
_gtk_container_queue_resize_internal (container, FALSE); GtkWidget *widget;
}
/** g_return_if_fail (GTK_IS_CONTAINER (container));
* _gtk_container_resize_invalidate:
* @container: a #GtkContainer widget = GTK_WIDGET (container);
*
* Invalidates cached sizes like _gtk_container_queue_resize() but doesn't do
* actually queue the resize container for resize. {
*/ _gtk_widget_set_alloc_needed (widget, TRUE);
void _gtk_size_request_cache_clear (_gtk_widget_peek_request_cache (widget));
_gtk_container_resize_invalidate (GtkContainer *container)
{ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
_gtk_container_queue_resize_internal (container, TRUE); if (GTK_IS_RESIZE_CONTAINER (widget))
break;
G_GNUC_END_IGNORE_DEPRECATIONS;
widget = gtk_widget_get_parent (widget);
}
while (widget);
if (widget)
gtk_container_queue_resize_handler (GTK_CONTAINER (widget));
} }
void void
-1
View File
@@ -28,7 +28,6 @@ G_BEGIN_DECLS
GList * _gtk_container_get_all_children (GtkContainer *container); GList * _gtk_container_get_all_children (GtkContainer *container);
void _gtk_container_queue_resize (GtkContainer *container); void _gtk_container_queue_resize (GtkContainer *container);
void _gtk_container_queue_restyle (GtkContainer *container); void _gtk_container_queue_restyle (GtkContainer *container);
void _gtk_container_resize_invalidate (GtkContainer *container);
void _gtk_container_clear_resize_widgets (GtkContainer *container); void _gtk_container_clear_resize_widgets (GtkContainer *container);
gchar* _gtk_container_child_composite_name (GtkContainer *container, gchar* _gtk_container_child_composite_name (GtkContainer *container,
GtkWidget *child); GtkWidget *child);
+1 -1
View File
@@ -333,7 +333,7 @@ static GtkCssValue font_variant_values[] = {
GtkCssValue * GtkCssValue *
_gtk_css_font_variant_value_new (PangoVariant font_variant) _gtk_css_font_variant_value_new (PangoVariant font_variant)
{ {
g_return_val_if_fail (font_variant < G_N_ELEMENTS (font_variant_values), NULL); g_return_val_if_fail ((gint)font_variant < G_N_ELEMENTS (font_variant_values), NULL);
return _gtk_css_value_ref (&font_variant_values[font_variant]); return _gtk_css_value_ref (&font_variant_values[font_variant]);
} }
+61 -20
View File
@@ -297,7 +297,10 @@ static gboolean
needs_blur (const GtkCssValue *shadow) needs_blur (const GtkCssValue *shadow)
{ {
double radius = _gtk_css_number_value_get (shadow->radius, 0); double radius = _gtk_css_number_value_get (shadow->radius, 0);
if (radius == 0.0)
/* The code doesn't actually do any blurring for radius 1, as it
* ends up with box filter size 1 */
if (radius <= 1.0)
return FALSE; return FALSE;
return TRUE; return TRUE;
@@ -307,12 +310,15 @@ static const cairo_user_data_key_t original_cr_key;
static cairo_t * static cairo_t *
gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow, gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
cairo_t *cr) cairo_t *cr,
GtkBlurFlags blur_flags)
{ {
cairo_rectangle_int_t clip_rect; cairo_rectangle_int_t clip_rect;
cairo_surface_t *surface; cairo_surface_t *surface;
cairo_t *blur_cr; cairo_t *blur_cr;
gdouble radius, clip_radius; gdouble radius, clip_radius;
gboolean blur_x = (blur_flags & GTK_BLUR_X) != 0;
gboolean blur_y = (blur_flags & GTK_BLUR_Y) != 0;
if (!needs_blur (shadow)) if (!needs_blur (shadow))
return cr; return cr;
@@ -322,12 +328,22 @@ gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
radius = _gtk_css_number_value_get (shadow->radius, 0); radius = _gtk_css_number_value_get (shadow->radius, 0);
clip_radius = _gtk_cairo_blur_compute_pixels (radius); clip_radius = _gtk_cairo_blur_compute_pixels (radius);
if (blur_flags & GTK_BLUR_REPEAT)
{
if (!blur_x)
clip_rect.width = 1;
if (!blur_y)
clip_rect.height = 1;
}
/* Create a larger surface to center the blur. */ /* Create a larger surface to center the blur. */
surface = cairo_surface_create_similar_image (cairo_get_target (cr), surface = cairo_surface_create_similar_image (cairo_get_target (cr),
CAIRO_FORMAT_A8, CAIRO_FORMAT_A8,
clip_rect.width + 2 * clip_radius, clip_rect.width + (blur_x ? 2 * clip_radius : 0),
clip_rect.height + 2 * clip_radius); clip_rect.height + (blur_y ? 2 * clip_radius : 0));
cairo_surface_set_device_offset (surface, clip_radius - clip_rect.x, clip_radius - clip_rect.y); cairo_surface_set_device_offset (surface,
(blur_x ? clip_radius : 0) - clip_rect.x,
(blur_y ? clip_radius : 0) - clip_rect.y);
blur_cr = cairo_create (surface); blur_cr = cairo_create (surface);
cairo_set_user_data (blur_cr, &original_cr_key, cairo_reference (cr), (cairo_destroy_func_t) cairo_destroy); cairo_set_user_data (blur_cr, &original_cr_key, cairo_reference (cr), (cairo_destroy_func_t) cairo_destroy);
@@ -342,9 +358,24 @@ gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
return blur_cr; return blur_cr;
} }
void
mask_surface_repeat (cairo_t *cr,
cairo_surface_t *surface)
{
cairo_pattern_t *pattern;
pattern = cairo_pattern_create_for_surface (surface);
cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
cairo_mask (cr, pattern);
cairo_pattern_destroy (pattern);
}
static cairo_t * static cairo_t *
gtk_css_shadow_value_finish_drawing (const GtkCssValue *shadow, gtk_css_shadow_value_finish_drawing (const GtkCssValue *shadow,
cairo_t *cr) cairo_t *cr,
GtkBlurFlags blur_flags)
{ {
gdouble radius; gdouble radius;
cairo_t *original_cr; cairo_t *original_cr;
@@ -358,12 +389,16 @@ gtk_css_shadow_value_finish_drawing (const GtkCssValue *shadow,
/* Blur the surface. */ /* Blur the surface. */
surface = cairo_get_target (cr); surface = cairo_get_target (cr);
radius = _gtk_css_number_value_get (shadow->radius, 0); radius = _gtk_css_number_value_get (shadow->radius, 0);
_gtk_cairo_blur_surface (surface, radius); _gtk_cairo_blur_surface (surface, radius, blur_flags);
gdk_cairo_set_source_rgba (original_cr, _gtk_css_rgba_value_get_rgba (shadow->color)); gdk_cairo_set_source_rgba (original_cr, _gtk_css_rgba_value_get_rgba (shadow->color));
cairo_mask_surface (original_cr, surface, 0, 0); if (blur_flags & GTK_BLUR_REPEAT)
mask_surface_repeat (original_cr, surface);
else
cairo_mask_surface (original_cr, surface, 0, 0);
cairo_destroy (cr); cairo_destroy (cr);
cairo_surface_destroy (surface); cairo_surface_destroy (surface);
return original_cr; return original_cr;
@@ -425,7 +460,7 @@ make_blurred_pango_surface (cairo_t *existing_cr,
cr = cairo_create (surface); cr = cairo_create (surface);
cairo_move_to (cr, 0, 0); cairo_move_to (cr, 0, 0);
_gtk_pango_fill_layout (cr, layout); _gtk_pango_fill_layout (cr, layout);
_gtk_cairo_blur_surface (surface, radius * x_scale); _gtk_cairo_blur_surface (surface, radius * x_scale, GTK_BLUR_X | GTK_BLUR_Y);
cairo_destroy (cr); cairo_destroy (cr);
@@ -512,14 +547,14 @@ _gtk_css_shadow_value_paint_icon (const GtkCssValue *shadow,
pattern = cairo_pattern_reference (cairo_get_source (cr)); pattern = cairo_pattern_reference (cairo_get_source (cr));
gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color)); gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color));
cr = gtk_css_shadow_value_start_drawing (shadow, cr); cr = gtk_css_shadow_value_start_drawing (shadow, cr, GTK_BLUR_X | GTK_BLUR_Y);
cairo_translate (cr, cairo_translate (cr,
_gtk_css_number_value_get (shadow->hoffset, 0), _gtk_css_number_value_get (shadow->hoffset, 0),
_gtk_css_number_value_get (shadow->voffset, 0)); _gtk_css_number_value_get (shadow->voffset, 0));
cairo_mask (cr, pattern); cairo_mask (cr, pattern);
cr = gtk_css_shadow_value_finish_drawing (shadow, cr); cr = gtk_css_shadow_value_finish_drawing (shadow, cr, GTK_BLUR_X | GTK_BLUR_Y);
cairo_restore (cr); cairo_restore (cr);
cairo_pattern_destroy (pattern); cairo_pattern_destroy (pattern);
@@ -567,16 +602,18 @@ draw_shadow (const GtkCssValue *shadow,
cairo_t *cr, cairo_t *cr,
GtkRoundedBox *box, GtkRoundedBox *box,
GtkRoundedBox *clip_box, GtkRoundedBox *clip_box,
gboolean blur) GtkBlurFlags blur_flags)
{ {
cairo_t *shadow_cr; cairo_t *shadow_cr;
gboolean do_blur;
if (has_empty_clip (cr)) if (has_empty_clip (cr))
return; return;
gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color)); gdk_cairo_set_source_rgba (cr, _gtk_css_rgba_value_get_rgba (shadow->color));
if (blur) do_blur = (blur_flags & (GTK_BLUR_X | GTK_BLUR_Y)) != 0;
shadow_cr = gtk_css_shadow_value_start_drawing (shadow, cr); if (do_blur)
shadow_cr = gtk_css_shadow_value_start_drawing (shadow, cr, blur_flags);
else else
shadow_cr = cr; shadow_cr = cr;
@@ -587,8 +624,8 @@ draw_shadow (const GtkCssValue *shadow,
cairo_fill (shadow_cr); cairo_fill (shadow_cr);
if (blur) if (do_blur)
gtk_css_shadow_value_finish_drawing (shadow, shadow_cr); gtk_css_shadow_value_finish_drawing (shadow, shadow_cr, blur_flags);
} }
void void
@@ -644,7 +681,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
_gtk_rounded_box_shrink (&clip_box, -clip_radius, -clip_radius, -clip_radius, -clip_radius); _gtk_rounded_box_shrink (&clip_box, -clip_radius, -clip_radius, -clip_radius, -clip_radius);
if (!needs_blur (shadow)) if (!needs_blur (shadow))
draw_shadow (shadow, cr, &box, &clip_box, FALSE); draw_shadow (shadow, cr, &box, &clip_box, GTK_BLUR_NONE);
else else
{ {
int i, x1, x2, y1, y2; int i, x1, x2, y1, y2;
@@ -714,7 +751,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
/* Also clip with remaining to ensure we never draw any area twice */ /* Also clip with remaining to ensure we never draw any area twice */
gdk_cairo_region (cr, remaining); gdk_cairo_region (cr, remaining);
cairo_clip (cr); cairo_clip (cr);
draw_shadow (shadow, cr, &box, &clip_box, TRUE); draw_shadow (shadow, cr, &box, &clip_box, GTK_BLUR_X | GTK_BLUR_Y);
cairo_restore (cr); cairo_restore (cr);
/* We drew the region, remove it from remaining */ /* We drew the region, remove it from remaining */
@@ -728,8 +765,11 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
/* Then the sides */ /* Then the sides */
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
{ {
GtkBlurFlags blur_flags = GTK_BLUR_REPEAT;
if (i == GTK_CSS_TOP || i == GTK_CSS_BOTTOM) if (i == GTK_CSS_TOP || i == GTK_CSS_BOTTOM)
{ {
blur_flags |= GTK_BLUR_Y;
x1 = floor (box.box.x - clip_radius); x1 = floor (box.box.x - clip_radius);
x2 = ceil (box.box.x + box.box.width + clip_radius); x2 = ceil (box.box.x + box.box.width + clip_radius);
} }
@@ -746,6 +786,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
if (i == GTK_CSS_LEFT || i == GTK_CSS_RIGHT) if (i == GTK_CSS_LEFT || i == GTK_CSS_RIGHT)
{ {
blur_flags |= GTK_BLUR_X;
y1 = floor (box.box.y - clip_radius); y1 = floor (box.box.y - clip_radius);
y2 = ceil (box.box.y + box.box.height + clip_radius); y2 = ceil (box.box.y + box.box.height + clip_radius);
} }
@@ -766,7 +807,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
/* Also clip with remaining to ensure we never draw any area twice */ /* Also clip with remaining to ensure we never draw any area twice */
gdk_cairo_region (cr, remaining); gdk_cairo_region (cr, remaining);
cairo_clip (cr); cairo_clip (cr);
draw_shadow (shadow, cr, &box, &clip_box, TRUE); draw_shadow (shadow, cr, &box, &clip_box, blur_flags);
cairo_restore (cr); cairo_restore (cr);
/* We drew the region, remove it from remaining */ /* We drew the region, remove it from remaining */
@@ -782,7 +823,7 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue *shadow,
cairo_save (cr); cairo_save (cr);
gdk_cairo_region (cr, remaining); gdk_cairo_region (cr, remaining);
cairo_clip (cr); cairo_clip (cr);
draw_shadow (shadow, cr, &box, &clip_box, FALSE); draw_shadow (shadow, cr, &box, &clip_box, GTK_BLUR_NONE);
cairo_restore (cr); cairo_restore (cr);
cairo_region_destroy (remaining); cairo_region_destroy (remaining);
+3
View File
@@ -54,6 +54,9 @@ gtk_css_widget_node_style_changed (GtkCssNode *cssnode,
node = GTK_CSS_WIDGET_NODE (cssnode); node = GTK_CSS_WIDGET_NODE (cssnode);
if (node->widget)
gtk_widget_clear_path (node->widget);
GTK_CSS_NODE_CLASS (gtk_css_widget_node_parent_class)->style_changed (cssnode, old_style, new_style); GTK_CSS_NODE_CLASS (gtk_css_widget_node_parent_class)->style_changed (cssnode, old_style, new_style);
diff = gtk_css_style_get_difference (new_style, old_style); diff = gtk_css_style_get_difference (new_style, old_style);
+26 -10
View File
@@ -228,6 +228,8 @@ static gboolean gtk_drag_dest_drop (GtkWidget *widget,
gint x, gint x,
gint y, gint y,
guint time); guint time);
static void gtk_drag_dest_set_widget (GtkDragDestInfo *info,
GtkWidget *widget);
static GtkDragDestInfo * gtk_drag_get_dest_info (GdkDragContext *context, static GtkDragDestInfo * gtk_drag_get_dest_info (GdkDragContext *context,
gboolean create); gboolean create);
@@ -1638,7 +1640,7 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel,
if (info->widget) if (info->widget)
{ {
gtk_drag_dest_leave (info->widget, context, event->dnd.time); gtk_drag_dest_leave (info->widget, context, event->dnd.time);
info->widget = NULL; gtk_drag_dest_set_widget (info, NULL);
} }
break; break;
@@ -1658,7 +1660,7 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel,
if (info->widget) if (info->widget)
{ {
gtk_drag_dest_leave (info->widget, context, event->dnd.time); gtk_drag_dest_leave (info->widget, context, event->dnd.time);
info->widget = NULL; gtk_drag_dest_set_widget (info, NULL);
} }
} }
@@ -1690,7 +1692,7 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel,
if (info->widget && !found) if (info->widget && !found)
{ {
gtk_drag_dest_leave (info->widget, context, event->dnd.time); gtk_drag_dest_leave (info->widget, context, event->dnd.time);
info->widget = NULL; gtk_drag_dest_set_widget (info, NULL);
} }
/* Send a reply. /* Send a reply.
@@ -1918,15 +1920,12 @@ gtk_drag_find_widget (GtkWidget *widget,
found = callback (widget, context, x, y, time); found = callback (widget, context, x, y, time);
/* If so, send a "drag-leave" to the last widget */ /* If so, send a "drag-leave" to the last widget */
if (found) if (found && info->widget != widget)
{ {
if (info->widget && info->widget != widget) if (info->widget)
{ gtk_drag_dest_leave (info->widget, context, time);
gtk_drag_dest_leave (info->widget, context, time);
}
info->widget = widget; gtk_drag_dest_set_widget (info, widget);
g_object_add_weak_pointer (G_OBJECT (widget), (gpointer *) &info->widget);
} }
} }
@@ -2008,9 +2007,26 @@ gtk_drag_proxy_begin (GtkWidget *widget,
dest_info->proxy_source = source_info; dest_info->proxy_source = source_info;
} }
static void
gtk_drag_dest_set_widget (GtkDragDestInfo *info,
GtkWidget *widget)
{
if (info->widget)
g_object_remove_weak_pointer (G_OBJECT (info->widget), (gpointer *) &info->widget);
info->widget = widget;
if (info->widget)
g_object_add_weak_pointer (G_OBJECT (info->widget), (gpointer *) &info->widget);
}
static void static void
gtk_drag_dest_info_destroy (gpointer data) gtk_drag_dest_info_destroy (gpointer data)
{ {
GtkDragDestInfo *info = (GtkDragDestInfo *)data;
gtk_drag_dest_set_widget (info, NULL);
g_slice_free (GtkDragDestInfo, data); g_slice_free (GtkDragDestInfo, data);
} }
-2
View File
@@ -3195,7 +3195,6 @@ realize_icon_info (GtkWidget *widget,
GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON1_MOTION_MASK | GDK_BUTTON1_MOTION_MASK |
GDK_BUTTON3_MOTION_MASK | GDK_BUTTON3_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_MASK |
GDK_ENTER_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK); GDK_LEAVE_NOTIFY_MASK);
@@ -3314,7 +3313,6 @@ gtk_entry_realize (GtkWidget *widget)
GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON1_MOTION_MASK | GDK_BUTTON1_MOTION_MASK |
GDK_BUTTON3_MOTION_MASK | GDK_BUTTON3_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_MASK |
GDK_ENTER_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK); GDK_LEAVE_NOTIFY_MASK);
+4 -3
View File
@@ -1033,11 +1033,12 @@ gtk_file_chooser_button_destroy (GtkWidget *widget)
priv->dialog = NULL; priv->dialog = NULL;
} }
if (priv->model && gtk_tree_model_get_iter_first (priv->model, &iter)) do if (priv->model && gtk_tree_model_get_iter_first (priv->model, &iter))
{ {
model_free_row_data (button, &iter); do
model_free_row_data (button, &iter);
while (gtk_tree_model_iter_next (priv->model, &iter));
} }
while (gtk_tree_model_iter_next (priv->model, &iter));
if (priv->dnd_select_folder_cancellable) if (priv->dnd_select_folder_cancellable)
{ {
+1 -1
View File
@@ -876,7 +876,7 @@ _gtk_icon_helper_get_size (GtkIconHelper *self,
width = gdk_pixbuf_animation_get_width (self->priv->animation); width = gdk_pixbuf_animation_get_width (self->priv->animation);
height = gdk_pixbuf_animation_get_height (self->priv->animation); height = gdk_pixbuf_animation_get_height (self->priv->animation);
} }
else if (self->priv->icon_size != -1) else if (self->priv->icon_size != GTK_ICON_SIZE_INVALID)
{ {
ensure_icon_size (self, context, &width, &height); ensure_icon_size (self, context, &width, &height);
} }
+90 -17
View File
@@ -155,6 +155,9 @@ static void gtk_image_size_allocate (GtkWidget *widget,
static void gtk_image_unmap (GtkWidget *widget); static void gtk_image_unmap (GtkWidget *widget);
static void gtk_image_realize (GtkWidget *widget); static void gtk_image_realize (GtkWidget *widget);
static void gtk_image_unrealize (GtkWidget *widget); static void gtk_image_unrealize (GtkWidget *widget);
static void gtk_image_get_preferred_size (GtkImage *image,
gint *width_out,
gint *height_out);
static void gtk_image_get_preferred_width (GtkWidget *widget, static void gtk_image_get_preferred_width (GtkWidget *widget,
gint *minimum, gint *minimum,
gint *natural); gint *natural);
@@ -934,8 +937,8 @@ gtk_image_set_from_file (GtkImage *image,
priv = image->priv; priv = image->priv;
g_object_freeze_notify (G_OBJECT (image)); g_object_freeze_notify (G_OBJECT (image));
gtk_image_clear (image); gtk_image_reset (image);
if (filename == NULL) if (filename == NULL)
{ {
@@ -948,9 +951,7 @@ gtk_image_set_from_file (GtkImage *image,
if (anim == NULL) if (anim == NULL)
{ {
gtk_image_set_from_icon_name (image, gtk_image_set_from_icon_name (image, "image-missing", DEFAULT_ICON_SIZE);
"image-missing",
DEFAULT_ICON_SIZE);
g_object_thaw_notify (G_OBJECT (image)); g_object_thaw_notify (G_OBJECT (image));
return; return;
} }
@@ -971,7 +972,21 @@ gtk_image_set_from_file (GtkImage *image,
g_object_unref (anim); g_object_unref (anim);
priv->filename = g_strdup (filename); priv->filename = g_strdup (filename);
if (gtk_widget_get_visible (GTK_WIDGET (image)))
{
gint width, height;
gtk_image_get_preferred_size (image, &width, &height);
if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
gtk_widget_queue_resize (GTK_WIDGET (image));
else
gtk_widget_queue_draw (GTK_WIDGET (image));
}
g_object_notify (G_OBJECT (image), "file");
g_object_thaw_notify (G_OBJECT (image)); g_object_thaw_notify (G_OBJECT (image));
} }
@@ -1008,9 +1023,7 @@ gtk_image_set_from_resource (GtkImage *image,
if (animation == NULL) if (animation == NULL)
{ {
gtk_image_set_from_icon_name (image, gtk_image_set_from_icon_name (image, "image-missing", DEFAULT_ICON_SIZE);
"image-missing",
DEFAULT_ICON_SIZE);
g_object_thaw_notify (G_OBJECT (image)); g_object_thaw_notify (G_OBJECT (image));
return; return;
} }
@@ -1046,18 +1059,29 @@ gtk_image_set_from_pixbuf (GtkImage *image,
GtkImagePrivate *priv; GtkImagePrivate *priv;
g_return_if_fail (GTK_IS_IMAGE (image)); g_return_if_fail (GTK_IS_IMAGE (image));
g_return_if_fail (pixbuf == NULL || g_return_if_fail (pixbuf == NULL || GDK_IS_PIXBUF (pixbuf));
GDK_IS_PIXBUF (pixbuf));
priv = image->priv; priv = image->priv;
g_object_freeze_notify (G_OBJECT (image)); g_object_freeze_notify (G_OBJECT (image));
gtk_image_clear (image); gtk_image_reset (image);
if (pixbuf != NULL) if (pixbuf != NULL)
_gtk_icon_helper_set_pixbuf (priv->icon_helper, pixbuf); _gtk_icon_helper_set_pixbuf (priv->icon_helper, pixbuf);
if (gtk_widget_get_visible (GTK_WIDGET (image)))
{
gint width, height;
gtk_image_get_preferred_size (image, &width, &height);
if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
gtk_widget_queue_resize (GTK_WIDGET (image));
else
gtk_widget_queue_draw (GTK_WIDGET (image));
}
g_object_notify (G_OBJECT (image), "pixbuf"); g_object_notify (G_OBJECT (image), "pixbuf");
g_object_thaw_notify (G_OBJECT (image)); g_object_thaw_notify (G_OBJECT (image));
@@ -1171,7 +1195,7 @@ gtk_image_set_from_animation (GtkImage *image,
if (animation) if (animation)
g_object_ref (animation); g_object_ref (animation);
gtk_image_clear (image); gtk_image_reset (image);
if (animation != NULL) if (animation != NULL)
{ {
@@ -1179,6 +1203,18 @@ gtk_image_set_from_animation (GtkImage *image,
g_object_unref (animation); g_object_unref (animation);
} }
if (gtk_widget_get_visible (GTK_WIDGET (image)))
{
gint width, height;
gtk_image_get_preferred_size (image, &width, &height);
if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
gtk_widget_queue_resize (GTK_WIDGET (image));
else
gtk_widget_queue_draw (GTK_WIDGET (image));
}
g_object_notify (G_OBJECT (image), "pixbuf-animation"); g_object_notify (G_OBJECT (image), "pixbuf-animation");
g_object_thaw_notify (G_OBJECT (image)); g_object_thaw_notify (G_OBJECT (image));
@@ -1209,7 +1245,8 @@ gtk_image_set_from_icon_name (GtkImage *image,
g_object_freeze_notify (G_OBJECT (image)); g_object_freeze_notify (G_OBJECT (image));
new_name = g_strdup (icon_name); new_name = g_strdup (icon_name);
gtk_image_clear (image);
gtk_image_reset (image);
if (new_name) if (new_name)
{ {
@@ -1217,6 +1254,18 @@ gtk_image_set_from_icon_name (GtkImage *image,
g_free (new_name); g_free (new_name);
} }
if (gtk_widget_get_visible (GTK_WIDGET (image)))
{
gint width, height;
gtk_image_get_preferred_size (image, &width, &height);
if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
gtk_widget_queue_resize (GTK_WIDGET (image));
else
gtk_widget_queue_draw (GTK_WIDGET (image));
}
g_object_notify (G_OBJECT (image), "icon-name"); g_object_notify (G_OBJECT (image), "icon-name");
g_object_notify (G_OBJECT (image), "icon-size"); g_object_notify (G_OBJECT (image), "icon-size");
@@ -1249,7 +1298,7 @@ gtk_image_set_from_gicon (GtkImage *image,
if (icon) if (icon)
g_object_ref (icon); g_object_ref (icon);
gtk_image_clear (image); gtk_image_reset (image);
if (icon) if (icon)
{ {
@@ -1257,6 +1306,18 @@ gtk_image_set_from_gicon (GtkImage *image,
g_object_unref (icon); g_object_unref (icon);
} }
if (gtk_widget_get_visible (GTK_WIDGET (image)))
{
gint width, height;
gtk_image_get_preferred_size (image, &width, &height);
if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
gtk_widget_queue_resize (GTK_WIDGET (image));
else
gtk_widget_queue_draw (GTK_WIDGET (image));
}
g_object_notify (G_OBJECT (image), "gicon"); g_object_notify (G_OBJECT (image), "gicon");
g_object_notify (G_OBJECT (image), "icon-size"); g_object_notify (G_OBJECT (image), "icon-size");
@@ -1287,7 +1348,7 @@ gtk_image_set_from_surface (GtkImage *image,
if (surface) if (surface)
cairo_surface_reference (surface); cairo_surface_reference (surface);
gtk_image_clear (image); gtk_image_reset (image);
if (surface) if (surface)
{ {
@@ -1295,6 +1356,18 @@ gtk_image_set_from_surface (GtkImage *image,
cairo_surface_destroy (surface); cairo_surface_destroy (surface);
} }
if (gtk_widget_get_visible (GTK_WIDGET (image)))
{
gint width, height;
gtk_image_get_preferred_size (image, &width, &height);
if (width != gtk_widget_get_allocated_width (GTK_WIDGET (image)) ||
height != gtk_widget_get_allocated_height (GTK_WIDGET (image)))
gtk_widget_queue_resize (GTK_WIDGET (image));
else
gtk_widget_queue_draw (GTK_WIDGET (image));
}
g_object_notify (G_OBJECT (image), "surface"); g_object_notify (G_OBJECT (image), "surface");
g_object_thaw_notify (G_OBJECT (image)); g_object_thaw_notify (G_OBJECT (image));
+1 -2
View File
@@ -5357,8 +5357,7 @@ gtk_label_create_window (GtkLabel *label)
GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_LEAVE_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
GDK_BUTTON_MOTION_MASK | GDK_BUTTON_MOTION_MASK |
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_MASK;
GDK_POINTER_MOTION_HINT_MASK;
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_NOREDIR; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_NOREDIR;
if (gtk_widget_is_sensitive (widget) && priv->select_info && priv->select_info->selectable) if (gtk_widget_is_sensitive (widget) && priv->select_info && priv->select_info->selectable)
{ {
+1 -1
View File
@@ -890,7 +890,7 @@ set_align_widget_pointer (GtkMenuButton *menu_button,
priv->align_widget = align_widget; priv->align_widget = align_widget;
if (align_widget) if (priv->align_widget)
g_object_add_weak_pointer (G_OBJECT (priv->align_widget), (gpointer *) &priv->align_widget); g_object_add_weak_pointer (G_OBJECT (priv->align_widget), (gpointer *) &priv->align_widget);
} }
+5 -8
View File
@@ -1436,13 +1436,10 @@ create_show_processes_dialog (GtkMountOperation *op,
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
if (secondary != NULL) if (secondary != NULL)
{ s = g_strdup_printf ("<big><b>%s</b></big>\n\n%s", primary, secondary);
s = g_strdup_printf ("<big><b>%s</b></big>\n\n%s", primary, secondary);
}
else else
{ s = g_strdup_printf ("%s", primary);
s = g_strdup_printf ("%s", primary);
}
g_free (primary); g_free (primary);
label = gtk_label_new (NULL); label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), s); gtk_label_set_markup (GTK_LABEL (label), s);
@@ -1518,8 +1515,8 @@ create_show_processes_dialog (GtkMountOperation *op,
priv->process_list_store = list_store; priv->process_list_store = list_store;
priv->process_tree_view = tree_view; priv->process_tree_view = tree_view;
/* set pointers to NULL when dialog goes away */ /* set pointers to NULL when dialog goes away */
g_object_add_weak_pointer (G_OBJECT (list_store), (gpointer *) &priv->process_list_store); g_object_add_weak_pointer (G_OBJECT (priv->process_list_store), (gpointer *) &priv->process_list_store);
g_object_add_weak_pointer (G_OBJECT (tree_view), (gpointer *) &priv->process_tree_view); g_object_add_weak_pointer (G_OBJECT (priv->process_tree_view), (gpointer *) &priv->process_tree_view);
g_object_unref (list_store); g_object_unref (list_store);
g_object_ref (op); g_object_ref (op);
+3 -2
View File
@@ -24,6 +24,7 @@
#if defined(HAVE__NL_PAPER_HEIGHT) && defined(HAVE__NL_PAPER_WIDTH) #if defined(HAVE__NL_PAPER_HEIGHT) && defined(HAVE__NL_PAPER_WIDTH)
#include <langinfo.h> #include <langinfo.h>
#endif #endif
#include <math.h>
#include "gtkpapersize.h" #include "gtkpapersize.h"
#include "gtkprintutils.h" #include "gtkprintutils.h"
@@ -442,8 +443,8 @@ gtk_paper_size_new_from_ipp (const gchar *ipp_name,
x_dimension = _gtk_print_convert_from_mm (standard_names_offsets[i].width, GTK_UNIT_POINTS); x_dimension = _gtk_print_convert_from_mm (standard_names_offsets[i].width, GTK_UNIT_POINTS);
y_dimension = _gtk_print_convert_from_mm (standard_names_offsets[i].height, GTK_UNIT_POINTS); y_dimension = _gtk_print_convert_from_mm (standard_names_offsets[i].height, GTK_UNIT_POINTS);
if (abs (x_dimension - width) <= PAPER_SIZE_TOLERANCE && if (fabs (x_dimension - width) <= PAPER_SIZE_TOLERANCE &&
abs (y_dimension - height) <= PAPER_SIZE_TOLERANCE) fabs (y_dimension - height) <= PAPER_SIZE_TOLERANCE)
{ {
display_name = g_strdup (g_dpgettext2 (GETTEXT_PACKAGE, display_name = g_strdup (g_dpgettext2 (GETTEXT_PACKAGE,
"paper size", "paper size",
+1 -1
View File
@@ -1785,7 +1785,7 @@ _gtk_print_operation_set_status (GtkPrintOperation *op,
NC_("print operation status", "Finished with error") NC_("print operation status", "Finished with error")
}; };
if (status < 0 || status > GTK_PRINT_STATUS_FINISHED_ABORTED) if (status > GTK_PRINT_STATUS_FINISHED_ABORTED)
status = GTK_PRINT_STATUS_FINISHED_ABORTED; status = GTK_PRINT_STATUS_FINISHED_ABORTED;
if (string == NULL) if (string == NULL)
+1 -1
View File
@@ -207,7 +207,7 @@ static GObject *gtk_print_unix_dialog_buildable_get_internal_child (GtkBuildabl
GtkBuilder *builder, GtkBuilder *builder,
const gchar *childname); const gchar *childname);
static const gchar const common_paper_sizes[][16] = { static const gchar common_paper_sizes[][16] = {
"na_letter", "na_letter",
"na_legal", "na_legal",
"iso_a4", "iso_a4",
+66 -8
View File
@@ -208,6 +208,8 @@ gtk_radio_menu_item_set_group (GtkRadioMenuItem *radio_menu_item,
tmp_item->priv->group = priv->group; tmp_item->priv->group = priv->group;
} }
_gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (radio_menu_item), FALSE);
} }
else else
{ {
@@ -282,7 +284,7 @@ gtk_radio_menu_item_new_with_mnemonic (GSList *group,
/** /**
* gtk_radio_menu_item_new_from_widget: (constructor) * gtk_radio_menu_item_new_from_widget: (constructor)
* @group: An existing #GtkRadioMenuItem * @group: (allow-none): An existing #GtkRadioMenuItem
* *
* Creates a new #GtkRadioMenuItem adding it to the same group as @group. * Creates a new #GtkRadioMenuItem adding it to the same group as @group.
* *
@@ -295,7 +297,7 @@ gtk_radio_menu_item_new_from_widget (GtkRadioMenuItem *group)
{ {
GSList *list = NULL; GSList *list = NULL;
g_return_val_if_fail (GTK_IS_RADIO_MENU_ITEM (group), NULL); g_return_val_if_fail (group == NULL || GTK_IS_RADIO_MENU_ITEM (group), NULL);
if (group) if (group)
list = gtk_radio_menu_item_get_group (group); list = gtk_radio_menu_item_get_group (group);
@@ -305,8 +307,8 @@ gtk_radio_menu_item_new_from_widget (GtkRadioMenuItem *group)
/** /**
* gtk_radio_menu_item_new_with_mnemonic_from_widget: (constructor) * gtk_radio_menu_item_new_with_mnemonic_from_widget: (constructor)
* @group: An existing #GtkRadioMenuItem * @group: (allow-none): An existing #GtkRadioMenuItem
* @label: the text of the button, with an underscore in front of the * @label: (allow-none): the text of the button, with an underscore in front of the
* mnemonic character * mnemonic character
* *
* Creates a new GtkRadioMenuItem containing a label. The label will be * Creates a new GtkRadioMenuItem containing a label. The label will be
@@ -325,7 +327,7 @@ gtk_radio_menu_item_new_with_mnemonic_from_widget (GtkRadioMenuItem *group,
{ {
GSList *list = NULL; GSList *list = NULL;
g_return_val_if_fail (GTK_IS_RADIO_MENU_ITEM (group), NULL); g_return_val_if_fail (group == NULL || GTK_IS_RADIO_MENU_ITEM (group), NULL);
if (group) if (group)
list = gtk_radio_menu_item_get_group (group); list = gtk_radio_menu_item_get_group (group);
@@ -335,8 +337,8 @@ gtk_radio_menu_item_new_with_mnemonic_from_widget (GtkRadioMenuItem *group,
/** /**
* gtk_radio_menu_item_new_with_label_from_widget: (constructor) * gtk_radio_menu_item_new_with_label_from_widget: (constructor)
* @group: an existing #GtkRadioMenuItem * @group: (allow-none): an existing #GtkRadioMenuItem
* @label: the text for the label * @label: (allow-none): the text for the label
* *
* Creates a new GtkRadioMenuItem whose child is a simple GtkLabel. * Creates a new GtkRadioMenuItem whose child is a simple GtkLabel.
* The new #GtkRadioMenuItem is added to the same group as @group. * The new #GtkRadioMenuItem is added to the same group as @group.
@@ -351,7 +353,7 @@ gtk_radio_menu_item_new_with_label_from_widget (GtkRadioMenuItem *group,
{ {
GSList *list = NULL; GSList *list = NULL;
g_return_val_if_fail (GTK_IS_RADIO_MENU_ITEM (group), NULL); g_return_val_if_fail (group == NULL || GTK_IS_RADIO_MENU_ITEM (group), NULL);
if (group) if (group)
list = gtk_radio_menu_item_get_group (group); list = gtk_radio_menu_item_get_group (group);
@@ -556,3 +558,59 @@ gtk_radio_menu_item_activate (GtkMenuItem *menu_item)
gtk_widget_queue_draw (GTK_WIDGET (radio_menu_item)); gtk_widget_queue_draw (GTK_WIDGET (radio_menu_item));
} }
/**
* gtk_radio_menu_item_join_group:
* @radio_menu_item: a #GtkRadioMenuItem
* @group_source: (allow-none): a #GtkRadioMenuItem whose group we are
* joining, or %NULL to remove the @radio_menu_item from its current
* group
*
* Joins a #GtkRadioMenuItem object to the group of another #GtkRadioMenuItem
* object.
*
* This function should be used by language bindings to avoid the memory
* manangement of the opaque #GSList of gtk_radio_menu_item_get_group()
* and gtk_radio_menu_item_set_group().
*
* A common way to set up a group of #GtkRadioMenuItem instances is:
*
* |[
* GtkRadioMenuItem *last_item = NULL;
*
* while ( ...more items to add... )
* {
* GtkRadioMenuItem *radio_item;
*
* radio_item = gtk_radio_menu_item_new (...);
*
* gtk_radio_menu_item_join_group (radio_item, last_item);
* last_item = radio_item;
* }
* ]|
*
* Since: 3.18
*/
void
gtk_radio_menu_item_join_group (GtkRadioMenuItem *radio_menu_item,
GtkRadioMenuItem *group_source)
{
g_return_if_fail (GTK_IS_RADIO_MENU_ITEM (radio_menu_item));
g_return_if_fail (group_source == NULL || GTK_IS_RADIO_MENU_ITEM (group_source));
if (group_source != NULL)
{
GSList *group = gtk_radio_menu_item_get_group (group_source);
if (group == NULL)
{
/* if the group source does not have a group, we force one */
gtk_radio_menu_item_set_group (group_source, NULL);
group = gtk_radio_menu_item_get_group (group_source);
}
gtk_radio_menu_item_set_group (radio_menu_item, group);
}
else
gtk_radio_menu_item_set_group (radio_menu_item, NULL);
}
+4
View File
@@ -95,6 +95,10 @@ GDK_AVAILABLE_IN_ALL
void gtk_radio_menu_item_set_group (GtkRadioMenuItem *radio_menu_item, void gtk_radio_menu_item_set_group (GtkRadioMenuItem *radio_menu_item,
GSList *group); GSList *group);
GDK_AVAILABLE_IN_3_18
void gtk_radio_menu_item_join_group (GtkRadioMenuItem *radio_menu_item,
GtkRadioMenuItem *group_source);
G_END_DECLS G_END_DECLS
#endif /* __GTK_RADIO_MENU_ITEM_H__ */ #endif /* __GTK_RADIO_MENU_ITEM_H__ */
+7 -8
View File
@@ -1650,14 +1650,13 @@ gtk_range_realize (GtkWidget *widget)
attributes.height = allocation.height; attributes.height = allocation.height;
attributes.wclass = GDK_INPUT_ONLY; attributes.wclass = GDK_INPUT_ONLY;
attributes.event_mask = gtk_widget_get_events (widget); attributes.event_mask = gtk_widget_get_events (widget);
attributes.event_mask |= (GDK_BUTTON_PRESS_MASK | attributes.event_mask |= GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_SCROLL_MASK | GDK_SCROLL_MASK |
GDK_SMOOTH_SCROLL_MASK | GDK_SMOOTH_SCROLL_MASK |
GDK_ENTER_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_MASK;
GDK_POINTER_MOTION_HINT_MASK);
attributes_mask = GDK_WA_X | GDK_WA_Y; attributes_mask = GDK_WA_X | GDK_WA_Y;
+1 -1
View File
@@ -1189,7 +1189,7 @@ gtk_render_icon_pixbuf (GtkStyleContext *context,
GtkIconSize size) GtkIconSize size)
{ {
g_return_val_if_fail (GTK_IS_STYLE_CONTEXT (context), NULL); g_return_val_if_fail (GTK_IS_STYLE_CONTEXT (context), NULL);
g_return_val_if_fail (size > GTK_ICON_SIZE_INVALID || size == -1, NULL); g_return_val_if_fail (size > GTK_ICON_SIZE_INVALID || size == (GtkIconSize)-1, NULL);
g_return_val_if_fail (source != NULL, NULL); g_return_val_if_fail (source != NULL, NULL);
return gtk_do_render_icon_pixbuf (context, source, size); return gtk_do_render_icon_pixbuf (context, source, size);
+34 -30
View File
@@ -344,18 +344,15 @@ gtk_search_bar_get_property (GObject *object,
} }
} }
static void gtk_search_bar_set_entry (GtkSearchBar *bar,
GtkEntry *entry);
static void static void
gtk_search_bar_dispose (GObject *object) gtk_search_bar_dispose (GObject *object)
{ {
GtkSearchBar *bar = GTK_SEARCH_BAR (object); GtkSearchBar *bar = GTK_SEARCH_BAR (object);
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
if (priv->entry) gtk_search_bar_set_entry (bar, NULL);
{
g_signal_handlers_disconnect_by_func (priv->entry, entry_key_pressed_event_cb, bar);
g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
priv->entry = NULL;
}
G_OBJECT_CLASS (gtk_search_bar_parent_class)->dispose (object); G_OBJECT_CLASS (gtk_search_bar_parent_class)->dispose (object);
} }
@@ -471,6 +468,35 @@ gtk_search_bar_new (void)
return g_object_new (GTK_TYPE_SEARCH_BAR, NULL); return g_object_new (GTK_TYPE_SEARCH_BAR, NULL);
} }
static void
gtk_search_bar_set_entry (GtkSearchBar *bar,
GtkEntry *entry)
{
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
if (priv->entry != NULL)
{
if (GTK_IS_SEARCH_ENTRY (priv->entry))
g_signal_handlers_disconnect_by_func (priv->entry, stop_search_cb, bar);
else
g_signal_handlers_disconnect_by_func (priv->entry, entry_key_pressed_event_cb, bar);
g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
}
priv->entry = GTK_WIDGET (entry);
if (priv->entry != NULL)
{
g_object_add_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
if (GTK_IS_SEARCH_ENTRY (priv->entry))
g_signal_connect (priv->entry, "stop-search",
G_CALLBACK (stop_search_cb), bar);
else
g_signal_connect (priv->entry, "key-press-event",
G_CALLBACK (entry_key_pressed_event_cb), bar);
}
}
/** /**
* gtk_search_bar_connect_entry: * gtk_search_bar_connect_entry:
* @bar: a #GtkSearchBar * @bar: a #GtkSearchBar
@@ -487,32 +513,10 @@ void
gtk_search_bar_connect_entry (GtkSearchBar *bar, gtk_search_bar_connect_entry (GtkSearchBar *bar,
GtkEntry *entry) GtkEntry *entry)
{ {
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
g_return_if_fail (GTK_IS_SEARCH_BAR (bar)); g_return_if_fail (GTK_IS_SEARCH_BAR (bar));
g_return_if_fail (entry == NULL || GTK_IS_ENTRY (entry)); g_return_if_fail (entry == NULL || GTK_IS_ENTRY (entry));
if (priv->entry != NULL) gtk_search_bar_set_entry (bar, entry);
{
if (GTK_IS_SEARCH_ENTRY (priv->entry))
g_signal_handlers_disconnect_by_func (priv->entry, stop_search_cb, bar);
else
g_signal_handlers_disconnect_by_func (priv->entry, entry_key_pressed_event_cb, bar);
g_object_remove_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
priv->entry = NULL;
}
if (entry != NULL)
{
priv->entry = GTK_WIDGET (entry);
g_object_add_weak_pointer (G_OBJECT (priv->entry), (gpointer *) &priv->entry);
if (GTK_IS_SEARCH_ENTRY (priv->entry))
g_signal_connect (priv->entry, "stop-search",
G_CALLBACK (stop_search_cb), bar);
else
g_signal_connect (priv->entry, "key-press-event",
G_CALLBACK (entry_key_pressed_event_cb), bar);
}
} }
/** /**
+1 -18
View File
@@ -23,26 +23,9 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/*
* GtkQueueResizeFlags:
* @GTK_QUEUE_RESIZE_INVALIDATE_ONLY: invalidate all cached sizes
* as we would normally do when a widget is queued for resize,
* but dont actually add the toplevel resize container to the
* resize queue. Useful if we want to change the size of a widget
* see how that would affect the overall layout, then restore
* the old size.
*
* Flags that affect the operation of queueing a widget for resize.
*/
typedef enum
{
GTK_QUEUE_RESIZE_INVALIDATE_ONLY = 1 << 0
} GtkQueueResizeFlags;
GHashTable * _gtk_size_group_get_widget_peers (GtkWidget *for_widget, GHashTable * _gtk_size_group_get_widget_peers (GtkWidget *for_widget,
GtkOrientation orientation); GtkOrientation orientation);
void _gtk_size_group_queue_resize (GtkWidget *widget, void _gtk_size_group_queue_resize (GtkWidget *widget);
GtkQueueResizeFlags flags);
G_END_DECLS G_END_DECLS
+14 -20
View File
@@ -203,8 +203,7 @@ _gtk_size_group_get_widget_peers (GtkWidget *for_widget,
} }
static void static void
real_queue_resize (GtkWidget *widget, real_queue_resize (GtkWidget *widget)
GtkQueueResizeFlags flags)
{ {
GtkWidget *container; GtkWidget *container;
@@ -218,17 +217,13 @@ real_queue_resize (GtkWidget *widget,
if (container) if (container)
{ {
if (flags & GTK_QUEUE_RESIZE_INVALIDATE_ONLY) _gtk_container_queue_resize (GTK_CONTAINER (container));
_gtk_container_resize_invalidate (GTK_CONTAINER (container));
else
_gtk_container_queue_resize (GTK_CONTAINER (container));
} }
} }
static void static void
queue_resize_on_widget (GtkWidget *widget, queue_resize_on_widget (GtkWidget *widget,
gboolean check_siblings, gboolean check_siblings)
GtkQueueResizeFlags flags)
{ {
GtkWidget *parent = widget; GtkWidget *parent = widget;
@@ -241,7 +236,7 @@ queue_resize_on_widget (GtkWidget *widget,
if (widget == parent && !check_siblings) if (widget == parent && !check_siblings)
{ {
real_queue_resize (widget, flags); real_queue_resize (widget);
parent = gtk_widget_get_parent (parent); parent = gtk_widget_get_parent (parent);
continue; continue;
} }
@@ -250,7 +245,7 @@ queue_resize_on_widget (GtkWidget *widget,
if (!widget_groups) if (!widget_groups)
{ {
if (widget == parent) if (widget == parent)
real_queue_resize (widget, flags); real_queue_resize (widget);
parent = gtk_widget_get_parent (parent); parent = gtk_widget_get_parent (parent);
continue; continue;
@@ -264,14 +259,14 @@ queue_resize_on_widget (GtkWidget *widget,
if (current == parent) if (current == parent)
{ {
if (widget == parent) if (widget == parent)
real_queue_resize (parent, flags); real_queue_resize (parent);
} }
else if (current == widget) else if (current == widget)
{ {
g_warning ("A container and its child are part of this SizeGroup"); g_warning ("A container and its child are part of this SizeGroup");
} }
else else
queue_resize_on_widget (current, FALSE, flags); queue_resize_on_widget (current, FALSE);
} }
g_hash_table_destroy (widgets); g_hash_table_destroy (widgets);
@@ -284,14 +279,14 @@ queue_resize_on_widget (GtkWidget *widget,
if (current == parent) if (current == parent)
{ {
if (widget == parent) if (widget == parent)
real_queue_resize (parent, flags); real_queue_resize (parent);
} }
else if (current == widget) else if (current == widget)
{ {
g_warning ("A container and its child are part of this SizeGroup"); g_warning ("A container and its child are part of this SizeGroup");
} }
else else
queue_resize_on_widget (current, FALSE, flags); queue_resize_on_widget (current, FALSE);
} }
g_hash_table_destroy (widgets); g_hash_table_destroy (widgets);
@@ -301,12 +296,12 @@ queue_resize_on_widget (GtkWidget *widget,
} }
static void static void
queue_resize_on_group (GtkSizeGroup *size_group) queue_resize_on_group (GtkSizeGroup *size_group)
{ {
GtkSizeGroupPrivate *priv = size_group->priv; GtkSizeGroupPrivate *priv = size_group->priv;
if (priv->widgets) if (priv->widgets)
queue_resize_on_widget (priv->widgets->data, TRUE, 0); queue_resize_on_widget (priv->widgets->data, TRUE);
} }
static void static void
@@ -636,10 +631,9 @@ gtk_size_group_get_widgets (GtkSizeGroup *size_group)
* Queue a resize on a widget, and on all other widgets grouped with this widget. * Queue a resize on a widget, and on all other widgets grouped with this widget.
**/ **/
void void
_gtk_size_group_queue_resize (GtkWidget *widget, _gtk_size_group_queue_resize (GtkWidget *widget)
GtkQueueResizeFlags flags)
{ {
queue_resize_on_widget (widget, TRUE, flags); queue_resize_on_widget (widget, TRUE);
} }
typedef struct { typedef struct {
+1 -1
View File
@@ -1093,7 +1093,7 @@ gtk_spin_button_realize (GtkWidget *widget)
attributes.event_mask = gtk_widget_get_events (widget); attributes.event_mask = gtk_widget_get_events (widget);
attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK
| GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK
| GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK; | GDK_POINTER_MOTION_MASK;
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
-1
View File
@@ -487,7 +487,6 @@ gtk_switch_realize (GtkWidget *widget)
attributes.event_mask |= (GDK_BUTTON_PRESS_MASK | attributes.event_mask |= (GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON1_MOTION_MASK | GDK_BUTTON1_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_MASK |
GDK_ENTER_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK |
GDK_LEAVE_NOTIFY_MASK); GDK_LEAVE_NOTIFY_MASK);
+2 -2
View File
@@ -555,8 +555,8 @@ gtk_text_tag_class_init (GtkTextTagClass *klass)
g_object_class_install_property (object_class, g_object_class_install_property (object_class,
PROP_STRIKETHROUGH_RGBA, PROP_STRIKETHROUGH_RGBA,
g_param_spec_boxed ("strikethrough-rgba", g_param_spec_boxed ("strikethrough-rgba",
P_("Strike-through RGBA"), P_("Strikethrough RGBA"),
P_("Color of strike-through for this text"), P_("Color of strikethrough for this text"),
GDK_TYPE_RGBA, GDK_TYPE_RGBA,
GTK_PARAM_READWRITE)); GTK_PARAM_READWRITE));
+10 -11
View File
@@ -5992,7 +5992,7 @@ gtk_text_view_move_cursor (GtkTextView *text_view,
gtk_text_view_move_viewport (text_view, scroll_step, count); gtk_text_view_move_viewport (text_view, scroll_step, count);
if ((old_xpos == gtk_adjustment_get_target_value (priv->hadjustment) && if ((old_xpos == gtk_adjustment_get_target_value (priv->hadjustment) &&
old_ypos == gtk_adjustment_get_target_value (priv->vadjustment)) && old_ypos == gtk_adjustment_get_target_value (priv->vadjustment)) &&
leave_direction != -1 && leave_direction != (GtkDirectionType)-1 &&
!gtk_widget_keynav_failed (GTK_WIDGET (text_view), !gtk_widget_keynav_failed (GTK_WIDGET (text_view),
leave_direction)) leave_direction))
{ {
@@ -6165,7 +6165,7 @@ gtk_text_view_move_cursor (GtkTextView *text_view,
if (step == GTK_MOVEMENT_DISPLAY_LINES) if (step == GTK_MOVEMENT_DISPLAY_LINES)
gtk_text_view_set_virtual_cursor_pos (text_view, cursor_x_pos, -1); gtk_text_view_set_virtual_cursor_pos (text_view, cursor_x_pos, -1);
} }
else if (leave_direction != -1) else if (leave_direction != (GtkDirectionType)-1)
{ {
if (!gtk_widget_keynav_failed (GTK_WIDGET (text_view), if (!gtk_widget_keynav_failed (GTK_WIDGET (text_view),
leave_direction)) leave_direction))
@@ -9421,15 +9421,14 @@ text_window_realize (GtkTextWindow *win,
attributes.y = 0; attributes.y = 0;
attributes.width = win->allocation.width; attributes.width = win->allocation.width;
attributes.height = win->allocation.height; attributes.height = win->allocation.height;
attributes.event_mask = (GDK_EXPOSURE_MASK | attributes.event_mask = gtk_widget_get_events (win->widget)
GDK_SCROLL_MASK | | GDK_EXPOSURE_MASK
GDK_SMOOTH_SCROLL_MASK | | GDK_SCROLL_MASK
GDK_KEY_PRESS_MASK | | GDK_SMOOTH_SCROLL_MASK
GDK_BUTTON_PRESS_MASK | | GDK_KEY_PRESS_MASK
GDK_BUTTON_RELEASE_MASK | | GDK_BUTTON_PRESS_MASK
GDK_POINTER_MOTION_MASK | | GDK_BUTTON_RELEASE_MASK
GDK_POINTER_MOTION_HINT_MASK | | GDK_POINTER_MOTION_MASK;
gtk_widget_get_events (win->widget));
win->bin_window = gdk_window_new (win->window, win->bin_window = gdk_window_new (win->window,
&attributes, &attributes,
+1 -1
View File
@@ -904,7 +904,7 @@ gtk_tooltip_set_last_window (GtkTooltip *tooltip,
tooltip->last_window = window; tooltip->last_window = window;
if (window) if (tooltip->last_window)
g_object_add_weak_pointer (G_OBJECT (tooltip->last_window), g_object_add_weak_pointer (G_OBJECT (tooltip->last_window),
(gpointer *) &tooltip->last_window); (gpointer *) &tooltip->last_window);
-1
View File
@@ -1360,7 +1360,6 @@ _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column)
(GDK_BUTTON_PRESS_MASK | (GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
GDK_KEY_PRESS_MASK); GDK_KEY_PRESS_MASK);
attributes_mask = GDK_WA_CURSOR | GDK_WA_X | GDK_WA_Y; attributes_mask = GDK_WA_CURSOR | GDK_WA_X | GDK_WA_Y;
attr.cursor = gdk_cursor_new_for_display attr.cursor = gdk_cursor_new_for_display
+17 -68
View File
@@ -925,8 +925,7 @@ static gboolean setup_template_child (GtkWidgetTemplat
static void gtk_widget_set_usize_internal (GtkWidget *widget, static void gtk_widget_set_usize_internal (GtkWidget *widget,
gint width, gint width,
gint height, gint height);
GtkQueueResizeFlags flags);
static void gtk_widget_add_events_internal (GtkWidget *widget, static void gtk_widget_add_events_internal (GtkWidget *widget,
GdkDevice *device, GdkDevice *device,
@@ -3813,10 +3812,10 @@ gtk_widget_set_property (GObject *object,
gtk_container_add (GTK_CONTAINER (g_value_get_object (value)), widget); gtk_container_add (GTK_CONTAINER (g_value_get_object (value)), widget);
break; break;
case PROP_WIDTH_REQUEST: case PROP_WIDTH_REQUEST:
gtk_widget_set_usize_internal (widget, g_value_get_int (value), -2, 0); gtk_widget_set_usize_internal (widget, g_value_get_int (value), -2);
break; break;
case PROP_HEIGHT_REQUEST: case PROP_HEIGHT_REQUEST:
gtk_widget_set_usize_internal (widget, -2, g_value_get_int (value), 0); gtk_widget_set_usize_internal (widget, -2, g_value_get_int (value));
break; break;
case PROP_VISIBLE: case PROP_VISIBLE:
gtk_widget_set_visible (widget, g_value_get_boolean (value)); gtk_widget_set_visible (widget, g_value_get_boolean (value));
@@ -5748,7 +5747,7 @@ gtk_widget_queue_resize (GtkWidget *widget)
if (gtk_widget_get_realized (widget)) if (gtk_widget_get_realized (widget))
gtk_widget_queue_draw (widget); gtk_widget_queue_draw (widget);
_gtk_size_group_queue_resize (widget, 0); _gtk_size_group_queue_resize (widget);
} }
/** /**
@@ -5765,7 +5764,7 @@ gtk_widget_queue_resize_no_redraw (GtkWidget *widget)
{ {
g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (widget));
_gtk_size_group_queue_resize (widget, 0); _gtk_size_group_queue_resize (widget);
} }
/** /**
@@ -10957,8 +10956,7 @@ gtk_widget_error_bell (GtkWidget *widget)
static void static void
gtk_widget_set_usize_internal (GtkWidget *widget, gtk_widget_set_usize_internal (GtkWidget *widget,
gint width, gint width,
gint height, gint height)
GtkQueueResizeFlags flags)
{ {
GtkWidgetAuxInfo *aux_info; GtkWidgetAuxInfo *aux_info;
gboolean changed = FALSE; gboolean changed = FALSE;
@@ -10969,25 +10967,20 @@ gtk_widget_set_usize_internal (GtkWidget *widget,
if (width > -2 && aux_info->width != width) if (width > -2 && aux_info->width != width)
{ {
if ((flags & GTK_QUEUE_RESIZE_INVALIDATE_ONLY) == 0) g_object_notify (G_OBJECT (widget), "width-request");
g_object_notify (G_OBJECT (widget), "width-request");
aux_info->width = width; aux_info->width = width;
changed = TRUE; changed = TRUE;
} }
if (height > -2 && aux_info->height != height) if (height > -2 && aux_info->height != height)
{ {
if ((flags & GTK_QUEUE_RESIZE_INVALIDATE_ONLY) == 0) g_object_notify (G_OBJECT (widget), "height-request");
g_object_notify (G_OBJECT (widget), "height-request");
aux_info->height = height; aux_info->height = height;
changed = TRUE; changed = TRUE;
} }
if (gtk_widget_get_visible (widget) && changed) if (gtk_widget_get_visible (widget) && changed)
{ {
if ((flags & GTK_QUEUE_RESIZE_INVALIDATE_ONLY) == 0) gtk_widget_queue_resize (widget);
gtk_widget_queue_resize (widget);
else
_gtk_size_group_queue_resize (widget, GTK_QUEUE_RESIZE_INVALIDATE_ONLY);
} }
g_object_thaw_notify (G_OBJECT (widget)); g_object_thaw_notify (G_OBJECT (widget));
@@ -11044,7 +11037,7 @@ gtk_widget_set_size_request (GtkWidget *widget,
if (height == 0) if (height == 0)
height = 1; height = 1;
gtk_widget_set_usize_internal (widget, width, height, 0); gtk_widget_set_usize_internal (widget, width, height);
} }
@@ -11080,52 +11073,6 @@ gtk_widget_get_size_request (GtkWidget *widget,
*height = aux_info->height; *height = aux_info->height;
} }
/**
* _gtk_widget_override_size_request:
* @widget: a #GtkWidget
* @width: new forced minimum width
* @height: new forced minimum height
* @old_width: location to store previous forced minimum width
* @old_height: location to store previous forced minumum height
*
* Temporarily establishes a forced minimum size for a widget; this
* is used by GtkWindow when calculating the size to add to the
* windows geometry widget. Cached sizes for the widget and its
* parents are invalidated, so that subsequent calls to the size
* negotiation machinery produce the overriden result, but the
* widget is not queued for relayout or redraw. The old size must
* be restored with _gtk_widget_restore_size_request() or things
* will go screwy.
*/
void
_gtk_widget_override_size_request (GtkWidget *widget,
int width,
int height,
int *old_width,
int *old_height)
{
gtk_widget_get_size_request (widget, old_width, old_height);
gtk_widget_set_usize_internal (widget, width, height,
GTK_QUEUE_RESIZE_INVALIDATE_ONLY);
}
/**
* _gtk_widget_restore_size_request:
* @widget: a #GtkWidget
* @old_width: saved forced minimum size
* @old_height: saved forced minimum size
*
* Undoes the operation of_gtk_widget_override_size_request().
*/
void
_gtk_widget_restore_size_request (GtkWidget *widget,
int old_width,
int old_height)
{
gtk_widget_set_usize_internal (widget, old_width, old_height,
GTK_QUEUE_RESIZE_INVALIDATE_ONLY);
}
/** /**
* gtk_widget_set_events: * gtk_widget_set_events:
* @widget: a #GtkWidget * @widget: a #GtkWidget
@@ -15260,14 +15207,12 @@ gtk_widget_real_set_has_tooltip (GtkWidget *widget,
gdk_window_set_events (priv->window, gdk_window_set_events (priv->window,
gdk_window_get_events (priv->window) | gdk_window_get_events (priv->window) |
GDK_LEAVE_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_MASK);
GDK_POINTER_MOTION_HINT_MASK);
if (gtk_widget_get_has_window (widget)) if (gtk_widget_get_has_window (widget))
gtk_widget_add_events (widget, gtk_widget_add_events (widget,
GDK_LEAVE_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_MASK);
GDK_POINTER_MOTION_HINT_MASK);
} }
g_object_set_qdata (G_OBJECT (widget), quark_has_tooltip, g_object_set_qdata (G_OBJECT (widget), quark_has_tooltip,
@@ -16402,14 +16347,18 @@ gtk_widget_get_path (GtkWidget *widget)
} }
void void
_gtk_widget_style_context_invalidated (GtkWidget *widget) gtk_widget_clear_path (GtkWidget *widget)
{ {
if (widget->priv->path) if (widget->priv->path)
{ {
gtk_widget_path_free (widget->priv->path); gtk_widget_path_free (widget->priv->path);
widget->priv->path = NULL; widget->priv->path = NULL;
} }
}
void
_gtk_widget_style_context_invalidated (GtkWidget *widget)
{
if (gtk_widget_get_realized (widget)) if (gtk_widget_get_realized (widget))
g_signal_emit (widget, widget_signals[STYLE_UPDATED], 0); g_signal_emit (widget, widget_signals[STYLE_UPDATED], 0);
else else
+2 -2
View File
@@ -497,8 +497,8 @@ gtk_widget_path_iter_get_siblings (const GtkWidgetPath *path,
{ {
GtkPathElement *elem; GtkPathElement *elem;
g_return_val_if_fail (path != NULL, G_TYPE_INVALID); g_return_val_if_fail (path != NULL, NULL);
g_return_val_if_fail (path->elems->len != 0, G_TYPE_INVALID); g_return_val_if_fail (path->elems->len != 0, NULL);
if (pos < 0 || pos >= path->elems->len) if (pos < 0 || pos >= path->elems->len)
pos = path->elems->len - 1; pos = path->elems->len - 1;
+1 -8
View File
@@ -63,14 +63,6 @@ void _gtk_widget_add_attached_window (GtkWidget *widget,
void _gtk_widget_remove_attached_window (GtkWidget *widget, void _gtk_widget_remove_attached_window (GtkWidget *widget,
GtkWindow *window); GtkWindow *window);
void _gtk_widget_override_size_request (GtkWidget *widget,
int width,
int height,
int *old_width,
int *old_height);
void _gtk_widget_restore_size_request (GtkWidget *widget,
int old_width,
int old_height);
void _gtk_widget_get_preferred_size_for_size (GtkWidget *widget, void _gtk_widget_get_preferred_size_for_size (GtkWidget *widget,
GtkOrientation orientation, GtkOrientation orientation,
gint size, gint size,
@@ -148,6 +140,7 @@ gboolean _gtk_widget_captured_event (GtkWidget *widget,
GdkEvent *event); GdkEvent *event);
GtkWidgetPath * _gtk_widget_create_path (GtkWidget *widget); GtkWidgetPath * _gtk_widget_create_path (GtkWidget *widget);
void gtk_widget_clear_path (GtkWidget *widget);
void _gtk_widget_invalidate_style_context (GtkWidget *widget, void _gtk_widget_invalidate_style_context (GtkWidget *widget,
GtkCssChange change); GtkCssChange change);
void _gtk_widget_style_context_invalidated (GtkWidget *widget); void _gtk_widget_style_context_invalidated (GtkWidget *widget);
+51 -108
View File
@@ -227,8 +227,7 @@ struct _GtkWindowPrivate
guint gravity : 5; /* GdkGravity */ guint gravity : 5; /* GdkGravity */
guint csd_requested : 1; guint csd_requested : 1;
guint client_decorated : 1; /* Decorations drawn client-side */ guint client_decorated : 1; /* Decorations drawn client-side */
guint custom_title : 1; /* app-provided titlebar if CSD can't guint use_client_shadow : 1; /* Decorations use client-side shadows */
* be enabled */
guint maximized : 1; guint maximized : 1;
guint fullscreen : 1; guint fullscreen : 1;
guint tiled : 1; guint tiled : 1;
@@ -336,7 +335,6 @@ struct _GtkWindowGeometryInfo
*/ */
GdkGeometry geometry; /* Geometry hints */ GdkGeometry geometry; /* Geometry hints */
GdkWindowHints mask; GdkWindowHints mask;
GtkWidget *widget; /* subwidget to which hints apply */
/* from last gtk_window_resize () - if > 0, indicates that /* from last gtk_window_resize () - if > 0, indicates that
* we should resize to this size. * we should resize to this size.
*/ */
@@ -3869,7 +3867,6 @@ gtk_window_get_geometry_info (GtkWindow *window,
info->last.configure_request.y = 0; info->last.configure_request.y = 0;
info->last.configure_request.width = -1; info->last.configure_request.width = -1;
info->last.configure_request.height = -1; info->last.configure_request.height = -1;
info->widget = NULL;
info->mask = 0; info->mask = 0;
priv->geometry_info = info; priv->geometry_info = info;
} }
@@ -3880,7 +3877,9 @@ gtk_window_get_geometry_info (GtkWindow *window,
/** /**
* gtk_window_set_geometry_hints: * gtk_window_set_geometry_hints:
* @window: a #GtkWindow * @window: a #GtkWindow
* @geometry_widget: (allow-none): widget the geometry hints will be applied to or %NULL * @geometry_widget: (allow-none): widget the geometry hints used to be applied to
* or %NULL. Since 3.18 this argument is ignored and GTK behaves as if %NULL was
* set.
* @geometry: (allow-none): struct containing geometry information or %NULL * @geometry: (allow-none): struct containing geometry information or %NULL
* @geom_mask: mask indicating which struct fields should be paid attention to * @geom_mask: mask indicating which struct fields should be paid attention to
* *
@@ -3903,17 +3902,6 @@ gtk_window_set_geometry_hints (GtkWindow *window,
info = gtk_window_get_geometry_info (window, TRUE); info = gtk_window_get_geometry_info (window, TRUE);
if (info->widget)
g_signal_handlers_disconnect_by_func (info->widget,
gtk_widget_destroyed,
&info->widget);
info->widget = geometry_widget;
if (info->widget)
g_signal_connect (geometry_widget, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&info->widget);
if (geometry) if (geometry)
info->geometry = *geometry; info->geometry = *geometry;
@@ -3947,7 +3935,7 @@ unset_titlebar (GtkWindow *window)
} }
static gboolean static gboolean
gtk_window_supports_csd (GtkWindow *window) gtk_window_supports_client_shadow (GtkWindow *window)
{ {
GtkWidget *widget = GTK_WIDGET (window); GtkWidget *widget = GTK_WIDGET (window);
@@ -3997,13 +3985,21 @@ gtk_window_enable_csd (GtkWindow *window)
GtkWidget *widget = GTK_WIDGET (window); GtkWidget *widget = GTK_WIDGET (window);
GdkVisual *visual; GdkVisual *visual;
/* We need a visual with alpha */ /* We need a visual with alpha for client shadows */
visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget)); if (priv->use_client_shadow)
g_assert (visual != NULL); {
gtk_widget_set_visual (widget, visual); visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget));
if (visual != NULL)
gtk_widget_set_visual (widget, visual);
gtk_style_context_add_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD);
}
else
{
gtk_style_context_add_class (gtk_widget_get_style_context (widget), "solid-csd");
}
priv->client_decorated = TRUE; priv->client_decorated = TRUE;
gtk_style_context_add_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD);
} }
static void static void
@@ -4038,7 +4034,6 @@ gtk_window_set_titlebar (GtkWindow *window,
{ {
GtkWidget *widget = GTK_WIDGET (window); GtkWidget *widget = GTK_WIDGET (window);
GtkWindowPrivate *priv = window->priv; GtkWindowPrivate *priv = window->priv;
GdkVisual *visual;
gboolean was_mapped; gboolean was_mapped;
g_return_if_fail (GTK_IS_WINDOW (window)); g_return_if_fail (GTK_IS_WINDOW (window));
@@ -4059,18 +4054,15 @@ gtk_window_set_titlebar (GtkWindow *window,
if (titlebar == NULL) if (titlebar == NULL)
{ {
priv->custom_title = FALSE;
priv->client_decorated = FALSE; priv->client_decorated = FALSE;
gtk_style_context_remove_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD); gtk_style_context_remove_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD);
goto out; goto out;
} }
if (gtk_window_supports_csd (window)) priv->use_client_shadow = gtk_window_supports_client_shadow (window);
gtk_window_enable_csd (window);
else
priv->custom_title = TRUE;
gtk_window_enable_csd (window);
priv->title_box = titlebar; priv->title_box = titlebar;
gtk_widget_set_parent (priv->title_box, widget); gtk_widget_set_parent (priv->title_box, widget);
if (GTK_IS_HEADER_BAR (titlebar)) if (GTK_IS_HEADER_BAR (titlebar))
@@ -4080,10 +4072,6 @@ gtk_window_set_titlebar (GtkWindow *window,
on_titlebar_title_notify (GTK_HEADER_BAR (titlebar), NULL, window); on_titlebar_title_notify (GTK_HEADER_BAR (titlebar), NULL, window);
} }
visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget));
if (visual)
gtk_widget_set_visual (widget, visual);
gtk_style_context_add_class (gtk_widget_get_style_context (titlebar), gtk_style_context_add_class (gtk_widget_get_style_context (titlebar),
GTK_STYLE_CLASS_TITLEBAR); GTK_STYLE_CLASS_TITLEBAR);
@@ -4171,8 +4159,6 @@ gtk_window_set_decorated (GtkWindow *window,
{ {
if (priv->client_decorated) if (priv->client_decorated)
gdk_window_set_decorations (gdk_window, 0); gdk_window_set_decorations (gdk_window, 0);
else if (priv->custom_title)
gdk_window_set_decorations (gdk_window, GDK_DECOR_BORDER);
else else
gdk_window_set_decorations (gdk_window, GDK_DECOR_ALL); gdk_window_set_decorations (gdk_window, GDK_DECOR_ALL);
} }
@@ -5651,10 +5637,6 @@ gtk_window_finalize (GObject *object)
if (priv->geometry_info) if (priv->geometry_info)
{ {
if (priv->geometry_info->widget)
g_signal_handlers_disconnect_by_func (priv->geometry_info->widget,
gtk_widget_destroyed,
&priv->geometry_info->widget);
g_free (priv->geometry_info); g_free (priv->geometry_info);
} }
@@ -5809,7 +5791,8 @@ create_decoration (GtkWidget *widget)
GtkWindow *window = GTK_WINDOW (widget); GtkWindow *window = GTK_WINDOW (widget);
GtkWindowPrivate *priv = window->priv; GtkWindowPrivate *priv = window->priv;
if (!gtk_window_supports_csd (window)) priv->use_client_shadow = gtk_window_supports_client_shadow (window);
if (!priv->use_client_shadow)
return; return;
gtk_window_enable_csd (window); gtk_window_enable_csd (window);
@@ -6626,7 +6609,7 @@ update_border_windows (GtkWindow *window)
border.right + handle, border.top + handle); border.right + handle, border.top + handle);
gdk_window_move_resize (priv->border_window[GDK_WINDOW_EDGE_SOUTH_WEST], gdk_window_move_resize (priv->border_window[GDK_WINDOW_EDGE_SOUTH_WEST],
window_border.left - border.left, window_border.top + height - handle, window_border.left - border.left, window_border.top + height - handle,
window_border.left + handle, border.bottom + handle); border.left + handle, border.bottom + handle);
gdk_window_move_resize (priv->border_window[GDK_WINDOW_EDGE_SOUTH_EAST], gdk_window_move_resize (priv->border_window[GDK_WINDOW_EDGE_SOUTH_EAST],
window_border.left + width - handle, window_border.top + height - handle, window_border.left + width - handle, window_border.top + height - handle,
border.right + handle, border.bottom + handle); border.right + handle, border.bottom + handle);
@@ -6892,7 +6875,7 @@ update_realized_window_properties (GtkWindow *window,
{ {
GtkWindowPrivate *priv = window->priv; GtkWindowPrivate *priv = window->priv;
if (priv->client_decorated) if (priv->client_decorated && priv->use_client_shadow)
update_shadow_width (window, window_border); update_shadow_width (window, window_border);
update_opaque_region (window, window_border, child_allocation); update_opaque_region (window, window_border, child_allocation);
@@ -7035,8 +7018,7 @@ gtk_window_realize (GtkWidget *widget)
GDK_FOCUS_CHANGE_MASK | GDK_FOCUS_CHANGE_MASK |
GDK_STRUCTURE_MASK); GDK_STRUCTURE_MASK);
if (priv->decorated && if (priv->decorated && priv->client_decorated)
(priv->client_decorated || priv->custom_title))
attributes.event_mask |= GDK_POINTER_MOTION_MASK; attributes.event_mask |= GDK_POINTER_MOTION_MASK;
attributes.type_hint = priv->type_hint; attributes.type_hint = priv->type_hint;
@@ -7111,8 +7093,6 @@ gtk_window_realize (GtkWidget *widget)
if (!priv->decorated || priv->client_decorated) if (!priv->decorated || priv->client_decorated)
gdk_window_set_decorations (gdk_window, 0); gdk_window_set_decorations (gdk_window, 0);
else if (priv->custom_title)
gdk_window_set_decorations (gdk_window, GDK_DECOR_BORDER);
if (!priv->deletable) if (!priv->deletable)
gdk_window_set_functions (gdk_window, GDK_FUNC_ALL | GDK_FUNC_CLOSE); gdk_window_set_functions (gdk_window, GDK_FUNC_ALL | GDK_FUNC_CLOSE);
@@ -9528,56 +9508,6 @@ gtk_window_compute_hints (GtkWindow *window,
*new_flags = 0; *new_flags = 0;
} }
if (geometry_info && geometry_info->widget)
{
/* If the geometry widget is set, then the hints really apply to that
* widget. This is pretty much meaningless unless the window layout
* is such that the rest of the window adds fixed size borders to
* the geometry widget. Our job is to figure the size of the borders;
* We do that by asking how big the toplevel would be if the
* geometry widget was *really big*.
*
* +----------+
* |AAAAAAAAA | At small sizes, the minimum sizes of widgets
* |GGGGG B| in the border can confuse things
* |GGGGG B|
* | B|
* +----------+
*
* +-----------+
* |AAAAAAAAA | When the geometry widget is large, things are
* |GGGGGGGGGGB| clearer.
* |GGGGGGGGGGB|
* |GGGGGGGGGG |
* +-----------+
*/
#define TEMPORARY_SIZE 10000 /* 10,000 pixels should be bigger than real widget sizes */
GtkRequisition req;
int current_width, current_height;
_gtk_widget_override_size_request (geometry_info->widget,
TEMPORARY_SIZE, TEMPORARY_SIZE,
&current_width, &current_height);
gtk_widget_get_preferred_size (widget,
&req, NULL);
_gtk_widget_restore_size_request (geometry_info->widget,
current_width, current_height);
extra_width = req.width - TEMPORARY_SIZE;
extra_height = req.height - TEMPORARY_SIZE;
if (extra_width < 0 || extra_height < 0)
{
g_warning("Toplevel size doesn't seem to directly depend on the "
"size of the geometry widget from gtk_window_set_geometry_hints(). "
"The geometry widget might not be in the window, or it might not "
"be packed into the window appropriately");
extra_width = MAX(extra_width, 0);
extra_height = MAX(extra_height, 0);
}
#undef TEMPORARY_SIZE
}
/* We don't want to set GDK_HINT_POS in here, we just set it /* We don't want to set GDK_HINT_POS in here, we just set it
* in gtk_window_move_resize() when we want the position * in gtk_window_move_resize() when we want the position
* honored. * honored.
@@ -9689,18 +9619,31 @@ gtk_window_draw (GtkWidget *widget,
add_window_frame_style_class (context); add_window_frame_style_class (context);
gtk_render_background (context, cr, if (priv->use_client_shadow)
window_border.left, window_border.top, {
allocation.width - gtk_render_background (context, cr,
(window_border.left + window_border.right), window_border.left, window_border.top,
allocation.height - allocation.width -
(window_border.top + window_border.bottom)); (window_border.left + window_border.right),
gtk_render_frame (context, cr, allocation.height -
window_border.left, window_border.top, (window_border.top + window_border.bottom));
allocation.width - gtk_render_frame (context, cr,
(window_border.left + window_border.right), window_border.left, window_border.top,
allocation.height - allocation.width -
(window_border.top + window_border.bottom)); (window_border.left + window_border.right),
allocation.height -
(window_border.top + window_border.bottom));
}
else
{
gtk_render_background (context, cr, 0, 0,
allocation.width,
allocation.height);
gtk_render_frame (context, cr, 0, 0,
allocation.width,
allocation.height);
}
gtk_style_context_restore (context); gtk_style_context_restore (context);
} }
@@ -10466,7 +10409,7 @@ gtk_window_set_screen (GtkWindow *window,
} }
g_object_notify (G_OBJECT (window), "screen"); g_object_notify (G_OBJECT (window), "screen");
if (was_rgba) if (was_rgba && priv->use_client_shadow)
{ {
GdkVisual *visual; GdkVisual *visual;
+7
View File
@@ -3227,6 +3227,13 @@ GtkVolumeButton.button { padding: 8px; }
0 0 0 1px transparentize($_wm_border,0.1); 0 0 0 1px transparentize($_wm_border,0.1);
} }
} }
&.solid-csd {
border-radius: 0;
margin: 4px;
background-color: $backdrop_bg_color;
border: solid 1px $backdrop_borders_color;
box-shadow: none;
}
} }
// Window Close button // Window Close button
+6
View File
@@ -4245,6 +4245,12 @@ GtkVolumeButton.button, .header-bar GtkVolumeButton.button.titlebutton,
.window-frame.csd.message-dialog { .window-frame.csd.message-dialog {
border-radius: 7px; border-radius: 7px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(28, 31, 31, 0.8); } box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(28, 31, 31, 0.8); }
.window-frame.solid-csd {
border-radius: 0;
margin: 4px;
background-color: #393f3f;
border: solid 1px #1e2222;
box-shadow: none; }
.header-bar .titlebutton.button, .header-bar .titlebutton.button,
.titlebar .titlebutton.button { .titlebar .titlebutton.button {
+6
View File
@@ -4417,6 +4417,12 @@ GtkVolumeButton.button, .header-bar GtkVolumeButton.button.titlebutton,
.window-frame.csd.message-dialog { .window-frame.csd.message-dialog {
border-radius: 7px; border-radius: 7px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); } box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); }
.window-frame.solid-csd {
border-radius: 0;
margin: 4px;
background-color: #ededed;
border: solid 1px #a8a8a8;
box-shadow: none; }
.header-bar .titlebutton.button, .header-bar .titlebutton.button,
.titlebar .titlebutton.button { .titlebar .titlebutton.button {
+8 -1
View File
@@ -583,7 +583,7 @@ $_dot_color: $selected_bg_color;
&:backdrop { &:backdrop {
color: $backdrop_fg_color; color: $backdrop_fg_color;
@extend %undecorated_button; @extend %undecorated_button;
&:hover { color: $selected_fg_color; background-color: selected_bg_color; } &:hover { color: $selected_fg_color; background-color: $selected_bg_color; }
} }
&:insensitive { color: $insensitive_fg_color; } &:insensitive { color: $insensitive_fg_color; }
} }
@@ -2260,6 +2260,13 @@ GtkColorChooserWidget #add-color-button {
box-shadow: none; box-shadow: none;
} }
} }
&.solid-csd {
border-radius: 0;
margin: 4px;
background-color: $backdrop_bg_color;
border: solid 1px $backdrop_borders_color;
box-shadow: none;
}
} }
// Window Close button // Window Close button
+8 -3
View File
@@ -175,8 +175,7 @@
box-shadow: none; } box-shadow: none; }
.label:insensitive, .label:backdrop:insensitive { .label:insensitive, .label:backdrop:insensitive {
color: #7f7f7f; color: #7f7f7f; }
background-color: white; }
/********************* /*********************
* Spinner Animation * * Spinner Animation *
@@ -782,7 +781,7 @@
color: #000; } color: #000; }
.menuitem.button.flat:backdrop:hover { .menuitem.button.flat:backdrop:hover {
color: #fff; color: #fff;
background-color: selected_bg_color; } background-color: #000; }
.menuitem.button.flat:insensitive { .menuitem.button.flat:insensitive {
color: #7f7f7f; } color: #7f7f7f; }
@@ -2512,6 +2511,12 @@ GtkColorChooserWidget #add-color-button {
.window-frame.csd.tooltip { .window-frame.csd.tooltip {
border-radius: 5px; border-radius: 5px;
box-shadow: none; } box-shadow: none; }
.window-frame.solid-csd {
border-radius: 0;
margin: 4px;
background-color: #fff;
border: solid 1px #8b8b8b;
box-shadow: none; }
.button.titlebutton { .button.titlebutton {
padding: 8px; padding: 8px;
+9
View File
@@ -872,3 +872,12 @@ GtkCalendar.button:hover {
.window-frame:backdrop { .window-frame:backdrop {
box-shadow: 0 2px 5px 1px alpha(black, 0.5); box-shadow: 0 2px 5px 1px alpha(black, 0.5);
} }
.window-frame.solid-csd {
border-radius: 0;
margin: 2px;
background-color: @bg_color;
border-style: outset;
border-width: 2px;
box-shadow: none;
}
+1
View File
@@ -118,6 +118,7 @@ gtk/gtkcolorscale.c
gtk/gtkcolorswatch.c gtk/gtkcolorswatch.c
gtk/gtkcombobox.c gtk/gtkcombobox.c
gtk/gtkcontainer.c gtk/gtkcontainer.c
gtk/gtkcssnode.c
gtk/gtkcssprovider.c gtk/gtkcssprovider.c
gtk/gtkcssshorthandproperty.c gtk/gtkcssshorthandproperty.c
gtk/gtkcssstyleproperty.c gtk/gtkcssstyleproperty.c
+3
View File
@@ -60,6 +60,7 @@ gtk/inspector/classes-list.ui
gtk/inspector/classes-list.ui.h gtk/inspector/classes-list.ui.h
gtk/inspector/css-editor.ui gtk/inspector/css-editor.ui
gtk/inspector/css-editor.ui.h gtk/inspector/css-editor.ui.h
gtk/inspector/css-node-tree.ui
gtk/inspector/data-list.ui gtk/inspector/data-list.ui
gtk/inspector/data-list.ui.h gtk/inspector/data-list.ui.h
gtk/inspector/general.ui gtk/inspector/general.ui
@@ -167,6 +168,8 @@ testsuite/reftests/border-image-url.ref.ui
testsuite/reftests/border-image-url-scaled.ref.ui testsuite/reftests/border-image-url-scaled.ref.ui
testsuite/reftests/border-image-url-scaled.ui testsuite/reftests/border-image-url-scaled.ui
testsuite/reftests/border-image-url.ui testsuite/reftests/border-image-url.ui
testsuite/reftests/box-order.ref.ui
testsuite/reftests/box-order.ui
testsuite/reftests/box-packing.ui testsuite/reftests/box-packing.ui
testsuite/reftests/box-pseudo-classes.ref.ui testsuite/reftests/box-pseudo-classes.ref.ui
testsuite/reftests/box-pseudo-classes.ui testsuite/reftests/box-pseudo-classes.ui
+2208 -2208
View File
File diff suppressed because it is too large Load Diff
+2261 -2229
View File
File diff suppressed because it is too large Load Diff
+2206 -2206
View File
File diff suppressed because it is too large Load Diff
+2216 -2209
View File
File diff suppressed because it is too large Load Diff
+930 -1130
View File
File diff suppressed because it is too large Load Diff
+331 -294
View File
File diff suppressed because it is too large Load Diff
+3929 -2975
View File
File diff suppressed because it is too large Load Diff
+324 -292
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -118,6 +118,7 @@ gtk/gtkcolorscale.c
gtk/gtkcolorswatch.c gtk/gtkcolorswatch.c
gtk/gtkcombobox.c gtk/gtkcombobox.c
gtk/gtkcontainer.c gtk/gtkcontainer.c
gtk/gtkcssnode.c
gtk/gtkcssprovider.c gtk/gtkcssprovider.c
gtk/gtkcssshorthandproperty.c gtk/gtkcssshorthandproperty.c
gtk/gtkcssstyleproperty.c gtk/gtkcssstyleproperty.c
@@ -289,6 +290,7 @@ gtk/inspector/classes-list.c
gtk/inspector/classes-list.ui gtk/inspector/classes-list.ui
gtk/inspector/css-editor.c gtk/inspector/css-editor.c
gtk/inspector/css-editor.ui gtk/inspector/css-editor.ui
gtk/inspector/css-node-tree.ui
gtk/inspector/data-list.ui gtk/inspector/data-list.ui
gtk/inspector/general.c gtk/inspector/general.c
gtk/inspector/general.ui gtk/inspector/general.ui
+2
View File
@@ -94,6 +94,8 @@ testsuite/reftests/border-image-url.ref.ui
testsuite/reftests/border-image-url-scaled.ref.ui testsuite/reftests/border-image-url-scaled.ref.ui
testsuite/reftests/border-image-url-scaled.ui testsuite/reftests/border-image-url-scaled.ui
testsuite/reftests/border-image-url.ui testsuite/reftests/border-image-url.ui
testsuite/reftests/box-order.ref.ui
testsuite/reftests/box-order.ui
testsuite/reftests/box-packing.ui testsuite/reftests/box-packing.ui
testsuite/reftests/box-pseudo-classes.ref.ui testsuite/reftests/box-pseudo-classes.ref.ui
testsuite/reftests/box-pseudo-classes.ui testsuite/reftests/box-pseudo-classes.ui
+156 -730
View File
File diff suppressed because it is too large Load Diff
+2064 -1920
View File
File diff suppressed because it is too large Load Diff
+1674 -1671
View File
File diff suppressed because it is too large Load Diff
+1641 -1656
View File
File diff suppressed because it is too large Load Diff
+1707 -1669
View File
File diff suppressed because it is too large Load Diff
+204 -194
View File
File diff suppressed because it is too large Load Diff
+1973 -1742
View File
File diff suppressed because it is too large Load Diff
+222 -282
View File
File diff suppressed because it is too large Load Diff
+95 -87
View File
@@ -13,8 +13,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gtk+\n" "Project-Id-Version: gtk+\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-03-11 10:18+0000\n" "POT-Creation-Date: 2015-03-23 22:08+0000\n"
"PO-Revision-Date: 2015-03-12 02:52+0900\n" "PO-Revision-Date: 2015-03-24 09:52+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n" "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: Gnome Korea <gnome-kr@googlegroups.com>\n" "Language-Team: Gnome Korea <gnome-kr@googlegroups.com>\n"
"Language: Korean\n" "Language: Korean\n"
@@ -1060,6 +1060,10 @@ msgctxt "Stock label"
msgid "Zoom _Out" msgid "Zoom _Out"
msgstr "축소(_O)" msgstr "축소(_O)"
#: gtk/a11y/gtkmenubuttonaccessible.c:102 gtk/inspector/window.ui:356
msgid "Menu"
msgstr "메뉴"
#: gtk/a11y/gtkmenuitemaccessible.c:445 #: gtk/a11y/gtkmenuitemaccessible.c:445
msgctxt "Action description" msgctxt "Action description"
msgid "Clicks the menuitem" msgid "Clicks the menuitem"
@@ -1237,7 +1241,7 @@ msgstr ""
#: gtk/gtkmountoperation.c:543 gtk/gtkpagesetupunixdialog.c:196 #: gtk/gtkmountoperation.c:543 gtk/gtkpagesetupunixdialog.c:196
#: gtk/gtkprintbackend.c:763 gtk/gtkprinteroptionwidget.c:545 #: gtk/gtkprintbackend.c:763 gtk/gtkprinteroptionwidget.c:545
#: gtk/gtkprintunixdialog.c:665 gtk/gtkprintunixdialog.c:738 #: gtk/gtkprintunixdialog.c:665 gtk/gtkprintunixdialog.c:738
#: gtk/gtkwindow.c:11917 gtk/inspector/css-editor.c:199 #: gtk/gtkwindow.c:11925 gtk/inspector/css-editor.c:199
#: gtk/ui/gtkappchooserdialog.ui:79 gtk/ui/gtkassistant.ui:169 #: gtk/ui/gtkappchooserdialog.ui:79 gtk/ui/gtkassistant.ui:169
#: gtk/ui/gtkcolorchooserdialog.ui:38 gtk/ui/gtkfontchooserdialog.ui:35 #: gtk/ui/gtkcolorchooserdialog.ui:38 gtk/ui/gtkfontchooserdialog.ui:35
msgid "_Cancel" msgid "_Cancel"
@@ -1286,7 +1290,7 @@ msgid "_Apply"
msgstr "적용(_A)" msgstr "적용(_A)"
#: gtk/deprecated/gtkfontsel.c:1698 gtk/gtkmessagedialog.c:936 #: gtk/deprecated/gtkfontsel.c:1698 gtk/gtkmessagedialog.c:936
#: gtk/gtkmessagedialog.c:958 gtk/gtkprintbackend.c:764 gtk/gtkwindow.c:11918 #: gtk/gtkmessagedialog.c:958 gtk/gtkprintbackend.c:764 gtk/gtkwindow.c:11926
#: gtk/inspector/classes-list.c:127 #: gtk/inspector/classes-list.c:127
msgid "_OK" msgid "_OK"
msgstr "확인(_O)" msgstr "확인(_O)"
@@ -2141,31 +2145,31 @@ msgstr "오른쪽(_R):"
msgid "Paper Margins" msgid "Paper Margins"
msgstr "용지 여백" msgstr "용지 여백"
#: gtk/gtkentry.c:9629 gtk/gtkentry.c:9782 gtk/gtklabel.c:6597 #: gtk/gtkentry.c:9615 gtk/gtkentry.c:9768 gtk/gtklabel.c:6596
#: gtk/gtktextview.c:9037 gtk/gtktextview.c:9225 #: gtk/gtktextview.c:9037 gtk/gtktextview.c:9225
msgid "Cu_t" msgid "Cu_t"
msgstr "잘라내기(_T)" msgstr "잘라내기(_T)"
#: gtk/gtkentry.c:9633 gtk/gtkentry.c:9785 gtk/gtklabel.c:6598 #: gtk/gtkentry.c:9619 gtk/gtkentry.c:9771 gtk/gtklabel.c:6597
#: gtk/gtktextview.c:9041 gtk/gtktextview.c:9229 #: gtk/gtktextview.c:9041 gtk/gtktextview.c:9229
msgid "_Copy" msgid "_Copy"
msgstr "복사(_C)" msgstr "복사(_C)"
#: gtk/gtkentry.c:9637 gtk/gtkentry.c:9788 gtk/gtklabel.c:6599 #: gtk/gtkentry.c:9623 gtk/gtkentry.c:9774 gtk/gtklabel.c:6598
#: gtk/gtktextview.c:9043 gtk/gtktextview.c:9231 #: gtk/gtktextview.c:9043 gtk/gtktextview.c:9231
msgid "_Paste" msgid "_Paste"
msgstr "붙여넣기(_P)" msgstr "붙여넣기(_P)"
#: gtk/gtkentry.c:9640 gtk/gtklabel.c:6601 gtk/gtktextview.c:9046 #: gtk/gtkentry.c:9626 gtk/gtklabel.c:6600 gtk/gtktextview.c:9046
msgid "_Delete" msgid "_Delete"
msgstr "삭제(_D)" msgstr "삭제(_D)"
#: gtk/gtkentry.c:9651 gtk/gtklabel.c:6610 gtk/gtktextview.c:9060 #: gtk/gtkentry.c:9637 gtk/gtklabel.c:6609 gtk/gtktextview.c:9060
msgid "Select _All" msgid "Select _All"
msgstr "모두 선택(_A)" msgstr "모두 선택(_A)"
# Caps Lock 키보드 위에 쓰여 있는 글이므로 번역/음역하지 않는다 # Caps Lock 키보드 위에 쓰여 있는 글이므로 번역/음역하지 않는다
#: gtk/gtkentry.c:10849 #: gtk/gtkentry.c:10835
msgid "Caps Lock is on" msgid "Caps Lock is on"
msgstr "Caps Lock이 켜져 있습니다" msgstr "Caps Lock이 켜져 있습니다"
@@ -2185,7 +2189,7 @@ msgstr "(없음)"
msgid "_Open" msgid "_Open"
msgstr "열기(_O)" msgstr "열기(_O)"
#: gtk/gtkfilechooserbutton.c:2137 #: gtk/gtkfilechooserbutton.c:2138
msgid "Other…" msgid "Other…"
msgstr "기타…" msgstr "기타…"
@@ -2281,7 +2285,7 @@ msgstr "폴더를 파일보다 앞에 정렬(_F)"
#. this is the header for the location column in the print dialog #. this is the header for the location column in the print dialog
#: gtk/gtkfilechooserwidget.c:2018 gtk/inspector/style-prop-list.ui:118 #: gtk/gtkfilechooserwidget.c:2018 gtk/inspector/style-prop-list.ui:118
#: gtk/ui/gtkfilechooserwidget.ui:259 gtk/ui/gtkprintunixdialog.ui:137 #: gtk/ui/gtkfilechooserwidget.ui:259 gtk/ui/gtkprintunixdialog.ui:135
msgid "Location" msgid "Location"
msgstr "위치" msgstr "위치"
@@ -2399,7 +2403,7 @@ msgstr "OpenGL 컨텍스트 만들기 실패"
msgid "Application menu" msgid "Application menu"
msgstr "프로그램 메뉴" msgstr "프로그램 메뉴"
#: gtk/gtkheaderbar.c:479 gtk/gtkwindow.c:8591 #: gtk/gtkheaderbar.c:479 gtk/gtkwindow.c:8586
msgid "Close" msgid "Close"
msgstr "닫기" msgstr "닫기"
@@ -2450,12 +2454,12 @@ msgid "Error"
msgstr "오류" msgstr "오류"
#. Open Link #. Open Link
#: gtk/gtklabel.c:6578 #: gtk/gtklabel.c:6577
msgid "_Open Link" msgid "_Open Link"
msgstr "링크 열기(_O)" msgstr "링크 열기(_O)"
#. Copy Link Address #. Copy Link Address
#: gtk/gtklabel.c:6587 #: gtk/gtklabel.c:6586
msgid "Copy _Link Address" msgid "Copy _Link Address"
msgstr "링크 주소 복사(_L)" msgstr "링크 주소 복사(_L)"
@@ -2598,10 +2602,6 @@ msgstr "GTK+ 옵션 표시"
msgid "default:LTR" msgid "default:LTR"
msgstr "default:LTR" msgstr "default:LTR"
#: gtk/gtkmenubutton.c:640 gtk/inspector/window.ui:356
msgid "Menu"
msgstr "메뉴"
#: gtk/gtkmessagedialog.c:948 #: gtk/gtkmessagedialog.c:948
msgid "_No" msgid "_No"
msgstr "아니요(_N)" msgstr "아니요(_N)"
@@ -2696,12 +2696,12 @@ msgstr "Z 셸"
msgid "Cannot end process with PID %d: %s" msgid "Cannot end process with PID %d: %s"
msgstr "PID %d 프로세스를 끝낼 수 없습니다: %s" msgstr "PID %d 프로세스를 끝낼 수 없습니다: %s"
#: gtk/gtknotebook.c:5167 gtk/gtknotebook.c:7896 #: gtk/gtknotebook.c:5173 gtk/gtknotebook.c:7904
#, c-format #, c-format
msgid "Page %u" msgid "Page %u"
msgstr "%u페이지" msgstr "%u페이지"
#: gtk/gtkpagesetup.c:652 gtk/gtkpapersize.c:985 gtk/gtkpapersize.c:1025 #: gtk/gtkpagesetup.c:652 gtk/gtkpapersize.c:986 gtk/gtkpapersize.c:1026
msgid "Not a valid page setup file" msgid "Not a valid page setup file"
msgstr "올바른 페이지 설정 파일이 아닙니다" msgstr "올바른 페이지 설정 파일이 아닙니다"
@@ -2733,7 +2733,7 @@ msgid "Manage Custom Sizes…"
msgstr "사용자 설정 크기 관리…" msgstr "사용자 설정 크기 관리…"
#: gtk/gtkpagesetupunixdialog.c:900 gtk/ui/gtkpagesetupunixdialog.ui:31 #: gtk/gtkpagesetupunixdialog.c:900 gtk/ui/gtkpagesetupunixdialog.ui:31
#: gtk/ui/gtkprintunixdialog.ui:1031 #: gtk/ui/gtkprintunixdialog.ui:1029
msgid "Page Setup" msgid "Page Setup"
msgstr "페이지 설정" msgstr "페이지 설정"
@@ -2930,7 +2930,7 @@ msgstr "빼기(_E)"
msgid "_Detect Media" msgid "_Detect Media"
msgstr "미디어 검색(_D)" msgstr "미디어 검색(_D)"
#: gtk/gtkplacessidebar.c:4167 #: gtk/gtkplacessidebar.c:4165
msgid "Computer" msgid "Computer"
msgstr "컴퓨터" msgstr "컴퓨터"
@@ -3287,7 +3287,7 @@ msgstr "검색"
#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for #. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for
#. * the state #. * the state
#. #.
#: gtk/gtkswitch.c:379 gtk/gtkswitch.c:431 gtk/gtkswitch.c:606 #: gtk/gtkswitch.c:379 gtk/gtkswitch.c:431 gtk/gtkswitch.c:605
msgctxt "switch" msgctxt "switch"
msgid "ON" msgid "ON"
msgstr "켬" msgstr "켬"
@@ -3295,7 +3295,7 @@ msgstr "켬"
#. Translators: if the "off" state label requires more than three #. Translators: if the "off" state label requires more than three
#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state #. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state
#. #.
#: gtk/gtkswitch.c:387 gtk/gtkswitch.c:432 gtk/gtkswitch.c:621 #: gtk/gtkswitch.c:387 gtk/gtkswitch.c:432 gtk/gtkswitch.c:620
msgctxt "switch" msgctxt "switch"
msgid "OFF" msgid "OFF"
msgstr "끔" msgstr "끔"
@@ -3482,12 +3482,12 @@ msgctxt "volume percentage"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: gtk/gtkwindow.c:11905 #: gtk/gtkwindow.c:11913
#, c-format #, c-format
msgid "Do you want to use GTK+ Inspector?" msgid "Do you want to use GTK+ Inspector?"
msgstr "GTK+ 인스펙터를 사용하시겠습니까?" msgstr "GTK+ 인스펙터를 사용하시겠습니까?"
#: gtk/gtkwindow.c:11907 #: gtk/gtkwindow.c:11915
#, c-format #, c-format
msgid "" msgid ""
"GTK+ Inspector is an interactive debugger that lets you explore and modify " "GTK+ Inspector is an interactive debugger that lets you explore and modify "
@@ -3498,7 +3498,7 @@ msgstr ""
"그램의 내부 구조를 살펴 보거나 수정할 수 있습니다. GTK+ 인스펙터를 사용했을 " "그램의 내부 구조를 살펴 보거나 수정할 수 있습니다. GTK+ 인스펙터를 사용했을 "
"때 프로그램이 멈추거나 이상 동작으로 중지할 수도 있습니다." "때 프로그램이 멈추거나 이상 동작으로 중지할 수도 있습니다."
#: gtk/gtkwindow.c:11912 #: gtk/gtkwindow.c:11920
msgid "Don't show this message again" msgid "Don't show this message again"
msgstr "이 메시지 다시 보지 않기" msgstr "이 메시지 다시 보지 않기"
@@ -3706,18 +3706,26 @@ msgid "Accessible role"
msgstr "접근성 역할" msgstr "접근성 역할"
#: gtk/inspector/misc-info.ui:507 #: gtk/inspector/misc-info.ui:507
msgid "Accessible name"
msgstr "접근성 이름"
#: gtk/inspector/misc-info.ui:541
msgid "Accessible description"
msgstr "접근성 설명"
#: gtk/inspector/misc-info.ui:575
msgid "Mapped" msgid "Mapped"
msgstr "매핑됨" msgstr "매핑됨"
#: gtk/inspector/misc-info.ui:543 #: gtk/inspector/misc-info.ui:611
msgid "Realized" msgid "Realized"
msgstr "실재화함" msgstr "실재화함"
#: gtk/inspector/misc-info.ui:579 #: gtk/inspector/misc-info.ui:647
msgid "Is Toplevel" msgid "Is Toplevel"
msgstr "최상위 여부" msgstr "최상위 여부"
#: gtk/inspector/misc-info.ui:615 #: gtk/inspector/misc-info.ui:683
msgid "Child Visible" msgid "Child Visible"
msgstr "하위 표시" msgstr "하위 표시"
@@ -3920,7 +3928,7 @@ msgstr "자체"
msgid "Cumulative" msgid "Cumulative"
msgstr "누적" msgstr "누적"
#: gtk/inspector/statistics.ui:164 #: gtk/inspector/statistics.ui:165
msgid "Enable statistics with GOBJECT_DEBUG=instance-count" msgid "Enable statistics with GOBJECT_DEBUG=instance-count"
msgstr "GOBJECT_DEBUG=instance-count 변수로 통계 기능 사용" msgstr "GOBJECT_DEBUG=instance-count 변수로 통계 기능 사용"
@@ -4136,7 +4144,7 @@ msgstr "리소스"
msgid "Visual" msgid "Visual"
msgstr "겉 모양" msgstr "겉 모양"
#: gtk/inspector/window.ui:436 gtk/ui/gtkprintunixdialog.ui:499 #: gtk/inspector/window.ui:436 gtk/ui/gtkprintunixdialog.ui:497
msgid "General" msgid "General"
msgstr "일반" msgstr "일반"
@@ -5192,7 +5200,7 @@ msgstr "조건에 맞는 글꼴이 없습니다. 검색 조건을 바꿔서 다
msgid "_Format for:" msgid "_Format for:"
msgstr "다음 프린터에 대한 형식(_F):" msgstr "다음 프린터에 대한 형식(_F):"
#: gtk/ui/gtkpagesetupunixdialog.ui:88 gtk/ui/gtkprintunixdialog.ui:903 #: gtk/ui/gtkpagesetupunixdialog.ui:88 gtk/ui/gtkprintunixdialog.ui:901
msgid "_Paper size:" msgid "_Paper size:"
msgstr "용지 크기(_P):" msgstr "용지 크기(_P):"
@@ -5200,19 +5208,19 @@ msgstr "용지 크기(_P):"
msgid "_Orientation:" msgid "_Orientation:"
msgstr "방향(_O):" msgstr "방향(_O):"
#: gtk/ui/gtkpagesetupunixdialog.ui:179 gtk/ui/gtkprintunixdialog.ui:959 #: gtk/ui/gtkpagesetupunixdialog.ui:179 gtk/ui/gtkprintunixdialog.ui:957
msgid "Portrait" msgid "Portrait"
msgstr "세로 방향" msgstr "세로 방향"
#: gtk/ui/gtkpagesetupunixdialog.ui:229 gtk/ui/gtkprintunixdialog.ui:961 #: gtk/ui/gtkpagesetupunixdialog.ui:229 gtk/ui/gtkprintunixdialog.ui:959
msgid "Reverse portrait" msgid "Reverse portrait"
msgstr "뒤집힌 세로 방향" msgstr "뒤집힌 세로 방향"
#: gtk/ui/gtkpagesetupunixdialog.ui:279 gtk/ui/gtkprintunixdialog.ui:960 #: gtk/ui/gtkpagesetupunixdialog.ui:279 gtk/ui/gtkprintunixdialog.ui:958
msgid "Landscape" msgid "Landscape"
msgstr "가로 방향" msgstr "가로 방향"
#: gtk/ui/gtkpagesetupunixdialog.ui:328 gtk/ui/gtkprintunixdialog.ui:962 #: gtk/ui/gtkpagesetupunixdialog.ui:328 gtk/ui/gtkprintunixdialog.ui:960
msgid "Reverse landscape" msgid "Reverse landscape"
msgstr "뒤집힌 가로 방향" msgstr "뒤집힌 가로 방향"
@@ -5224,37 +5232,37 @@ msgstr "아래 경로"
msgid "Up Path" msgid "Up Path"
msgstr "위 경로" msgstr "위 경로"
#: gtk/ui/gtkprintunixdialog.ui:126 #: gtk/ui/gtkprintunixdialog.ui:124
msgid "Printer" msgid "Printer"
msgstr "프린터" msgstr "프린터"
#. this is the header for the printer status column in the print dialog #. this is the header for the printer status column in the print dialog
#: gtk/ui/gtkprintunixdialog.ui:148 #: gtk/ui/gtkprintunixdialog.ui:146
msgid "Status" msgid "Status"
msgstr "상태" msgstr "상태"
#: gtk/ui/gtkprintunixdialog.ui:210 #: gtk/ui/gtkprintunixdialog.ui:208
msgid "Range" msgid "Range"
msgstr "범위" msgstr "범위"
#: gtk/ui/gtkprintunixdialog.ui:233 #: gtk/ui/gtkprintunixdialog.ui:231
msgid "_All Pages" msgid "_All Pages"
msgstr "모든 페이지(_A)" msgstr "모든 페이지(_A)"
#: gtk/ui/gtkprintunixdialog.ui:251 #: gtk/ui/gtkprintunixdialog.ui:249
msgid "C_urrent Page" msgid "C_urrent Page"
msgstr "현재 페이지(_U)" msgstr "현재 페이지(_U)"
#: gtk/ui/gtkprintunixdialog.ui:271 #: gtk/ui/gtkprintunixdialog.ui:269
msgid "Se_lection" msgid "Se_lection"
msgstr "선택(_L)" msgstr "선택(_L)"
#: gtk/ui/gtkprintunixdialog.ui:290 #: gtk/ui/gtkprintunixdialog.ui:288
msgid "Pag_es:" msgid "Pag_es:"
msgstr "페이지(_E):" msgstr "페이지(_E):"
#: gtk/ui/gtkprintunixdialog.ui:294 gtk/ui/gtkprintunixdialog.ui:315 #: gtk/ui/gtkprintunixdialog.ui:292 gtk/ui/gtkprintunixdialog.ui:313
#: gtk/ui/gtkprintunixdialog.ui:322 #: gtk/ui/gtkprintunixdialog.ui:320
msgid "" msgid ""
"Specify one or more page ranges,\n" "Specify one or more page ranges,\n"
" e.g. 13, 7, 11" " e.g. 13, 7, 11"
@@ -5262,105 +5270,105 @@ msgstr ""
"페이지 범위를 지정하십시오.\n" "페이지 범위를 지정하십시오.\n"
" 예) 13, 7, 11" " 예) 13, 7, 11"
#: gtk/ui/gtkprintunixdialog.ui:321 #: gtk/ui/gtkprintunixdialog.ui:319
msgid "Pages" msgid "Pages"
msgstr "페이지" msgstr "페이지"
#: gtk/ui/gtkprintunixdialog.ui:363 #: gtk/ui/gtkprintunixdialog.ui:361
msgid "Copies" msgid "Copies"
msgstr "인쇄 매수" msgstr "인쇄 매수"
#: gtk/ui/gtkprintunixdialog.ui:390 #: gtk/ui/gtkprintunixdialog.ui:388
msgid "Copie_s:" msgid "Copie_s:"
msgstr "인쇄 매수(_S):" msgstr "인쇄 매수(_S):"
#: gtk/ui/gtkprintunixdialog.ui:420 #: gtk/ui/gtkprintunixdialog.ui:418
msgid "C_ollate" msgid "C_ollate"
msgstr "한 부씩 인쇄(_O)" msgstr "한 부씩 인쇄(_O)"
#: gtk/ui/gtkprintunixdialog.ui:438 #: gtk/ui/gtkprintunixdialog.ui:436
msgid "_Reverse" msgid "_Reverse"
msgstr "마지막 페이지부터(_R)" msgstr "마지막 페이지부터(_R)"
#: gtk/ui/gtkprintunixdialog.ui:529 #: gtk/ui/gtkprintunixdialog.ui:527
msgid "Layout" msgid "Layout"
msgstr "배치" msgstr "배치"
#: gtk/ui/gtkprintunixdialog.ui:556 #: gtk/ui/gtkprintunixdialog.ui:554
msgid "T_wo-sided:" msgid "T_wo-sided:"
msgstr "양면(_W):" msgstr "양면(_W):"
#: gtk/ui/gtkprintunixdialog.ui:589 #: gtk/ui/gtkprintunixdialog.ui:587
msgid "Pages per _side:" msgid "Pages per _side:"
msgstr "한 장당 페이지 수(_S):" msgstr "한 장당 페이지 수(_S):"
#: gtk/ui/gtkprintunixdialog.ui:624 #: gtk/ui/gtkprintunixdialog.ui:622
msgid "Page or_dering:" msgid "Page or_dering:"
msgstr "페이지 순서(_D):" msgstr "페이지 순서(_D):"
#: gtk/ui/gtkprintunixdialog.ui:658 #: gtk/ui/gtkprintunixdialog.ui:656
msgid "_Only print:" msgid "_Only print:"
msgstr "다음만 인쇄(_O):" msgstr "다음만 인쇄(_O):"
#: gtk/ui/gtkprintunixdialog.ui:678 #: gtk/ui/gtkprintunixdialog.ui:676
msgid "All sheets" msgid "All sheets"
msgstr "모든 페이지" msgstr "모든 페이지"
#: gtk/ui/gtkprintunixdialog.ui:679 #: gtk/ui/gtkprintunixdialog.ui:677
msgid "Even sheets" msgid "Even sheets"
msgstr "짝수 페이지" msgstr "짝수 페이지"
#: gtk/ui/gtkprintunixdialog.ui:680 #: gtk/ui/gtkprintunixdialog.ui:678
msgid "Odd sheets" msgid "Odd sheets"
msgstr "홀수 페이지" msgstr "홀수 페이지"
#: gtk/ui/gtkprintunixdialog.ui:696 #: gtk/ui/gtkprintunixdialog.ui:694
msgid "Sc_ale:" msgid "Sc_ale:"
msgstr "크기 조정(_A):" msgstr "크기 조정(_A):"
#: gtk/ui/gtkprintunixdialog.ui:777 #: gtk/ui/gtkprintunixdialog.ui:775
msgid "Paper" msgid "Paper"
msgstr "용지" msgstr "용지"
#: gtk/ui/gtkprintunixdialog.ui:804 #: gtk/ui/gtkprintunixdialog.ui:802
msgid "Paper _type:" msgid "Paper _type:"
msgstr "용지 종류(_T):" msgstr "용지 종류(_T):"
#: gtk/ui/gtkprintunixdialog.ui:837 #: gtk/ui/gtkprintunixdialog.ui:835
msgid "Paper _source:" msgid "Paper _source:"
msgstr "용지 공급(_S):" msgstr "용지 공급(_S):"
#: gtk/ui/gtkprintunixdialog.ui:870 #: gtk/ui/gtkprintunixdialog.ui:868
msgid "Output t_ray:" msgid "Output t_ray:"
msgstr "출력 트레이(_R):" msgstr "출력 트레이(_R):"
#: gtk/ui/gtkprintunixdialog.ui:938 #: gtk/ui/gtkprintunixdialog.ui:936
msgid "Or_ientation:" msgid "Or_ientation:"
msgstr "방향(_I):" msgstr "방향(_I):"
#: gtk/ui/gtkprintunixdialog.ui:1056 #: gtk/ui/gtkprintunixdialog.ui:1054
msgid "Job Details" msgid "Job Details"
msgstr "작업 상세 정보" msgstr "작업 상세 정보"
#: gtk/ui/gtkprintunixdialog.ui:1083 #: gtk/ui/gtkprintunixdialog.ui:1081
msgid "Pri_ority:" msgid "Pri_ority:"
msgstr "우선순위(_O):" msgstr "우선순위(_O):"
#: gtk/ui/gtkprintunixdialog.ui:1115 #: gtk/ui/gtkprintunixdialog.ui:1113
msgid "_Billing info:" msgid "_Billing info:"
msgstr "요금 정보(_B):" msgstr "요금 정보(_B):"
#: gtk/ui/gtkprintunixdialog.ui:1171 #: gtk/ui/gtkprintunixdialog.ui:1169
msgid "Print Document" msgid "Print Document"
msgstr "문서 인쇄" msgstr "문서 인쇄"
#. this is one of the choices for the print at option in the print dialog #. this is one of the choices for the print at option in the print dialog
#: gtk/ui/gtkprintunixdialog.ui:1194 #: gtk/ui/gtkprintunixdialog.ui:1192
msgid "_Now" msgid "_Now"
msgstr "지금(_N)" msgstr "지금(_N)"
#. this is one of the choices for the print at option in the print dialog. It also serves as the label for an entry that allows the user to enter a time. #. this is one of the choices for the print at option in the print dialog. It also serves as the label for an entry that allows the user to enter a time.
#: gtk/ui/gtkprintunixdialog.ui:1213 #: gtk/ui/gtkprintunixdialog.ui:1211
msgid "A_t:" msgid "A_t:"
msgstr "시각(_T):" msgstr "시각(_T):"
@@ -5368,9 +5376,9 @@ msgstr "시각(_T):"
# ( https://bugzilla.gnome.org/show_bug.cgi?id=568571 ) # ( https://bugzilla.gnome.org/show_bug.cgi?id=568571 )
# #
#. Ability to parse the am/pm format depends on actual locale. You can remove the am/pm values below for your locale if they are not supported. #. Ability to parse the am/pm format depends on actual locale. You can remove the am/pm values below for your locale if they are not supported.
#: gtk/ui/gtkprintunixdialog.ui:1218 gtk/ui/gtkprintunixdialog.ui:1220 #: gtk/ui/gtkprintunixdialog.ui:1216 gtk/ui/gtkprintunixdialog.ui:1218
#: gtk/ui/gtkprintunixdialog.ui:1242 gtk/ui/gtkprintunixdialog.ui:1244 #: gtk/ui/gtkprintunixdialog.ui:1240 gtk/ui/gtkprintunixdialog.ui:1242
#: gtk/ui/gtkprintunixdialog.ui:1251 #: gtk/ui/gtkprintunixdialog.ui:1249
msgid "" msgid ""
"Specify the time of print,\n" "Specify the time of print,\n"
" e.g. 1530, 235 pm, 141520, 114630 am, 4 pm" " e.g. 1530, 235 pm, 141520, 114630 am, 4 pm"
@@ -5378,58 +5386,58 @@ msgstr ""
"인쇄 시각을 지정합니다.\n" "인쇄 시각을 지정합니다.\n"
" 예) 1530, 오후 235, 141520, 오전 114630, 오후 4" " 예) 1530, 오후 235, 141520, 오전 114630, 오후 4"
#: gtk/ui/gtkprintunixdialog.ui:1250 #: gtk/ui/gtkprintunixdialog.ui:1248
msgid "Time of print" msgid "Time of print"
msgstr "인쇄 시각" msgstr "인쇄 시각"
#. this is one of the choices for the print at option in the print dialog. It means that the print job will not be printed until it explicitly gets 'released'. #. this is one of the choices for the print at option in the print dialog. It means that the print job will not be printed until it explicitly gets 'released'.
#: gtk/ui/gtkprintunixdialog.ui:1266 #: gtk/ui/gtkprintunixdialog.ui:1264
msgid "On _hold" msgid "On _hold"
msgstr "보류(_H)" msgstr "보류(_H)"
#: gtk/ui/gtkprintunixdialog.ui:1271 gtk/ui/gtkprintunixdialog.ui:1272 #: gtk/ui/gtkprintunixdialog.ui:1269 gtk/ui/gtkprintunixdialog.ui:1270
msgid "Hold the job until it is explicitly released" msgid "Hold the job until it is explicitly released"
msgstr "작업 보류, 직접 보류 상태를 풀 때까지" msgstr "작업 보류, 직접 보류 상태를 풀 때까지"
#: gtk/ui/gtkprintunixdialog.ui:1316 #: gtk/ui/gtkprintunixdialog.ui:1314
msgid "Add Cover Page" msgid "Add Cover Page"
msgstr "표지 사용" msgstr "표지 사용"
#. this is the label used for the option in the print dialog that controls the front cover page. #. this is the label used for the option in the print dialog that controls the front cover page.
#: gtk/ui/gtkprintunixdialog.ui:1343 #: gtk/ui/gtkprintunixdialog.ui:1341
msgid "Be_fore:" msgid "Be_fore:"
msgstr "앞에(_F):" msgstr "앞에(_F):"
#. this is the label used for the option in the print dialog that controls the back cover page. #. this is the label used for the option in the print dialog that controls the back cover page.
#: gtk/ui/gtkprintunixdialog.ui:1375 #: gtk/ui/gtkprintunixdialog.ui:1373
msgid "_After:" msgid "_After:"
msgstr "뒤에(_A):" msgstr "뒤에(_A):"
#: gtk/ui/gtkprintunixdialog.ui:1431 #: gtk/ui/gtkprintunixdialog.ui:1429
msgid "Job" msgid "Job"
msgstr "작업" msgstr "작업"
#. This will appear as a tab label in the print dialog. #. This will appear as a tab label in the print dialog.
#: gtk/ui/gtkprintunixdialog.ui:1495 #: gtk/ui/gtkprintunixdialog.ui:1493
msgid "Image Quality" msgid "Image Quality"
msgstr "그림 화질" msgstr "그림 화질"
#. This will appear as a tab label in the print dialog. #. This will appear as a tab label in the print dialog.
#: gtk/ui/gtkprintunixdialog.ui:1559 #: gtk/ui/gtkprintunixdialog.ui:1557
msgid "Color" msgid "Color"
msgstr "색" msgstr "색"
#. This will appear as a tab label in the print dialog. #. This will appear as a tab label in the print dialog.
#. It's a typographical term, as in "Binding and finishing" #. It's a typographical term, as in "Binding and finishing"
#: gtk/ui/gtkprintunixdialog.ui:1623 #: gtk/ui/gtkprintunixdialog.ui:1621
msgid "Finishing" msgid "Finishing"
msgstr "마무리" msgstr "마무리"
#: gtk/ui/gtkprintunixdialog.ui:1669 #: gtk/ui/gtkprintunixdialog.ui:1667
msgid "Advanced" msgid "Advanced"
msgstr "고급" msgstr "고급"
#: gtk/ui/gtkprintunixdialog.ui:1698 #: gtk/ui/gtkprintunixdialog.ui:1696
msgid "Some of the settings in the dialog conflict" msgid "Some of the settings in the dialog conflict"
msgstr "대화 상자의 설정이 충돌합니다" msgstr "대화 상자의 설정이 충돌합니다"
+3187 -2045
View File
File diff suppressed because it is too large Load Diff
+130 -122
View File
@@ -18,8 +18,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gtk+\n" "Project-Id-Version: gtk+\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-03-05 23:44+0100\n" "POT-Creation-Date: 2015-03-23 17:28+0100\n"
"PO-Revision-Date: 2015-03-05 23:47+0100\n" "PO-Revision-Date: 2015-03-23 17:29+0100\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <gnomepl@aviary.pl>\n" "Language-Team: Polish <gnomepl@aviary.pl>\n"
"Language: pl\n" "Language: pl\n"
@@ -94,7 +94,7 @@ msgstr "ZNACZNIKI"
msgid "GDK debugging flags to unset" msgid "GDK debugging flags to unset"
msgstr "Wyczyszczone znaczniki debugowania biblioteki GDK" msgstr "Wyczyszczone znaczniki debugowania biblioteki GDK"
#: gdk/gdkwindow.c:2736 #: gdk/gdkwindow.c:2739
msgid "GL support disabled via GDK_DEBUG" msgid "GL support disabled via GDK_DEBUG"
msgstr "Obsługa GL została wyłączona przez zmienną GDK_DEBUG" msgstr "Obsługa GL została wyłączona przez zmienną GDK_DEBUG"
@@ -1044,6 +1044,10 @@ msgctxt "Stock label"
msgid "Zoom _Out" msgid "Zoom _Out"
msgstr "Po_mniejsz" msgstr "Po_mniejsz"
#: gtk/a11y/gtkmenubuttonaccessible.c:102 gtk/inspector/window.ui:356
msgid "Menu"
msgstr "Menu"
#: gtk/a11y/gtkmenuitemaccessible.c:445 #: gtk/a11y/gtkmenuitemaccessible.c:445
msgctxt "Action description" msgctxt "Action description"
msgid "Clicks the menuitem" msgid "Clicks the menuitem"
@@ -1222,7 +1226,7 @@ msgstr ""
#: gtk/gtkmountoperation.c:543 gtk/gtkpagesetupunixdialog.c:196 #: gtk/gtkmountoperation.c:543 gtk/gtkpagesetupunixdialog.c:196
#: gtk/gtkprintbackend.c:763 gtk/gtkprinteroptionwidget.c:545 #: gtk/gtkprintbackend.c:763 gtk/gtkprinteroptionwidget.c:545
#: gtk/gtkprintunixdialog.c:665 gtk/gtkprintunixdialog.c:738 #: gtk/gtkprintunixdialog.c:665 gtk/gtkprintunixdialog.c:738
#: gtk/gtkwindow.c:11907 gtk/inspector/css-editor.c:199 #: gtk/gtkwindow.c:11925 gtk/inspector/css-editor.c:199
#: gtk/ui/gtkappchooserdialog.ui:79 gtk/ui/gtkassistant.ui:169 #: gtk/ui/gtkappchooserdialog.ui:79 gtk/ui/gtkassistant.ui:169
#: gtk/ui/gtkcolorchooserdialog.ui:38 gtk/ui/gtkfontchooserdialog.ui:35 #: gtk/ui/gtkcolorchooserdialog.ui:38 gtk/ui/gtkfontchooserdialog.ui:35
msgid "_Cancel" msgid "_Cancel"
@@ -1271,7 +1275,7 @@ msgid "_Apply"
msgstr "_Zastosuj" msgstr "_Zastosuj"
#: gtk/deprecated/gtkfontsel.c:1698 gtk/gtkmessagedialog.c:936 #: gtk/deprecated/gtkfontsel.c:1698 gtk/gtkmessagedialog.c:936
#: gtk/gtkmessagedialog.c:958 gtk/gtkprintbackend.c:764 gtk/gtkwindow.c:11908 #: gtk/gtkmessagedialog.c:958 gtk/gtkprintbackend.c:764 gtk/gtkwindow.c:11926
#: gtk/inspector/classes-list.c:127 #: gtk/inspector/classes-list.c:127
msgid "_OK" msgid "_OK"
msgstr "_OK" msgstr "_OK"
@@ -2128,30 +2132,30 @@ msgstr "_Prawy:"
msgid "Paper Margins" msgid "Paper Margins"
msgstr "Marginesy papieru" msgstr "Marginesy papieru"
#: gtk/gtkentry.c:9626 gtk/gtkentry.c:9779 gtk/gtklabel.c:6597 #: gtk/gtkentry.c:9615 gtk/gtkentry.c:9768 gtk/gtklabel.c:6596
#: gtk/gtktextview.c:9037 gtk/gtktextview.c:9225 #: gtk/gtktextview.c:9037 gtk/gtktextview.c:9225
msgid "Cu_t" msgid "Cu_t"
msgstr "_Wytnij" msgstr "_Wytnij"
#: gtk/gtkentry.c:9630 gtk/gtkentry.c:9782 gtk/gtklabel.c:6598 #: gtk/gtkentry.c:9619 gtk/gtkentry.c:9771 gtk/gtklabel.c:6597
#: gtk/gtktextview.c:9041 gtk/gtktextview.c:9229 #: gtk/gtktextview.c:9041 gtk/gtktextview.c:9229
msgid "_Copy" msgid "_Copy"
msgstr "S_kopiuj" msgstr "S_kopiuj"
#: gtk/gtkentry.c:9634 gtk/gtkentry.c:9785 gtk/gtklabel.c:6599 #: gtk/gtkentry.c:9623 gtk/gtkentry.c:9774 gtk/gtklabel.c:6598
#: gtk/gtktextview.c:9043 gtk/gtktextview.c:9231 #: gtk/gtktextview.c:9043 gtk/gtktextview.c:9231
msgid "_Paste" msgid "_Paste"
msgstr "Wk_lej" msgstr "Wk_lej"
#: gtk/gtkentry.c:9637 gtk/gtklabel.c:6601 gtk/gtktextview.c:9046 #: gtk/gtkentry.c:9626 gtk/gtklabel.c:6600 gtk/gtktextview.c:9046
msgid "_Delete" msgid "_Delete"
msgstr "_Usuń" msgstr "_Usuń"
#: gtk/gtkentry.c:9648 gtk/gtklabel.c:6610 gtk/gtktextview.c:9060 #: gtk/gtkentry.c:9637 gtk/gtklabel.c:6609 gtk/gtktextview.c:9060
msgid "Select _All" msgid "Select _All"
msgstr "Z_aznacz wszystko" msgstr "Z_aznacz wszystko"
#: gtk/gtkentry.c:10848 #: gtk/gtkentry.c:10835
msgid "Caps Lock is on" msgid "Caps Lock is on"
msgstr "Klawisz Caps Lock jest włączony" msgstr "Klawisz Caps Lock jest włączony"
@@ -2171,7 +2175,7 @@ msgstr "(Brak)"
msgid "_Open" msgid "_Open"
msgstr "_Otwórz" msgstr "_Otwórz"
#: gtk/gtkfilechooserbutton.c:2137 #: gtk/gtkfilechooserbutton.c:2138
msgid "Other…" msgid "Other…"
msgstr "Inne…" msgstr "Inne…"
@@ -2374,7 +2378,7 @@ msgstr "Wybór czcionki"
#: gtk/gtkfontbutton.c:1182 gtk/inspector/general.c:226 #: gtk/gtkfontbutton.c:1182 gtk/inspector/general.c:226
#: gtk/inspector/general.c:227 gtk/inspector/gestures.c:128 #: gtk/inspector/general.c:227 gtk/inspector/gestures.c:128
#: gtk/inspector/prop-editor.c:1200 gtk/inspector/size-groups.c:252 #: gtk/inspector/prop-editor.c:1200 gtk/inspector/size-groups.c:252
#: modules/printbackends/cups/gtkprintbackendcups.c:5208 #: modules/printbackends/cups/gtkprintbackendcups.c:5224
msgid "None" msgid "None"
msgstr "Brak" msgstr "Brak"
@@ -2386,7 +2390,7 @@ msgstr "Utworzenie kontekstu OpenGL się nie powiodło"
msgid "Application menu" msgid "Application menu"
msgstr "Menu programu" msgstr "Menu programu"
#: gtk/gtkheaderbar.c:479 gtk/gtkwindow.c:8581 #: gtk/gtkheaderbar.c:479 gtk/gtkwindow.c:8586
msgid "Close" msgid "Close"
msgstr "Zamknij" msgstr "Zamknij"
@@ -2437,12 +2441,12 @@ msgid "Error"
msgstr "Błąd" msgstr "Błąd"
#. Open Link #. Open Link
#: gtk/gtklabel.c:6578 #: gtk/gtklabel.c:6577
msgid "_Open Link" msgid "_Open Link"
msgstr "_Otwórz odnośnik" msgstr "_Otwórz odnośnik"
#. Copy Link Address #. Copy Link Address
#: gtk/gtklabel.c:6587 #: gtk/gtklabel.c:6586
msgid "Copy _Link Address" msgid "Copy _Link Address"
msgstr "S_kopiuj adres odnośnika" msgstr "S_kopiuj adres odnośnika"
@@ -2585,10 +2589,6 @@ msgstr "Wyświetla opcje biblioteki GTK+"
msgid "default:LTR" msgid "default:LTR"
msgstr "default:LTR" msgstr "default:LTR"
#: gtk/gtkmenubutton.c:640 gtk/inspector/window.ui:356
msgid "Menu"
msgstr "Menu"
#: gtk/gtkmessagedialog.c:948 #: gtk/gtkmessagedialog.c:948
msgid "_No" msgid "_No"
msgstr "_Nie" msgstr "_Nie"
@@ -2683,12 +2683,12 @@ msgstr "Powłoka Z"
msgid "Cannot end process with PID %d: %s" msgid "Cannot end process with PID %d: %s"
msgstr "Nie można zakończyć procesu o PID %d: %s" msgstr "Nie można zakończyć procesu o PID %d: %s"
#: gtk/gtknotebook.c:5165 gtk/gtknotebook.c:7893 #: gtk/gtknotebook.c:5173 gtk/gtknotebook.c:7904
#, c-format #, c-format
msgid "Page %u" msgid "Page %u"
msgstr "Strona %u" msgstr "Strona %u"
#: gtk/gtkpagesetup.c:652 gtk/gtkpapersize.c:985 gtk/gtkpapersize.c:1025 #: gtk/gtkpagesetup.c:652 gtk/gtkpapersize.c:986 gtk/gtkpapersize.c:1026
msgid "Not a valid page setup file" msgid "Not a valid page setup file"
msgstr "Nieprawidłowy plik ustawień strony" msgstr "Nieprawidłowy plik ustawień strony"
@@ -2916,7 +2916,7 @@ msgstr "Wy_suń"
msgid "_Detect Media" msgid "_Detect Media"
msgstr "Wy_kryj nośnik" msgstr "Wy_kryj nośnik"
#: gtk/gtkplacessidebar.c:4167 #: gtk/gtkplacessidebar.c:4165
msgid "Computer" msgid "Computer"
msgstr "Komputer" msgstr "Komputer"
@@ -3029,7 +3029,7 @@ msgstr "Brak papieru"
#. Translators: this is a printer status. #. Translators: this is a printer status.
#: gtk/gtkprintoperation-win32.c:620 #: gtk/gtkprintoperation-win32.c:620
#: modules/printbackends/cups/gtkprintbackendcups.c:2493 #: modules/printbackends/cups/gtkprintbackendcups.c:2509
msgid "Paused" msgid "Paused"
msgstr "Wstrzymane" msgstr "Wstrzymane"
@@ -3097,42 +3097,42 @@ msgstr "Pobieranie informacji o drukarce…"
#. * multiple pages on a sheet when printing #. * multiple pages on a sheet when printing
#. #.
#: gtk/gtkprintunixdialog.c:3101 #: gtk/gtkprintunixdialog.c:3101
#: modules/printbackends/cups/gtkprintbackendcups.c:5157 #: modules/printbackends/cups/gtkprintbackendcups.c:5173
msgid "Left to right, top to bottom" msgid "Left to right, top to bottom"
msgstr "Od lewej do prawej, z góry do dołu" msgstr "Od lewej do prawej, z góry do dołu"
#: gtk/gtkprintunixdialog.c:3101 #: gtk/gtkprintunixdialog.c:3101
#: modules/printbackends/cups/gtkprintbackendcups.c:5157 #: modules/printbackends/cups/gtkprintbackendcups.c:5173
msgid "Left to right, bottom to top" msgid "Left to right, bottom to top"
msgstr "Od lewej do prawej, z dołu na górę" msgstr "Od lewej do prawej, z dołu na górę"
#: gtk/gtkprintunixdialog.c:3102 #: gtk/gtkprintunixdialog.c:3102
#: modules/printbackends/cups/gtkprintbackendcups.c:5158 #: modules/printbackends/cups/gtkprintbackendcups.c:5174
msgid "Right to left, top to bottom" msgid "Right to left, top to bottom"
msgstr "Od prawej do lewej, z góry na dół" msgstr "Od prawej do lewej, z góry na dół"
#: gtk/gtkprintunixdialog.c:3102 #: gtk/gtkprintunixdialog.c:3102
#: modules/printbackends/cups/gtkprintbackendcups.c:5158 #: modules/printbackends/cups/gtkprintbackendcups.c:5174
msgid "Right to left, bottom to top" msgid "Right to left, bottom to top"
msgstr "Od prawej do lewej, z dołu na górę" msgstr "Od prawej do lewej, z dołu na górę"
#: gtk/gtkprintunixdialog.c:3103 #: gtk/gtkprintunixdialog.c:3103
#: modules/printbackends/cups/gtkprintbackendcups.c:5159 #: modules/printbackends/cups/gtkprintbackendcups.c:5175
msgid "Top to bottom, left to right" msgid "Top to bottom, left to right"
msgstr "Z góry do dołu, od lewej do prawej" msgstr "Z góry do dołu, od lewej do prawej"
#: gtk/gtkprintunixdialog.c:3103 #: gtk/gtkprintunixdialog.c:3103
#: modules/printbackends/cups/gtkprintbackendcups.c:5159 #: modules/printbackends/cups/gtkprintbackendcups.c:5175
msgid "Top to bottom, right to left" msgid "Top to bottom, right to left"
msgstr "Z góry do dołu, od prawej do lewej" msgstr "Z góry do dołu, od prawej do lewej"
#: gtk/gtkprintunixdialog.c:3104 #: gtk/gtkprintunixdialog.c:3104
#: modules/printbackends/cups/gtkprintbackendcups.c:5160 #: modules/printbackends/cups/gtkprintbackendcups.c:5176
msgid "Bottom to top, left to right" msgid "Bottom to top, left to right"
msgstr "Z dołu do góry, od lewej do prawej" msgstr "Z dołu do góry, od lewej do prawej"
#: gtk/gtkprintunixdialog.c:3104 #: gtk/gtkprintunixdialog.c:3104
#: modules/printbackends/cups/gtkprintbackendcups.c:5160 #: modules/printbackends/cups/gtkprintbackendcups.c:5176
msgid "Bottom to top, right to left" msgid "Bottom to top, right to left"
msgstr "Z dołu do góry, od prawej do lewej" msgstr "Z dołu do góry, od prawej do lewej"
@@ -3140,7 +3140,7 @@ msgstr "Z dołu do góry, od prawej do lewej"
#. * dialog that controls in what order multiple pages are arranged #. * dialog that controls in what order multiple pages are arranged
#. #.
#: gtk/gtkprintunixdialog.c:3108 gtk/gtkprintunixdialog.c:3121 #: gtk/gtkprintunixdialog.c:3108 gtk/gtkprintunixdialog.c:3121
#: modules/printbackends/cups/gtkprintbackendcups.c:5237 #: modules/printbackends/cups/gtkprintbackendcups.c:5253
msgid "Page Ordering" msgid "Page Ordering"
msgstr "Kolejność stron" msgstr "Kolejność stron"
@@ -3275,7 +3275,7 @@ msgstr "Wyszukaj"
#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for #. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for
#. * the state #. * the state
#. #.
#: gtk/gtkswitch.c:379 gtk/gtkswitch.c:431 gtk/gtkswitch.c:606 #: gtk/gtkswitch.c:379 gtk/gtkswitch.c:431 gtk/gtkswitch.c:605
msgctxt "switch" msgctxt "switch"
msgid "ON" msgid "ON"
msgstr "|" msgstr "|"
@@ -3284,7 +3284,7 @@ msgstr "|"
#. Translators: if the "off" state label requires more than three #. Translators: if the "off" state label requires more than three
#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state #. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state
#. #.
#: gtk/gtkswitch.c:387 gtk/gtkswitch.c:432 gtk/gtkswitch.c:621 #: gtk/gtkswitch.c:387 gtk/gtkswitch.c:432 gtk/gtkswitch.c:620
msgctxt "switch" msgctxt "switch"
msgid "OFF" msgid "OFF"
msgstr "◯" msgstr "◯"
@@ -3470,12 +3470,12 @@ msgctxt "volume percentage"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: gtk/gtkwindow.c:11895 #: gtk/gtkwindow.c:11913
#, c-format #, c-format
msgid "Do you want to use GTK+ Inspector?" msgid "Do you want to use GTK+ Inspector?"
msgstr "Użyć Inspektora biblioteki GTK+?" msgstr "Użyć Inspektora biblioteki GTK+?"
#: gtk/gtkwindow.c:11897 #: gtk/gtkwindow.c:11915
#, c-format #, c-format
msgid "" msgid ""
"GTK+ Inspector is an interactive debugger that lets you explore and modify " "GTK+ Inspector is an interactive debugger that lets you explore and modify "
@@ -3486,7 +3486,7 @@ msgstr ""
"i modyfikowanie wnętrza programu GTK+. Jego użycie może spowodować awarię " "i modyfikowanie wnętrza programu GTK+. Jego użycie może spowodować awarię "
"lub uszkodzenie programu." "lub uszkodzenie programu."
#: gtk/gtkwindow.c:11902 #: gtk/gtkwindow.c:11920
msgid "Don't show this message again" msgid "Don't show this message again"
msgstr "Bez wyświetlania ponownie" msgstr "Bez wyświetlania ponownie"
@@ -3691,18 +3691,26 @@ msgid "Accessible role"
msgstr "Rola dostępności" msgstr "Rola dostępności"
#: gtk/inspector/misc-info.ui:507 #: gtk/inspector/misc-info.ui:507
msgid "Accessible name"
msgstr "Nazwa dostępności"
#: gtk/inspector/misc-info.ui:541
msgid "Accessible description"
msgstr "Opis dostępności"
#: gtk/inspector/misc-info.ui:575
msgid "Mapped" msgid "Mapped"
msgstr "Mapowane" msgstr "Mapowane"
#: gtk/inspector/misc-info.ui:543 #: gtk/inspector/misc-info.ui:611
msgid "Realized" msgid "Realized"
msgstr "Zrealizowane" msgstr "Zrealizowane"
#: gtk/inspector/misc-info.ui:579 #: gtk/inspector/misc-info.ui:647
msgid "Is Toplevel" msgid "Is Toplevel"
msgstr "Jest najwyższego poziomu" msgstr "Jest najwyższego poziomu"
#: gtk/inspector/misc-info.ui:615 #: gtk/inspector/misc-info.ui:683
msgid "Child Visible" msgid "Child Visible"
msgstr "Element potomny jest widoczny" msgstr "Element potomny jest widoczny"
@@ -3905,7 +3913,7 @@ msgstr "Własny"
msgid "Cumulative" msgid "Cumulative"
msgstr "Przyrastający" msgstr "Przyrastający"
#: gtk/inspector/statistics.ui:164 #: gtk/inspector/statistics.ui:165
msgid "Enable statistics with GOBJECT_DEBUG=instance-count" msgid "Enable statistics with GOBJECT_DEBUG=instance-count"
msgstr "Włączenie statystyk za pomocą zmiennej GOBJECT_DEBUG=instance-count" msgstr "Włączenie statystyk za pomocą zmiennej GOBJECT_DEBUG=instance-count"
@@ -4061,7 +4069,7 @@ msgstr "Wyświetla wszystkie zasoby"
#. Translators: "Miscellaneous" is the label for a button, that opens #. Translators: "Miscellaneous" is the label for a button, that opens
#. up an extra panel of settings in a print dialog. #. up an extra panel of settings in a print dialog.
#: gtk/inspector/window.ui:257 #: gtk/inspector/window.ui:257
#: modules/printbackends/cups/gtkprintbackendcups.c:4272 #: modules/printbackends/cups/gtkprintbackendcups.c:4288
msgid "Miscellaneous" msgid "Miscellaneous"
msgstr "Różne" msgstr "Różne"
@@ -5660,253 +5668,253 @@ msgstr "Bezczynna"
msgid "Pages per _sheet:" msgid "Pages per _sheet:"
msgstr "Stron _na kartkę:" msgstr "Stron _na kartkę:"
#: modules/printbackends/cups/gtkprintbackendcups.c:1074 #: modules/printbackends/cups/gtkprintbackendcups.c:1090
#: modules/printbackends/cups/gtkprintbackendcups.c:1383 #: modules/printbackends/cups/gtkprintbackendcups.c:1399
msgid "Username:" msgid "Username:"
msgstr "Nazwa użytkownika:" msgstr "Nazwa użytkownika:"
#: modules/printbackends/cups/gtkprintbackendcups.c:1075 #: modules/printbackends/cups/gtkprintbackendcups.c:1091
#: modules/printbackends/cups/gtkprintbackendcups.c:1392 #: modules/printbackends/cups/gtkprintbackendcups.c:1408
msgid "Password:" msgid "Password:"
msgstr "Hasło:" msgstr "Hasło:"
#: modules/printbackends/cups/gtkprintbackendcups.c:1114 #: modules/printbackends/cups/gtkprintbackendcups.c:1130
#: modules/printbackends/cups/gtkprintbackendcups.c:1405 #: modules/printbackends/cups/gtkprintbackendcups.c:1421
#, c-format #, c-format
msgid "Authentication is required to print document “%s” on printer %s" msgid "Authentication is required to print document “%s” on printer %s"
msgstr "" msgstr ""
"Wymagane jest uwierzytelnienie, aby wydrukować dokument \"%s\" na drukarce %s" "Wymagane jest uwierzytelnienie, aby wydrukować dokument \"%s\" na drukarce %s"
#: modules/printbackends/cups/gtkprintbackendcups.c:1116 #: modules/printbackends/cups/gtkprintbackendcups.c:1132
#, c-format #, c-format
msgid "Authentication is required to print a document on %s" msgid "Authentication is required to print a document on %s"
msgstr "Wymagane jest uwierzytelnienie, aby wydrukować dokument na %s" msgstr "Wymagane jest uwierzytelnienie, aby wydrukować dokument na %s"
#: modules/printbackends/cups/gtkprintbackendcups.c:1120 #: modules/printbackends/cups/gtkprintbackendcups.c:1136
#, c-format #, c-format
msgid "Authentication is required to get attributes of job “%s”" msgid "Authentication is required to get attributes of job “%s”"
msgstr "Wymagane jest uwierzytelnienie, aby pobrać atrybuty zadania \"%s\"" msgstr "Wymagane jest uwierzytelnienie, aby pobrać atrybuty zadania \"%s\""
#: modules/printbackends/cups/gtkprintbackendcups.c:1122 #: modules/printbackends/cups/gtkprintbackendcups.c:1138
msgid "Authentication is required to get attributes of a job" msgid "Authentication is required to get attributes of a job"
msgstr "Wymagane jest uwierzytelnienie, aby pobrać atrybuty zadania" msgstr "Wymagane jest uwierzytelnienie, aby pobrać atrybuty zadania"
#: modules/printbackends/cups/gtkprintbackendcups.c:1126 #: modules/printbackends/cups/gtkprintbackendcups.c:1142
#, c-format #, c-format
msgid "Authentication is required to get attributes of printer %s" msgid "Authentication is required to get attributes of printer %s"
msgstr "Wymagane jest uwierzytelnienie, aby pobrać atrybuty drukarki %s" msgstr "Wymagane jest uwierzytelnienie, aby pobrać atrybuty drukarki %s"
#: modules/printbackends/cups/gtkprintbackendcups.c:1128 #: modules/printbackends/cups/gtkprintbackendcups.c:1144
msgid "Authentication is required to get attributes of a printer" msgid "Authentication is required to get attributes of a printer"
msgstr "Wymagane jest uwierzytelnienie, aby pobrać atrybuty drukarki" msgstr "Wymagane jest uwierzytelnienie, aby pobrać atrybuty drukarki"
#: modules/printbackends/cups/gtkprintbackendcups.c:1131 #: modules/printbackends/cups/gtkprintbackendcups.c:1147
#, c-format #, c-format
msgid "Authentication is required to get default printer of %s" msgid "Authentication is required to get default printer of %s"
msgstr "Wymagane jest uwierzytelnienie, aby pobrać domyślną drukarkę z %s" msgstr "Wymagane jest uwierzytelnienie, aby pobrać domyślną drukarkę z %s"
#: modules/printbackends/cups/gtkprintbackendcups.c:1134 #: modules/printbackends/cups/gtkprintbackendcups.c:1150
#, c-format #, c-format
msgid "Authentication is required to get printers from %s" msgid "Authentication is required to get printers from %s"
msgstr "Wymagane jest uwierzytelnienie, aby pobrać drukarki od %s" msgstr "Wymagane jest uwierzytelnienie, aby pobrać drukarki od %s"
#: modules/printbackends/cups/gtkprintbackendcups.c:1139 #: modules/printbackends/cups/gtkprintbackendcups.c:1155
#, c-format #, c-format
msgid "Authentication is required to get a file from %s" msgid "Authentication is required to get a file from %s"
msgstr "Wymagane jest uwierzytelnienie, aby pobrać plik z %s" msgstr "Wymagane jest uwierzytelnienie, aby pobrać plik z %s"
#: modules/printbackends/cups/gtkprintbackendcups.c:1141 #: modules/printbackends/cups/gtkprintbackendcups.c:1157
#, c-format #, c-format
msgid "Authentication is required on %s" msgid "Authentication is required on %s"
msgstr "Wymagane jest uwierzytelnienie na %s" msgstr "Wymagane jest uwierzytelnienie na %s"
#: modules/printbackends/cups/gtkprintbackendcups.c:1377 #: modules/printbackends/cups/gtkprintbackendcups.c:1393
msgid "Domain:" msgid "Domain:"
msgstr "Domena:" msgstr "Domena:"
#: modules/printbackends/cups/gtkprintbackendcups.c:1407 #: modules/printbackends/cups/gtkprintbackendcups.c:1423
#, c-format #, c-format
msgid "Authentication is required to print document “%s”" msgid "Authentication is required to print document “%s”"
msgstr "Wymagane jest uwierzytelnienie, aby wydrukować dokument \"%s\"" msgstr "Wymagane jest uwierzytelnienie, aby wydrukować dokument \"%s\""
#: modules/printbackends/cups/gtkprintbackendcups.c:1412 #: modules/printbackends/cups/gtkprintbackendcups.c:1428
#, c-format #, c-format
msgid "Authentication is required to print this document on printer %s" msgid "Authentication is required to print this document on printer %s"
msgstr "" msgstr ""
"Wymagane jest uwierzytelnienie, aby wydrukować ten dokument na drukarce %s" "Wymagane jest uwierzytelnienie, aby wydrukować ten dokument na drukarce %s"
#: modules/printbackends/cups/gtkprintbackendcups.c:1414 #: modules/printbackends/cups/gtkprintbackendcups.c:1430
msgid "Authentication is required to print this document" msgid "Authentication is required to print this document"
msgstr "Wymagane jest uwierzytelnienie, aby wydrukować dokument" msgstr "Wymagane jest uwierzytelnienie, aby wydrukować dokument"
#: modules/printbackends/cups/gtkprintbackendcups.c:1851 #: modules/printbackends/cups/gtkprintbackendcups.c:1867
#, c-format #, c-format
msgid "Printer “%s” is low on toner." msgid "Printer “%s” is low on toner."
msgstr "W drukarce \"%s\" kończy się toner." msgstr "W drukarce \"%s\" kończy się toner."
#: modules/printbackends/cups/gtkprintbackendcups.c:1852 #: modules/printbackends/cups/gtkprintbackendcups.c:1868
#, c-format #, c-format
msgid "Printer “%s” has no toner left." msgid "Printer “%s” has no toner left."
msgstr "W drukarce \"%s\" skończył się toner." msgstr "W drukarce \"%s\" skończył się toner."
#. Translators: "Developer" like on photo development context #. Translators: "Developer" like on photo development context
#: modules/printbackends/cups/gtkprintbackendcups.c:1854 #: modules/printbackends/cups/gtkprintbackendcups.c:1870
#, c-format #, c-format
msgid "Printer “%s” is low on developer." msgid "Printer “%s” is low on developer."
msgstr "Niski poziom wywoływacza w drukarce \"%s\"." msgstr "Niski poziom wywoływacza w drukarce \"%s\"."
#. Translators: "Developer" like on photo development context #. Translators: "Developer" like on photo development context
#: modules/printbackends/cups/gtkprintbackendcups.c:1856 #: modules/printbackends/cups/gtkprintbackendcups.c:1872
#, c-format #, c-format
msgid "Printer “%s” is out of developer." msgid "Printer “%s” is out of developer."
msgstr "Brak wywoływacza w drukarce \"%s\"." msgstr "Brak wywoływacza w drukarce \"%s\"."
#. Translators: "marker" is one color bin of the printer #. Translators: "marker" is one color bin of the printer
#: modules/printbackends/cups/gtkprintbackendcups.c:1858 #: modules/printbackends/cups/gtkprintbackendcups.c:1874
#, c-format #, c-format
msgid "Printer “%s” is low on at least one marker supply." msgid "Printer “%s” is low on at least one marker supply."
msgstr "W drukarce \"%s\" kończy się co najmniej jedna składowa kolorów." msgstr "W drukarce \"%s\" kończy się co najmniej jedna składowa kolorów."
#. Translators: "marker" is one color bin of the printer #. Translators: "marker" is one color bin of the printer
#: modules/printbackends/cups/gtkprintbackendcups.c:1860 #: modules/printbackends/cups/gtkprintbackendcups.c:1876
#, c-format #, c-format
msgid "Printer “%s” is out of at least one marker supply." msgid "Printer “%s” is out of at least one marker supply."
msgstr "W drukarce \"%s\" skończyła się co najmniej jedna składowa kolorów." msgstr "W drukarce \"%s\" skończyła się co najmniej jedna składowa kolorów."
#: modules/printbackends/cups/gtkprintbackendcups.c:1861 #: modules/printbackends/cups/gtkprintbackendcups.c:1877
#, c-format #, c-format
msgid "The cover is open on printer “%s”." msgid "The cover is open on printer “%s”."
msgstr "Pokrywa drukarki \"%s\" jest otwarta." msgstr "Pokrywa drukarki \"%s\" jest otwarta."
#: modules/printbackends/cups/gtkprintbackendcups.c:1862 #: modules/printbackends/cups/gtkprintbackendcups.c:1878
#, c-format #, c-format
msgid "The door is open on printer “%s”." msgid "The door is open on printer “%s”."
msgstr "Drzwiczki drukarki \"%s\" są otwarte." msgstr "Drzwiczki drukarki \"%s\" są otwarte."
#: modules/printbackends/cups/gtkprintbackendcups.c:1863 #: modules/printbackends/cups/gtkprintbackendcups.c:1879
#, c-format #, c-format
msgid "Printer “%s” is low on paper." msgid "Printer “%s” is low on paper."
msgstr "W podajniku drukarki \"%s\" kończy się papier." msgstr "W podajniku drukarki \"%s\" kończy się papier."
#: modules/printbackends/cups/gtkprintbackendcups.c:1864 #: modules/printbackends/cups/gtkprintbackendcups.c:1880
#, c-format #, c-format
msgid "Printer “%s” is out of paper." msgid "Printer “%s” is out of paper."
msgstr "W podajniku drukarki \"%s\" skończył się papier." msgstr "W podajniku drukarki \"%s\" skończył się papier."
#: modules/printbackends/cups/gtkprintbackendcups.c:1865 #: modules/printbackends/cups/gtkprintbackendcups.c:1881
#, c-format #, c-format
msgid "Printer “%s” is currently offline." msgid "Printer “%s” is currently offline."
msgstr "Drukarka \"%s\" jest obecnie w trybie offline." msgstr "Drukarka \"%s\" jest obecnie w trybie offline."
#: modules/printbackends/cups/gtkprintbackendcups.c:1866 #: modules/printbackends/cups/gtkprintbackendcups.c:1882
#, c-format #, c-format
msgid "There is a problem on printer “%s”." msgid "There is a problem on printer “%s”."
msgstr "Wystąpił problem z drukarką \"%s\"." msgstr "Wystąpił problem z drukarką \"%s\"."
#. Translators: this is a printer status. #. Translators: this is a printer status.
#: modules/printbackends/cups/gtkprintbackendcups.c:2490 #: modules/printbackends/cups/gtkprintbackendcups.c:2506
msgid "Paused; Rejecting Jobs" msgid "Paused; Rejecting Jobs"
msgstr "Wstrzymana, Odrzuca zadania" msgstr "Wstrzymana, Odrzuca zadania"
#. Translators: this is a printer status. #. Translators: this is a printer status.
#: modules/printbackends/cups/gtkprintbackendcups.c:2496 #: modules/printbackends/cups/gtkprintbackendcups.c:2512
msgid "Rejecting Jobs" msgid "Rejecting Jobs"
msgstr "Odrzuca zadania" msgstr "Odrzuca zadania"
#. Translators: this string connects multiple printer states together. #. Translators: this string connects multiple printer states together.
#: modules/printbackends/cups/gtkprintbackendcups.c:2538 #: modules/printbackends/cups/gtkprintbackendcups.c:2554
msgid "; " msgid "; "
msgstr ", " msgstr ", "
#: modules/printbackends/cups/gtkprintbackendcups.c:4223 #: modules/printbackends/cups/gtkprintbackendcups.c:4239
#: modules/printbackends/cups/gtkprintbackendcups.c:4290 #: modules/printbackends/cups/gtkprintbackendcups.c:4306
msgid "Two Sided" msgid "Two Sided"
msgstr "Dwustronne" msgstr "Dwustronne"
#: modules/printbackends/cups/gtkprintbackendcups.c:4224 #: modules/printbackends/cups/gtkprintbackendcups.c:4240
msgid "Paper Type" msgid "Paper Type"
msgstr "Rodzaj papieru" msgstr "Rodzaj papieru"
#: modules/printbackends/cups/gtkprintbackendcups.c:4225 #: modules/printbackends/cups/gtkprintbackendcups.c:4241
msgid "Paper Source" msgid "Paper Source"
msgstr "Źródło papieru" msgstr "Źródło papieru"
#: modules/printbackends/cups/gtkprintbackendcups.c:4226 #: modules/printbackends/cups/gtkprintbackendcups.c:4242
msgid "Output Tray" msgid "Output Tray"
msgstr "Tacka wyjściowa" msgstr "Tacka wyjściowa"
#: modules/printbackends/cups/gtkprintbackendcups.c:4227 #: modules/printbackends/cups/gtkprintbackendcups.c:4243
msgid "Resolution" msgid "Resolution"
msgstr "Rozdzielczość" msgstr "Rozdzielczość"
#: modules/printbackends/cups/gtkprintbackendcups.c:4228 #: modules/printbackends/cups/gtkprintbackendcups.c:4244
msgid "GhostScript pre-filtering" msgid "GhostScript pre-filtering"
msgstr "Wstępne filtrowanie GhostScript" msgstr "Wstępne filtrowanie GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4237 #: modules/printbackends/cups/gtkprintbackendcups.c:4253
msgid "One Sided" msgid "One Sided"
msgstr "Jednostronne" msgstr "Jednostronne"
#. Translators: this is an option of "Two Sided" #. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4239 #: modules/printbackends/cups/gtkprintbackendcups.c:4255
msgid "Long Edge (Standard)" msgid "Long Edge (Standard)"
msgstr "Grzbiet wzdłuż dłuższej krawędzi (standard)" msgstr "Grzbiet wzdłuż dłuższej krawędzi (standard)"
#. Translators: this is an option of "Two Sided" #. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4241 #: modules/printbackends/cups/gtkprintbackendcups.c:4257
msgid "Short Edge (Flip)" msgid "Short Edge (Flip)"
msgstr "Grzbiet wzdłuż krótszej krawędzi (obrót)" msgstr "Grzbiet wzdłuż krótszej krawędzi (obrót)"
#. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Paper Source"
#: modules/printbackends/cups/gtkprintbackendcups.c:4243 #: modules/printbackends/cups/gtkprintbackendcups.c:4259
#: modules/printbackends/cups/gtkprintbackendcups.c:4245 #: modules/printbackends/cups/gtkprintbackendcups.c:4261
#: modules/printbackends/cups/gtkprintbackendcups.c:4253 #: modules/printbackends/cups/gtkprintbackendcups.c:4269
msgid "Auto Select" msgid "Auto Select"
msgstr "Wybór automatyczny" msgstr "Wybór automatyczny"
#. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Paper Source"
#. Translators: this is an option of "Resolution" #. Translators: this is an option of "Resolution"
#: modules/printbackends/cups/gtkprintbackendcups.c:4247 #: modules/printbackends/cups/gtkprintbackendcups.c:4263
#: modules/printbackends/cups/gtkprintbackendcups.c:4249 #: modules/printbackends/cups/gtkprintbackendcups.c:4265
#: modules/printbackends/cups/gtkprintbackendcups.c:4251 #: modules/printbackends/cups/gtkprintbackendcups.c:4267
#: modules/printbackends/cups/gtkprintbackendcups.c:4255 #: modules/printbackends/cups/gtkprintbackendcups.c:4271
#: modules/printbackends/cups/gtkprintbackendcups.c:4762 #: modules/printbackends/cups/gtkprintbackendcups.c:4778
msgid "Printer Default" msgid "Printer Default"
msgstr "Domyślne drukarki" msgstr "Domyślne drukarki"
#. Translators: this is an option of "GhostScript" #. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4257 #: modules/printbackends/cups/gtkprintbackendcups.c:4273
msgid "Embed GhostScript fonts only" msgid "Embed GhostScript fonts only"
msgstr "Osadzanie tylko czcionek GhostScript" msgstr "Osadzanie tylko czcionek GhostScript"
#. Translators: this is an option of "GhostScript" #. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4259 #: modules/printbackends/cups/gtkprintbackendcups.c:4275
msgid "Convert to PS level 1" msgid "Convert to PS level 1"
msgstr "Konwertowanie do PS level 1" msgstr "Konwertowanie do PS level 1"
#. Translators: this is an option of "GhostScript" #. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4261 #: modules/printbackends/cups/gtkprintbackendcups.c:4277
msgid "Convert to PS level 2" msgid "Convert to PS level 2"
msgstr "Konwertowanie do PS level 2" msgstr "Konwertowanie do PS level 2"
#. Translators: this is an option of "GhostScript" #. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4263 #: modules/printbackends/cups/gtkprintbackendcups.c:4279
msgid "No pre-filtering" msgid "No pre-filtering"
msgstr "Bez wstępnego filtrowania" msgstr "Bez wstępnego filtrowania"
#: modules/printbackends/cups/gtkprintbackendcups.c:4298 #: modules/printbackends/cups/gtkprintbackendcups.c:4314
msgctxt "sides" msgctxt "sides"
msgid "One Sided" msgid "One Sided"
msgstr "Jednostronne" msgstr "Jednostronne"
#. Translators: this is an option of "Two Sided" #. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4300 #: modules/printbackends/cups/gtkprintbackendcups.c:4316
msgctxt "sides" msgctxt "sides"
msgid "Long Edge (Standard)" msgid "Long Edge (Standard)"
msgstr "Grzbiet wzdłuż dłuższej krawędzi (standard)" msgstr "Grzbiet wzdłuż dłuższej krawędzi (standard)"
#. Translators: this is an option of "Two Sided" #. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4302 #: modules/printbackends/cups/gtkprintbackendcups.c:4318
msgctxt "sides" msgctxt "sides"
msgid "Short Edge (Flip)" msgid "Short Edge (Flip)"
msgstr "Grzbiet wzdłuż krótszej krawędzi (obrót)" msgstr "Grzbiet wzdłuż krótszej krawędzi (obrót)"
@@ -5914,78 +5922,78 @@ msgstr "Grzbiet wzdłuż krótszej krawędzi (obrót)"
#. Translators: These strings name the possible values of the #. Translators: These strings name the possible values of the
#. * job priority option in the print dialog #. * job priority option in the print dialog
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5152 #: modules/printbackends/cups/gtkprintbackendcups.c:5168
msgid "Urgent" msgid "Urgent"
msgstr "Ważne" msgstr "Ważne"
#: modules/printbackends/cups/gtkprintbackendcups.c:5152 #: modules/printbackends/cups/gtkprintbackendcups.c:5168
msgid "High" msgid "High"
msgstr "Wysoki" msgstr "Wysoki"
#: modules/printbackends/cups/gtkprintbackendcups.c:5152 #: modules/printbackends/cups/gtkprintbackendcups.c:5168
msgid "Medium" msgid "Medium"
msgstr "Średni" msgstr "Średni"
#: modules/printbackends/cups/gtkprintbackendcups.c:5152 #: modules/printbackends/cups/gtkprintbackendcups.c:5168
msgid "Low" msgid "Low"
msgstr "Niski" msgstr "Niski"
#. Translators, this string is used to label the job priority option #. Translators, this string is used to label the job priority option
#. * in the print dialog #. * in the print dialog
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5182 #: modules/printbackends/cups/gtkprintbackendcups.c:5198
msgid "Job Priority" msgid "Job Priority"
msgstr "Priorytet" msgstr "Priorytet"
#. Translators, this string is used to label the billing info entry #. Translators, this string is used to label the billing info entry
#. * in the print dialog #. * in the print dialog
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5193 #: modules/printbackends/cups/gtkprintbackendcups.c:5209
msgid "Billing Info" msgid "Billing Info"
msgstr "Informacje o opłatach" msgstr "Informacje o opłatach"
#: modules/printbackends/cups/gtkprintbackendcups.c:5208 #: modules/printbackends/cups/gtkprintbackendcups.c:5224
msgid "Classified" msgid "Classified"
msgstr "Sklasyfikowane" msgstr "Sklasyfikowane"
#: modules/printbackends/cups/gtkprintbackendcups.c:5208 #: modules/printbackends/cups/gtkprintbackendcups.c:5224
msgid "Confidential" msgid "Confidential"
msgstr "Poufne" msgstr "Poufne"
#: modules/printbackends/cups/gtkprintbackendcups.c:5208 #: modules/printbackends/cups/gtkprintbackendcups.c:5224
msgid "Secret" msgid "Secret"
msgstr "Tajne" msgstr "Tajne"
#: modules/printbackends/cups/gtkprintbackendcups.c:5208 #: modules/printbackends/cups/gtkprintbackendcups.c:5224
msgid "Standard" msgid "Standard"
msgstr "Standardowe" msgstr "Standardowe"
#: modules/printbackends/cups/gtkprintbackendcups.c:5208 #: modules/printbackends/cups/gtkprintbackendcups.c:5224
msgid "Top Secret" msgid "Top Secret"
msgstr "Ściśle tajne" msgstr "Ściśle tajne"
#: modules/printbackends/cups/gtkprintbackendcups.c:5208 #: modules/printbackends/cups/gtkprintbackendcups.c:5224
msgid "Unclassified" msgid "Unclassified"
msgstr "Niesklasyfikowane" msgstr "Niesklasyfikowane"
#. Translators, this string is used to label the pages-per-sheet option #. Translators, this string is used to label the pages-per-sheet option
#. * in the print dialog #. * in the print dialog
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5219 #: modules/printbackends/cups/gtkprintbackendcups.c:5235
msgid "Pages per Sheet" msgid "Pages per Sheet"
msgstr "Stron na kartkę" msgstr "Stron na kartkę"
#. Translators, this is the label used for the option in the print #. Translators, this is the label used for the option in the print
#. * dialog that controls the front cover page. #. * dialog that controls the front cover page.
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5279 #: modules/printbackends/cups/gtkprintbackendcups.c:5295
msgid "Before" msgid "Before"
msgstr "Przed" msgstr "Przed"
#. Translators, this is the label used for the option in the print #. Translators, this is the label used for the option in the print
#. * dialog that controls the back cover page. #. * dialog that controls the back cover page.
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5294 #: modules/printbackends/cups/gtkprintbackendcups.c:5310
msgid "After" msgid "After"
msgstr "Po" msgstr "Po"
@@ -5993,14 +6001,14 @@ msgstr "Po"
#. * a print job is printed. Possible values are 'now', a specified time, #. * a print job is printed. Possible values are 'now', a specified time,
#. * or 'on hold' #. * or 'on hold'
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5314 #: modules/printbackends/cups/gtkprintbackendcups.c:5330
msgid "Print at" msgid "Print at"
msgstr "Wydruk o" msgstr "Wydruk o"
#. Translators: this is the name of the option that allows the user #. Translators: this is the name of the option that allows the user
#. * to specify a time when a print job will be printed. #. * to specify a time when a print job will be printed.
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5325 #: modules/printbackends/cups/gtkprintbackendcups.c:5341
msgid "Print at time" msgid "Print at time"
msgstr "Wydruk o czasie" msgstr "Wydruk o czasie"
@@ -6009,17 +6017,17 @@ msgstr "Wydruk o czasie"
#. * the width and height in points. E.g: "Custom #. * the width and height in points. E.g: "Custom
#. * 230.4x142.9" #. * 230.4x142.9"
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5367 #: modules/printbackends/cups/gtkprintbackendcups.c:5383
#, c-format #, c-format
msgid "Custom %s×%s" msgid "Custom %s×%s"
msgstr "Własny %s×%s" msgstr "Własny %s×%s"
#: modules/printbackends/cups/gtkprintbackendcups.c:5468 #: modules/printbackends/cups/gtkprintbackendcups.c:5484
msgid "Printer Profile" msgid "Printer Profile"
msgstr "Profil drukarki" msgstr "Profil drukarki"
#. TRANSLATORS: this is when color profile information is unavailable #. TRANSLATORS: this is when color profile information is unavailable
#: modules/printbackends/cups/gtkprintbackendcups.c:5475 #: modules/printbackends/cups/gtkprintbackendcups.c:5491
msgid "Unavailable" msgid "Unavailable"
msgstr "Niedostępne" msgstr "Niedostępne"
+2823 -3215
View File
File diff suppressed because it is too large Load Diff
+6
View File
@@ -34,6 +34,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \
animated-revealing \ animated-revealing \
motion-compression \ motion-compression \
scrolling-performance \ scrolling-performance \
blur-performance \
simple \ simple \
flicker \ flicker \
print-editor \ print-editor \
@@ -187,6 +188,7 @@ animated_revealing_DEPENDENCIES = $(TEST_DEPS)
flicker_DEPENDENCIES = $(TEST_DEPS) flicker_DEPENDENCIES = $(TEST_DEPS)
motion_compression_DEPENDENCIES = $(TEST_DEPS) motion_compression_DEPENDENCIES = $(TEST_DEPS)
scrolling_performance_DEPENDENCIES = $(TEST_DEPS) scrolling_performance_DEPENDENCIES = $(TEST_DEPS)
blur_performance_DEPENDENCIES = $(TEST_DEPS)
simple_DEPENDENCIES = $(TEST_DEPS) simple_DEPENDENCIES = $(TEST_DEPS)
print_editor_DEPENDENCIES = $(TEST_DEPS) print_editor_DEPENDENCIES = $(TEST_DEPS)
video_timer_DEPENDENCIES = $(TEST_DEPS) video_timer_DEPENDENCIES = $(TEST_DEPS)
@@ -318,6 +320,10 @@ scrolling_performance_SOURCES = \
variable.c \ variable.c \
variable.h variable.h
blur_performance_SOURCES = \
blur-performance.c \
../gtk/gtkcairoblur.c
video_timer_SOURCES = \ video_timer_SOURCES = \
video-timer.c \ video-timer.c \
variable.c \ variable.c \
+54
View File
@@ -0,0 +1,54 @@
/* -*- mode: C; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#include <gtk/gtkcairoblurprivate.h>
static void
init_surface (cairo_t *cr)
{
int w = cairo_image_surface_get_width (cairo_get_target (cr));
int h = cairo_image_surface_get_height (cairo_get_target (cr));
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_fill (cr);
cairo_set_source_rgb (cr, 1, 1, 1);
cairo_arc (cr, w/2, h/2, w/2, 0, 2*G_PI);
cairo_fill (cr);
}
int
main (int argc, char **argv)
{
cairo_surface_t *surface;
cairo_t *cr;
GTimer *timer;
double msec;
int i, j;
int size;
timer = g_timer_new ();
size = 2000;
surface = cairo_image_surface_create (CAIRO_FORMAT_A8, size, size);
cr = cairo_create (surface);
/* We do everything three times, first two as warmup */
for (j = 0; j < 2; j++)
{
for (i = 1; i < 16; i++)
{
init_surface (cr);
g_timer_start (timer);
_gtk_cairo_blur_surface (surface, i, GTK_BLUR_X | GTK_BLUR_Y);
msec = g_timer_elapsed (timer, NULL) * 1000;
if (j == 1)
g_print ("Radius %2d: %.2f msec, %.2f kpixels/msec:\n", i, msec, size*size/(msec*1000));
}
}
g_timer_destroy (timer);
return 0;
}
+29 -3
View File
@@ -39,6 +39,7 @@ typedef enum {
static char *arg_output_dir = NULL; static char *arg_output_dir = NULL;
static char *arg_base_dir = NULL; static char *arg_base_dir = NULL;
static char *arg_direction = NULL; static char *arg_direction = NULL;
static char *arg_compare_dir = NULL;
static const GOptionEntry test_args[] = { static const GOptionEntry test_args[] = {
{ "output", 'o', 0, G_OPTION_ARG_FILENAME, &arg_output_dir, { "output", 'o', 0, G_OPTION_ARG_FILENAME, &arg_output_dir,
@@ -47,6 +48,8 @@ static const GOptionEntry test_args[] = {
"Directory to run tests from", "DIR" }, "Directory to run tests from", "DIR" },
{ "direction", 0, 0, G_OPTION_ARG_STRING, &arg_direction, { "direction", 0, 0, G_OPTION_ARG_STRING, &arg_direction,
"Set text direction", "ltr|rtl" }, "Set text direction", "ltr|rtl" },
{ "compare-with", 0, 0, G_OPTION_ARG_FILENAME, &arg_compare_dir,
"Directory to compare with", "DIR" },
{ NULL } { NULL }
}; };
@@ -175,6 +178,28 @@ get_test_file (const char *test_file,
return g_string_free (file, FALSE); return g_string_free (file, FALSE);
} }
static char *
get_reference_image (const char *ui_file)
{
char *base;
char *reference_image;
if (!arg_compare_dir)
return NULL;
get_components_of_test_file (ui_file, NULL, &base);
reference_image = g_strconcat (arg_compare_dir, G_DIR_SEPARATOR_S, base, ".out.png", NULL);
g_free (base);
if (!g_file_test (reference_image, G_FILE_TEST_EXISTS))
{
g_free (reference_image);
return NULL;
}
return reference_image;
}
static GtkStyleProvider * static GtkStyleProvider *
add_extra_css (const char *testname, add_extra_css (const char *testname,
const char *extension) const char *extension)
@@ -234,9 +259,10 @@ test_ui_file (GFile *file)
provider = add_extra_css (ui_file, ".css"); provider = add_extra_css (ui_file, ".css");
ui_image = reftest_snapshot_ui_file (ui_file); ui_image = reftest_snapshot_ui_file (ui_file);
reference_file = get_test_file (ui_file, ".ref.ui", TRUE); if ((reference_file = get_reference_image (ui_file)) != NULL)
if (reference_file) reference_image = cairo_image_surface_create_from_png (reference_file);
else if ((reference_file = get_test_file (ui_file, ".ref.ui", TRUE)) != NULL)
reference_image = reftest_snapshot_ui_file (reference_file); reference_image = reftest_snapshot_ui_file (reference_file);
else else
{ {