Compare commits

...

19 Commits

Author SHA1 Message Date
Timm Bäder
df0dcbe939 cssimageicontheme: Cache size + texture 2017-03-30 17:46:11 +02:00
Timm Bäder
ffd1579a93 glrenderer: Reuse the GArray for render items 2017-03-29 19:02:00 +02:00
Timm Bäder
da2695f563 glrenderer: Add render items for child nodes 2017-03-29 18:27:05 +02:00
Timm Bäder
20cfb37608 glrenderer: Handle color nodes 2017-03-29 18:15:44 +02:00
Timm Bäder
c4c3f5c024 glrenderer: Store uniform locations per program 2017-03-29 18:15:23 +02:00
Timm Bäder
e7d9dd451a widget: Explicitly warn when resizing during size-allocate 2017-03-27 12:05:36 +02:00
Timm Bäder
1573240cec widget: Fix checks in gtk_widget_snapshot()
If the widget isn't drawable anyway, just return;

If the widget needs an allocate, print a warning, since it indicates a
problem in the widget workflow (e.g. forgot to size_allocate a child
widget).

This maches the previous checks in gtk_widget_draw (with the same
problems).
2017-03-27 12:05:24 +02:00
Timm Bäder
d98bc177d0 filechooserbutton: Hide the combobox by default 2017-03-26 12:42:07 +02:00
Timm Bäder
554bd2d0ff progressbar: Use GtkLabel for the text 2017-03-26 11:12:57 +02:00
Timm Bäder
7d0ad83494 entry: Use GtkProgressBar to indicate progress
Instead of the old gadget and manual progress pulsing
2017-03-26 10:49:25 +02:00
Timm Bäder
6f7f102fcb recentchooserwidget: Inherit from GtkWidget 2017-03-25 21:19:44 +01:00
Timm Bäder
7658942625 appchooserwidget: Inherit from GtkWidget 2017-03-25 21:19:42 +01:00
Timm Bäder
4cb3ad43a5 fontchooserwidget: Inherit from GtkWidget 2017-03-25 20:59:51 +01:00
Timm Bäder
81bf7d646f fontchooserwidget: Remove unused defines 2017-03-25 20:43:28 +01:00
Timm Bäder
96e8be8dab filechooserwidget: Inherit from GtkWidget 2017-03-25 20:36:10 +01:00
Timm Bäder
8845ed327c Remove the Raleigh theme
It's been broken for ages.
2017-03-25 19:00:59 +01:00
Timm Bäder
755dd7ddaa infobar: Inherit from GtkWidget 2017-03-25 19:00:59 +01:00
Timm Bäder
93c691949a widget: Add a GtkBuildable::add_child implementation
Just call gtk_widget_set_parent in there.
2017-03-25 19:00:57 +01:00
Timm Bäder
06412bfff9 progressbar: Remove unused defines 2017-03-25 14:33:14 +01:00
30 changed files with 1023 additions and 1716 deletions

View File

@@ -22,12 +22,8 @@
#define SHADER_VERSION_GL3 150
typedef struct {
int render_target_id;
int vao_id;
int buffer_id;
int texture_id;
int program_id;
int id;
/* Common locations (gl_common)*/
int mvp_location;
int source_location;
int mask_location;
@@ -35,9 +31,33 @@ typedef struct {
int position_location;
int alpha_location;
int blendMode_location;
} RenderData;
/* Shader-specific locations */
union {
struct {
int color_location;
};
};
} Program;
typedef struct {
int render_target_id;
int vao_id;
int buffer_id;
int texture_id;
int program_id;
Program *program;
} RenderData;
enum {
MODE_COLOR = 1,
MODE_TEXTURE,
N_MODES
};
typedef struct {
int mode;
/* Back pointer to the node, only meant for comparison */
GskRenderNode *node;
@@ -51,6 +71,15 @@ typedef struct {
float opacity;
float z;
union {
struct {
GdkRGBA color;
} color_data;
struct {
int a,b;
} texture_data;
};
const char *name;
GskBlendMode blend_mode;
@@ -61,6 +90,8 @@ typedef struct {
GArray *children;
} RenderItem;
enum {
MVP,
SOURCE,
@@ -93,6 +124,8 @@ typedef enum {
RENDER_SCISSOR
} RenderMode;
#define NUM_PROGRAMS 3
struct _GskGLRenderer
{
GskRenderer parent_instance;
@@ -112,8 +145,16 @@ struct _GskGLRenderer
GskGLProfiler *gl_profiler;
GskShaderBuilder *shader_builder;
int blend_program_id;
int blit_program_id;
union {
struct {
Program blend_program;
Program blit_program;
Program color_program;
};
struct {
Program programs[NUM_PROGRAMS];
};
};
GArray *render_items;
@@ -140,6 +181,7 @@ gsk_gl_renderer_dispose (GObject *gobject)
GskGLRenderer *self = GSK_GL_RENDERER (gobject);
g_clear_object (&self->gl_context);
g_clear_pointer (&self->render_items, g_array_unref);
G_OBJECT_CLASS (gsk_gl_renderer_parent_class)->dispose (gobject);
}
@@ -191,6 +233,27 @@ gsk_gl_renderer_destroy_buffers (GskGLRenderer *self)
self->has_buffers = FALSE;
}
static void
init_common_locations (GskGLRenderer *self,
Program *prog)
{
prog->source_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, prog->id, self->uniforms[SOURCE]);
prog->mask_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, prog->id, self->uniforms[MASK]);
prog->mvp_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, prog->id, self->uniforms[MVP]);
prog->alpha_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, prog->id, self->uniforms[ALPHA]);
prog->blendMode_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, prog->id, self->uniforms[BLEND_MODE]);
prog->position_location =
gsk_shader_builder_get_attribute_location (self->shader_builder, prog->id, self->attributes[POSITION]);
prog->uv_location =
gsk_shader_builder_get_attribute_location (self->shader_builder, prog->id, self->attributes[UV]);
}
static gboolean
gsk_gl_renderer_create_programs (GskGLRenderer *self,
GError **error)
@@ -245,8 +308,12 @@ gsk_gl_renderer_create_programs (GskGLRenderer *self,
if (GSK_RENDER_MODE_CHECK (SHADERS))
gsk_shader_builder_add_define (builder, "GSK_DEBUG", "1");
#endif
/* Keep a pointer to query for the uniform and attribute locations
* when rendering the scene
*/
self->shader_builder = builder;
self->blend_program_id =
self->blend_program.id =
gsk_shader_builder_create_program (builder, "blend.vs.glsl", "blend.fs.glsl", &shader_error);
if (shader_error != NULL)
{
@@ -256,8 +323,9 @@ gsk_gl_renderer_create_programs (GskGLRenderer *self,
g_object_unref (builder);
goto out;
}
init_common_locations (self, &self->blend_program);
self->blit_program_id =
self->blit_program.id =
gsk_shader_builder_create_program (builder, "blit.vs.glsl", "blit.fs.glsl", &shader_error);
if (shader_error != NULL)
{
@@ -267,11 +335,24 @@ gsk_gl_renderer_create_programs (GskGLRenderer *self,
g_object_unref (builder);
goto out;
}
init_common_locations (self, &self->blit_program);
/* Keep a pointer to query for the uniform and attribute locations
* when rendering the scene
*/
self->shader_builder = builder;
self->color_program.id =
gsk_shader_builder_create_program (builder, "color.vs.glsl", "color.fs.glsl", &shader_error);
if (shader_error != NULL)
{
g_propagate_prefixed_error (error,
shader_error,
"Unable to create 'color' program: ");
g_object_unref (builder);
goto out;
}
init_common_locations (self, &self->color_program);
self->color_program.color_location = gsk_shader_builder_get_uniform_location (self->shader_builder,
self->color_program.id,
g_quark_from_string("uColor"));
self->color_program.color_location = glGetUniformLocation(self->color_program.id, "uColor");
g_assert(self->color_program.color_location >= 0);
res = TRUE;
@@ -443,25 +524,43 @@ render_item (GskGLRenderer *self,
gsk_gl_driver_bind_vao (self->gl_driver, item->render_data.vao_id);
glUseProgram (item->render_data.program_id);
glUseProgram (item->render_data.program->id);
if (item->render_data.texture_id != 0)
switch(item->mode)
{
/* Use texture unit 0 for the source */
glUniform1i (item->render_data.source_location, 0);
gsk_gl_driver_bind_source_texture (self->gl_driver, item->render_data.texture_id);
if (item->parent_data != NULL)
case MODE_COLOR:
{
glUniform1i (item->render_data.blendMode_location, item->blend_mode);
glUniform4f (item->render_data.program->color_location,
item->color_data.color.red,
item->color_data.color.green,
item->color_data.color.blue,
item->color_data.color.alpha);
}
break;
/* Use texture unit 1 for the mask */
if (item->parent_data->texture_id != 0)
case MODE_TEXTURE:
{
g_assert(item->render_data.texture_id != 0);
/* Use texture unit 0 for the source */
glUniform1i (item->render_data.program->source_location, 0);
gsk_gl_driver_bind_source_texture (self->gl_driver, item->render_data.texture_id);
if (item->parent_data != NULL)
{
glUniform1i (item->render_data.mask_location, 1);
gsk_gl_driver_bind_mask_texture (self->gl_driver, item->parent_data->texture_id);
glUniform1i (item->render_data.program->blendMode_location, item->blend_mode);
/* Use texture unit 1 for the mask */
if (item->parent_data->texture_id != 0)
{
glUniform1i (item->render_data.program->mask_location, 1);
gsk_gl_driver_bind_mask_texture (self->gl_driver, item->parent_data->texture_id);
}
}
}
break;
default:
g_assert_not_reached ();
}
/* Pass the opacity component */
@@ -470,12 +569,12 @@ render_item (GskGLRenderer *self,
else
opacity = item->opacity;
glUniform1f (item->render_data.alpha_location, opacity);
glUniform1f (item->render_data.program->alpha_location, opacity);
/* Pass the mvp to the vertex shader */
GSK_NOTE (TRANSFORMS, graphene_matrix_print (&item->mvp));
graphene_matrix_to_float (&item->mvp, mvp);
glUniformMatrix4fv (item->render_data.mvp_location, 1, GL_FALSE, mvp);
glUniformMatrix4fv (item->render_data.program->mvp_location, 1, GL_FALSE, mvp);
/* Draw the quad */
GSK_NOTE2 (OPENGL, TRANSFORMS,
@@ -517,21 +616,21 @@ render_item (GskGLRenderer *self,
gsk_gl_driver_bind_vao (self->gl_driver, item->render_data.vao_id);
/* Since we're rendering the target texture, we only need the blit program */
glUseProgram (self->blit_program_id);
glUseProgram (self->blit_program.id);
/* Use texture unit 0 for the render target */
glUniform1i (item->render_data.source_location, 0);
glUniform1i (item->render_data.program->source_location, 0);
gsk_gl_driver_bind_source_texture (self->gl_driver, item->render_data.render_target_id);
/* Pass the opacity component; if we got here, we know that the original render
* target is neither fully opaque nor at full opacity
*/
glUniform1f (item->render_data.alpha_location, item->opacity);
glUniform1f (item->render_data.program->alpha_location, item->opacity);
/* Pass the mvp to the vertex shader */
GSK_NOTE (TRANSFORMS, graphene_matrix_print (&item->mvp));
graphene_matrix_to_float (&item->mvp, mvp);
glUniformMatrix4fv (item->render_data.mvp_location, 1, GL_FALSE, mvp);
glUniformMatrix4fv (item->render_data.program->mvp_location, 1, GL_FALSE, mvp);
/* Draw the quad */
GSK_NOTE2 (OPENGL, TRANSFORMS,
@@ -666,28 +765,15 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
/* Select the program to use */
if (parent != NULL)
program_id = self->blend_program_id;
{
item.render_data.program = &self->blend_program;
program_id = self->blend_program.id;
}
else
program_id = self->blit_program_id;
item.render_data.program_id = program_id;
/* Retrieve all the uniforms and attributes */
item.render_data.source_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[SOURCE]);
item.render_data.mask_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[MASK]);
item.render_data.mvp_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[MVP]);
item.render_data.alpha_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[ALPHA]);
item.render_data.blendMode_location =
gsk_shader_builder_get_uniform_location (self->shader_builder, program_id, self->uniforms[BLEND_MODE]);
item.render_data.position_location =
gsk_shader_builder_get_attribute_location (self->shader_builder, program_id, self->attributes[POSITION]);
item.render_data.uv_location =
gsk_shader_builder_get_attribute_location (self->shader_builder, program_id, self->attributes[UV]);
{
item.render_data.program = &self->blit_program;
program_id = self->blit_program.id;
}
if (render_node_needs_render_target (node))
{
@@ -717,6 +803,7 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
texture,
gl_min_filter,
gl_mag_filter);
item.mode = MODE_TEXTURE;
}
break;
@@ -740,14 +827,71 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
surface,
gl_min_filter,
gl_mag_filter);
item.mode = MODE_TEXTURE;
}
break;
case GSK_COLOR_NODE:
{
const GdkRGBA *c = gsk_color_node_peek_color(node);
program_id = self->color_program.id;
item.render_data.program = &self->color_program;
item.mode = MODE_COLOR;
item.color_data.color= *c;
}
break;
case GSK_COLOR_MATRIX_NODE:
{
GskRenderNode *child = gsk_color_matrix_node_get_child (node);
gsk_gl_renderer_add_render_item (self, projection, modelview, render_items, child, ritem);
}
return;
case GSK_SHADOW_NODE:
{
GskRenderNode *child = gsk_shadow_node_get_child (node);
gsk_gl_renderer_add_render_item (self, projection, modelview, render_items, child, ritem);
}
return;
case GSK_REPEAT_NODE:
{
GskRenderNode *child = gsk_repeat_node_get_child (node);
gsk_gl_renderer_add_render_item (self, projection, modelview, render_items, child, ritem);
}
return;
case GSK_BLEND_NODE:
{
GskRenderNode *child = gsk_blend_node_get_bottom_child (node);
gsk_gl_renderer_add_render_item (self, projection, modelview, render_items, child, ritem);
child = gsk_blend_node_get_top_child (node);
gsk_gl_renderer_add_render_item (self, projection, modelview, render_items, child, ritem);
}
return;
case GSK_CROSS_FADE_NODE:
{
GskRenderNode *child = gsk_cross_fade_node_get_start_child (node);
gsk_gl_renderer_add_render_item (self, projection, modelview, render_items, child, ritem);
child = gsk_cross_fade_node_get_end_child (node);
gsk_gl_renderer_add_render_item (self, projection, modelview, render_items, child, ritem);
}
return;
case GSK_CONTAINER_NODE:
{
guint i;
guint i, p;
for (i = 0; i < gsk_container_node_get_n_children (node); i++)
for (i = 0, p = gsk_container_node_get_n_children (node); i < p; i++)
{
GskRenderNode *child = gsk_container_node_get_child (node, i);
gsk_gl_renderer_add_render_item (self, projection, modelview, render_items, child, ritem);
@@ -786,7 +930,7 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
cairo_translate (cr, -node->bounds.origin.x, -node->bounds.origin.y);
gsk_render_node_draw (node, cr);
cairo_destroy (cr);
/* Upload the Cairo surface to a GL texture */
@@ -800,10 +944,13 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
GL_NEAREST, GL_NEAREST);
cairo_surface_destroy (surface);
item.mode = MODE_TEXTURE;
}
break;
}
item.render_data.program_id = program_id;
/* Create the vertex buffers holding the geometry of the quad */
{
GskQuadVertex vertex_data[N_VERTICES] = {
@@ -818,8 +965,8 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
item.render_data.vao_id =
gsk_gl_driver_create_vao_for_quad (self->gl_driver,
item.render_data.position_location,
item.render_data.uv_location,
item.render_data.program->position_location,
item.render_data.program->uv_location,
N_VERTICES,
vertex_data);
}
@@ -851,8 +998,6 @@ gsk_gl_renderer_validate_tree (GskGLRenderer *self,
gdk_gl_context_make_current (self->gl_context);
self->render_items = g_array_new (FALSE, FALSE, sizeof (RenderItem));
gsk_gl_driver_begin_frame (self->gl_driver);
GSK_NOTE (OPENGL, g_print ("RenderNode -> RenderItem\n"));
@@ -876,7 +1021,7 @@ gsk_gl_renderer_clear_tree (GskGLRenderer *self)
gdk_gl_context_make_current (self->gl_context);
g_clear_pointer (&self->render_items, g_array_unref);
g_array_remove_range (self->render_items, 0, self->render_items->len);
removed_textures = gsk_gl_driver_collect_textures (self->gl_driver);
removed_vaos = gsk_gl_driver_collect_vaos (self->gl_driver);
@@ -1093,6 +1238,8 @@ gsk_gl_renderer_init (GskGLRenderer *self)
graphene_matrix_init_identity (&self->mvp);
self->render_items = g_array_new (FALSE, FALSE, sizeof (RenderItem));
#ifdef G_ENABLE_DEBUG
{
GskProfiler *profiler = gsk_renderer_get_profiler (GSK_RENDERER (self));

View File

@@ -0,0 +1,5 @@
uniform vec4 uColor;
void main() {
setOutputColor(uColor);
}

View File

@@ -0,0 +1,6 @@
void main() {
gl_Position = uMVP * vec4(aPosition, 0.0, 1.0);
// Flip the sampling
vUv = vec2(aUv.x, aUv.y);
}

View File

@@ -1217,10 +1217,6 @@ gtk.gresource.xml: Makefile.am inspector/Makefile.inc
$(AM_V_GEN) echo "<?xml version='1.0' encoding='UTF-8'?>" > $@; \
echo "<gresources>" >> $@; \
echo " <gresource prefix='/org/gtk/libgtk'>" >> $@; \
for f in $(srcdir)/theme/Raleigh/*.css; do \
n=`basename $$f`; \
echo " <file alias='theme/Raleigh/gtk.css'>theme/Raleigh/$$n</file>" >> $@; \
done; \
echo " <file>theme/Adwaita/gtk.css</file>" >> $@; \
echo " <file>theme/Adwaita/gtk-dark.css</file>" >> $@; \
echo " <file>theme/Adwaita/gtk-contained.css</file>" >> $@; \
@@ -1315,8 +1311,7 @@ theme_sources = \
theme/HighContrast/gtk-contained-inverse.css \
theme/HighContrast/gtk.css \
theme/HighContrast/gtk-inverse.css \
theme/HighContrast/parse-sass.sh \
theme/Raleigh/gtk-default.css
theme/HighContrast/parse-sass.sh
resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(builddir)/gtk.gresource.xml)

View File

@@ -348,7 +348,6 @@ construct_appchooser_widget (GtkAppChooserDialog *self)
/* Need to build the appchooser widget after, because of the content-type construct-only property */
self->priv->app_chooser_widget = gtk_app_chooser_widget_new (self->priv->content_type);
gtk_box_pack_start (GTK_BOX (self->priv->inner_box), self->priv->app_chooser_widget, TRUE, TRUE);
gtk_widget_show (self->priv->app_chooser_widget);
g_signal_connect (self->priv->app_chooser_widget, "application-selected",
G_CALLBACK (widget_application_selected_cb), self);

View File

@@ -75,6 +75,8 @@
struct _GtkAppChooserWidgetPrivate {
GAppInfo *selected_app_info;
GtkWidget *overlay;
gchar *content_type;
gchar *default_text;
@@ -136,7 +138,7 @@ static guint signals[N_SIGNALS] = { 0, };
static void gtk_app_chooser_widget_iface_init (GtkAppChooserIface *iface);
G_DEFINE_TYPE_WITH_CODE (GtkAppChooserWidget, gtk_app_chooser_widget, GTK_TYPE_BOX,
G_DEFINE_TYPE_WITH_CODE (GtkAppChooserWidget, gtk_app_chooser_widget, GTK_TYPE_WIDGET,
G_ADD_PRIVATE (GtkAppChooserWidget)
G_IMPLEMENT_INTERFACE (GTK_TYPE_APP_CHOOSER,
gtk_app_chooser_widget_iface_init));
@@ -928,12 +930,56 @@ static void
gtk_app_chooser_widget_dispose (GObject *object)
{
GtkAppChooserWidget *self = GTK_APP_CHOOSER_WIDGET (object);
GtkAppChooserWidgetPrivate *priv = gtk_app_chooser_widget_get_instance_private (self);
g_clear_object (&self->priv->selected_app_info);
g_clear_object (&priv->selected_app_info);
if (priv->overlay)
{
gtk_widget_unparent (priv->overlay);
priv->overlay = NULL;
}
G_OBJECT_CLASS (gtk_app_chooser_widget_parent_class)->dispose (object);
}
static void
gtk_app_chooser_widget_measure (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline)
{
GtkAppChooserWidget *self = GTK_APP_CHOOSER_WIDGET (widget);
GtkAppChooserWidgetPrivate *priv = gtk_app_chooser_widget_get_instance_private (self);
gtk_widget_measure (priv->overlay, orientation, for_size,
minimum, natural,
minimum_baseline, natural_baseline);
}
static void
gtk_app_chooser_widget_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
GtkAppChooserWidget *self = GTK_APP_CHOOSER_WIDGET (widget);
GtkAppChooserWidgetPrivate *priv = gtk_app_chooser_widget_get_instance_private (self);
gtk_widget_snapshot_child (widget, priv->overlay, snapshot);
}
static void
gtk_app_chooser_widget_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkAppChooserWidget *self = GTK_APP_CHOOSER_WIDGET (widget);
GtkAppChooserWidgetPrivate *priv = gtk_app_chooser_widget_get_instance_private (self);
gtk_widget_size_allocate (priv->overlay, allocation);
}
static void
gtk_app_chooser_widget_class_init (GtkAppChooserWidgetClass *klass)
{
@@ -948,6 +994,12 @@ gtk_app_chooser_widget_class_init (GtkAppChooserWidgetClass *klass)
gobject_class->get_property = gtk_app_chooser_widget_get_property;
gobject_class->constructed = gtk_app_chooser_widget_constructed;
widget_class = GTK_WIDGET_CLASS (klass);
widget_class->measure = gtk_app_chooser_widget_measure;
widget_class->size_allocate = gtk_app_chooser_widget_size_allocate;
widget_class->snapshot = gtk_app_chooser_widget_snapshot;
g_object_class_override_property (gobject_class, PROP_CONTENT_TYPE, "content-type");
/**
@@ -1098,7 +1150,6 @@ gtk_app_chooser_widget_class_init (GtkAppChooserWidgetClass *klass)
/* Bind class to template
*/
widget_class = GTK_WIDGET_CLASS (klass);
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gtk/libgtk/ui/gtkappchooserwidget.ui");
gtk_widget_class_bind_template_child_private (widget_class, GtkAppChooserWidget, program_list);
@@ -1108,6 +1159,7 @@ gtk_app_chooser_widget_class_init (GtkAppChooserWidgetClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, GtkAppChooserWidget, secondary_padding);
gtk_widget_class_bind_template_child_private (widget_class, GtkAppChooserWidget, no_apps_label);
gtk_widget_class_bind_template_child_private (widget_class, GtkAppChooserWidget, no_apps);
gtk_widget_class_bind_template_child_private (widget_class, GtkAppChooserWidget, overlay);
gtk_widget_class_bind_template_callback (widget_class, refresh_and_emit_app_selected);
gtk_widget_class_bind_template_callback (widget_class, program_list_selection_activated);
gtk_widget_class_bind_template_callback (widget_class, widget_button_press_event_cb);
@@ -1123,6 +1175,8 @@ gtk_app_chooser_widget_init (GtkAppChooserWidget *self)
self->priv = gtk_app_chooser_widget_get_instance_private (self);
gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
gtk_widget_init_template (GTK_WIDGET (self));
/* Various parts of the GtkTreeView code need custom code to setup, mostly

View File

@@ -29,7 +29,7 @@
#error "Only <gtk/gtk.h> can be included directly."
#endif
#include <gtk/gtkbox.h>
#include <gtk/gtkwidget.h>
#include <gtk/gtkmenu.h>
#include <gio/gio.h>
@@ -47,7 +47,7 @@ typedef struct _GtkAppChooserWidgetClass GtkAppChooserWidgetClass;
typedef struct _GtkAppChooserWidgetPrivate GtkAppChooserWidgetPrivate;
struct _GtkAppChooserWidget {
GtkBox parent;
GtkWidget parent_instance;
/*< private >*/
GtkAppChooserWidgetPrivate *priv;
@@ -64,7 +64,7 @@ struct _GtkAppChooserWidget {
* popup over an application item.
*/
struct _GtkAppChooserWidgetClass {
GtkBoxClass parent_class;
GtkWidgetClass parent_class;
/*< public >*/

View File

@@ -46,10 +46,7 @@ gtk_css_image_icon_theme_snapshot (GtkCssImage *image,
double height)
{
GtkCssImageIconTheme *icon_theme = GTK_CSS_IMAGE_ICON_THEME (image);
GError *error = NULL;
GtkIconInfo *icon_info;
GskTexture *texture;
GdkPixbuf *pixbuf;
double texture_width, texture_height;
gint size;
@@ -57,34 +54,54 @@ gtk_css_image_icon_theme_snapshot (GtkCssImage *image,
if (size <= 0)
return;
icon_info = gtk_icon_theme_lookup_icon_for_scale (icon_theme->icon_theme,
icon_theme->name,
size,
icon_theme->scale,
GTK_ICON_LOOKUP_USE_BUILTIN);
if (icon_info == NULL)
if (size == icon_theme->cached_size &&
icon_theme->cached_texture != NULL)
{
/* XXX: render missing icon image here? */
return;
texture = icon_theme->cached_texture;
}
else
{
GError *error = NULL;
GtkIconInfo *icon_info;
GdkPixbuf *pixbuf;
icon_info = gtk_icon_theme_lookup_icon_for_scale (icon_theme->icon_theme,
icon_theme->name,
size,
icon_theme->scale,
GTK_ICON_LOOKUP_USE_BUILTIN);
if (icon_info == NULL)
{
/* XXX: render missing icon image here? */
return;
}
pixbuf = gtk_icon_info_load_symbolic (icon_info,
&icon_theme->color,
&icon_theme->success,
&icon_theme->warning,
&icon_theme->error,
NULL,
&error);
if (pixbuf == NULL)
{
/* XXX: render missing icon image here? */
g_error_free (error);
return;
}
texture = gsk_texture_new_for_pixbuf (pixbuf);
g_clear_object (&icon_theme->cached_texture);
icon_theme->cached_size = size;
icon_theme->cached_texture = texture;
g_object_unref (pixbuf);
g_object_unref (icon_info);
}
pixbuf = gtk_icon_info_load_symbolic (icon_info,
&icon_theme->color,
&icon_theme->success,
&icon_theme->warning,
&icon_theme->error,
NULL,
&error);
if (pixbuf == NULL)
{
/* XXX: render missing icon image here? */
g_error_free (error);
return;
}
texture = gsk_texture_new_for_pixbuf (pixbuf);
texture_width = (double) gdk_pixbuf_get_width (pixbuf) / icon_theme->scale;
texture_height = (double) gdk_pixbuf_get_height (pixbuf) / icon_theme->scale;
texture_width = (double) gsk_texture_get_width (texture) / icon_theme->scale;
texture_height = (double) gsk_texture_get_height (texture) / icon_theme->scale;
gtk_snapshot_append_texture (snapshot,
texture,
@@ -95,10 +112,6 @@ gtk_css_image_icon_theme_snapshot (GtkCssImage *image,
texture_height
),
"CssImageIconTheme<%s@%d>", icon_theme->name, icon_theme->scale);
g_object_unref (texture);
g_object_unref (pixbuf);
g_object_unref (icon_info);
}
@@ -175,6 +188,8 @@ gtk_css_image_icon_theme_dispose (GObject *object)
g_free (icon_theme->name);
icon_theme->name = NULL;
g_clear_object (&icon_theme->cached_texture);
G_OBJECT_CLASS (_gtk_css_image_icon_theme_parent_class)->dispose (object);
}
@@ -199,5 +214,7 @@ _gtk_css_image_icon_theme_init (GtkCssImageIconTheme *icon_theme)
{
icon_theme->icon_theme = gtk_icon_theme_get_default ();
icon_theme->scale = 1;
icon_theme->cached_size = -1;
icon_theme->cached_texture = NULL;
}

View File

@@ -46,6 +46,9 @@ struct _GtkCssImageIconTheme
GdkRGBA error;
gint scale;
char *name;
int cached_size;
GskTexture *cached_texture;
};
struct _GtkCssImageIconThemeClass

View File

@@ -127,7 +127,7 @@
* ├── undershoot.left
* ├── undershoot.right
* ├── [selection]
* ├── [progress[.pulse]]
* ├── [progressbar]
* ╰── [window.popup]
* ]|
*
@@ -191,15 +191,7 @@ struct _GtkEntryPrivate
gchar *im_module;
gdouble progress_fraction;
gdouble progress_pulse_fraction;
gdouble progress_pulse_current;
guint tick_id;
GtkProgressTracker tracker;
gint64 pulse1;
gint64 pulse2;
gdouble last_iteration;
gchar *placeholder_text;
@@ -215,10 +207,11 @@ struct _GtkEntryPrivate
GtkGesture *multipress_gesture;
GtkCssGadget *gadget;
GtkCssGadget *progress_gadget;
GtkCssNode *selection_node;
GtkCssNode *undershoot_node[2];
GtkWidget *progress_bar;
int text_x;
int text_width;
@@ -265,7 +258,6 @@ struct _GtkEntryPrivate
guint mouse_cursor_obscured : 1;
guint need_im_reset : 1;
guint progress_pulse_mode : 1;
guint progress_pulse_way_back : 1;
guint real_changed : 1;
guint resolved_dir : 4; /* PangoDirection */
guint select_words : 1;
@@ -2272,11 +2264,11 @@ gtk_entry_get_property (GObject *object,
break;
case PROP_PROGRESS_FRACTION:
g_value_set_double (value, priv->progress_fraction);
g_value_set_double (value, gtk_entry_get_progress_fraction (entry));
break;
case PROP_PROGRESS_PULSE_STEP:
g_value_set_double (value, priv->progress_pulse_fraction);
g_value_set_double (value, gtk_entry_get_progress_pulse_step (entry));
break;
case PROP_PLACEHOLDER_TEXT:
@@ -2472,8 +2464,6 @@ gtk_entry_init (GtkEntry *entry)
priv->xalign = 0.0;
priv->caps_lock_warning = TRUE;
priv->caps_lock_warning_shown = FALSE;
priv->progress_fraction = 0.0;
priv->progress_pulse_fraction = 0.1;
gtk_drag_dest_set (GTK_WIDGET (entry), 0, NULL, 0,
GDK_ACTION_COPY | GDK_ACTION_MOVE);
@@ -2732,7 +2722,9 @@ gtk_entry_finalize (GObject *object)
if (priv->attrs)
pango_attr_list_unref (priv->attrs);
g_clear_object (&priv->progress_gadget);
if (priv->progress_bar)
gtk_widget_unparent (priv->progress_bar);
g_clear_object (&priv->gadget);
G_OBJECT_CLASS (gtk_entry_parent_class)->finalize (object);
@@ -2937,8 +2929,6 @@ update_node_state (GtkEntry *entry)
state = gtk_widget_get_state_flags (GTK_WIDGET (entry));
state &= ~GTK_STATE_FLAG_DROP_ACTIVE;
if (priv->progress_gadget)
gtk_css_gadget_set_state (priv->progress_gadget, state);
if (priv->selection_node)
gtk_css_node_set_state (priv->selection_node, state);
@@ -2954,13 +2944,6 @@ update_node_ordering (GtkEntry *entry)
GtkEntryIconPosition icon_pos;
GtkCssNode *sibling, *parent;
if (priv->progress_gadget)
{
gtk_css_node_insert_before (gtk_css_gadget_get_node (priv->gadget),
gtk_css_gadget_get_node (priv->progress_gadget),
NULL);
}
if (gtk_widget_get_direction (GTK_WIDGET (entry)) == GTK_TEXT_DIR_RTL)
icon_pos = GTK_ENTRY_ICON_SECONDARY;
else
@@ -3302,15 +3285,12 @@ gtk_entry_measure (GtkCssGadget *gadget,
pango_font_metrics_unref (metrics);
if (priv->progress_gadget && gtk_css_gadget_get_visible (priv->progress_gadget))
if (priv->progress_bar && _gtk_widget_is_drawable (priv->progress_bar))
{
int prog_min, prog_nat;
gtk_css_gadget_get_preferred_size (priv->progress_gadget,
orientation,
for_size,
&prog_min, &prog_nat,
NULL, NULL);
gtk_widget_measure (priv->progress_bar, orientation, for_size,
&prog_min, &prog_nat, NULL, NULL);
*minimum = MAX (*minimum, prog_min);
*natural = MAX (*natural, prog_nat);
@@ -3438,38 +3418,20 @@ gtk_entry_allocate (GtkCssGadget *gadget,
gdk_rectangle_union (out_clip, &clip, out_clip);
}
if (priv->progress_gadget && gtk_css_gadget_get_visible (priv->progress_gadget))
if (priv->progress_bar && _gtk_widget_is_drawable (priv->progress_bar))
{
int extra_width, req_width;
GtkAllocation progress_alloc;
GdkRectangle clip;
gtk_css_gadget_get_preferred_size (priv->progress_gadget,
GTK_ORIENTATION_HORIZONTAL,
allocation->height,
&req_width, NULL,
NULL, NULL);
gtk_widget_measure (priv->progress_bar, GTK_ORIENTATION_HORIZONTAL, allocation->height,
&req_width, NULL, NULL, NULL);
extra_width = allocation->width - req_width;
progress_alloc = *allocation;
if (priv->progress_pulse_mode)
{
gdouble value = priv->progress_pulse_current;
progress_alloc.x += (gint) floor (value * extra_width);
progress_alloc.width = req_width + (gint) ceil (priv->progress_pulse_fraction * extra_width);
}
else
{
gdouble value = priv->progress_fraction;
progress_alloc.width = req_width + (gint) nearbyint (value * extra_width);
if (gtk_widget_get_direction (GTK_WIDGET (entry)) == GTK_TEXT_DIR_RTL)
progress_alloc.x += allocation->width - progress_alloc.width;
}
gtk_css_gadget_allocate (priv->progress_gadget, &progress_alloc, baseline, &clip);
gtk_widget_size_allocate_with_baseline (priv->progress_bar, &progress_alloc, baseline);
gtk_widget_get_clip (priv->progress_bar, &clip);
gdk_rectangle_union (out_clip, &clip, out_clip);
}
@@ -3597,8 +3559,8 @@ gtk_entry_render (GtkCssGadget *gadget,
priv = entry->priv;
/* Draw progress */
if (priv->progress_gadget && gtk_css_gadget_get_visible (priv->progress_gadget))
gtk_css_gadget_snapshot (priv->progress_gadget, snapshot);
if (priv->progress_bar && _gtk_widget_is_drawable (priv->progress_bar))
gtk_widget_snapshot_child (widget, priv->progress_bar, snapshot);
/* Draw text and cursor */
cr = gtk_snapshot_append_cairo (snapshot,
@@ -9813,78 +9775,28 @@ tick_cb (GtkWidget *widget,
GtkEntry *entry = GTK_ENTRY (widget);
GtkEntryPrivate *priv = entry->priv;
gint64 frame_time;
gdouble iteration, pulse_iterations, current_iterations, fraction;
if (priv->pulse2 == 0 && priv->pulse1 == 0)
return G_SOURCE_CONTINUE;
frame_time = gdk_frame_clock_get_frame_time (frame_clock);
gtk_progress_tracker_advance_frame (&priv->tracker, frame_time);
g_assert (priv->pulse2 > priv->pulse1);
pulse_iterations = (priv->pulse2 - priv->pulse1) / (gdouble) G_USEC_PER_SEC;
current_iterations = (frame_time - priv->pulse1) / (gdouble) G_USEC_PER_SEC;
iteration = gtk_progress_tracker_get_iteration (&priv->tracker);
/* Determine the fraction to move the block from one frame
* to the next when pulse_fraction is how far the block should
* move between two calls to gtk_entry_progress_pulse().
*/
fraction = priv->progress_pulse_fraction * (iteration - priv->last_iteration) / MAX (pulse_iterations, current_iterations);
priv->last_iteration = iteration;
if (current_iterations > 3 * pulse_iterations)
return G_SOURCE_CONTINUE;
/* advance the block */
if (priv->progress_pulse_way_back)
{
priv->progress_pulse_current -= fraction;
if (priv->progress_pulse_current < 0.0)
{
priv->progress_pulse_current = 0.0;
priv->progress_pulse_way_back = FALSE;
}
}
else
{
priv->progress_pulse_current += fraction;
if (priv->progress_pulse_current > 1.0 - priv->progress_pulse_fraction)
{
priv->progress_pulse_current = 1.0 - priv->progress_pulse_fraction;
priv->progress_pulse_way_back = TRUE;
}
}
gtk_widget_queue_allocate (widget);
if (priv->progress_bar)
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (priv->progress_bar));
return G_SOURCE_CONTINUE;
}
static void
gtk_entry_ensure_progress_gadget (GtkEntry *entry)
gtk_entry_ensure_progress_bar (GtkEntry *entry)
{
GtkEntryPrivate *priv = entry->priv;
if (priv->progress_gadget)
if (priv->progress_bar)
return;
priv->progress_gadget = gtk_css_custom_gadget_new ("progress",
GTK_WIDGET (entry),
priv->gadget,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
gtk_css_gadget_set_state (priv->progress_gadget,
gtk_css_node_get_state (gtk_widget_get_css_node (GTK_WIDGET (entry))));
update_node_ordering (entry);
priv->progress_bar = gtk_progress_bar_new ();
gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR (priv->progress_bar),
1.0 / 60.0);
gtk_widget_set_parent (priv->progress_bar, GTK_WIDGET (entry));
}
static void
@@ -9895,23 +9807,11 @@ gtk_entry_start_pulse_mode (GtkEntry *entry)
if (priv->progress_pulse_mode)
return;
gtk_entry_ensure_progress_gadget (entry);
gtk_css_gadget_set_visible (priv->progress_gadget, TRUE);
gtk_css_gadget_add_class (priv->progress_gadget, GTK_STYLE_CLASS_PULSE);
gtk_entry_ensure_progress_bar (entry);
gtk_widget_set_visible (priv->progress_bar, TRUE);
priv->progress_pulse_mode = TRUE;
/* How long each pulse should last depends on calls to gtk_entry_progress_pulse.
* Just start the tracker to repeat forever with iterations every second. */
gtk_progress_tracker_start (&priv->tracker, G_USEC_PER_SEC, 0, INFINITY);
priv->tick_id = gtk_widget_add_tick_callback (GTK_WIDGET (entry), tick_cb, NULL, NULL);
priv->progress_fraction = 0.0;
priv->progress_pulse_way_back = FALSE;
priv->progress_pulse_current = 0.0;
priv->pulse2 = 0;
priv->pulse1 = 0;
priv->last_iteration = 0;
}
static void
@@ -9921,8 +9821,7 @@ gtk_entry_stop_pulse_mode (GtkEntry *entry)
if (priv->progress_pulse_mode)
{
gtk_css_gadget_set_visible (priv->progress_gadget, FALSE);
gtk_css_gadget_remove_class (priv->progress_gadget, GTK_STYLE_CLASS_PULSE);
gtk_widget_set_visible (priv->progress_bar, FALSE);
priv->progress_pulse_mode = FALSE;
gtk_widget_remove_tick_callback (GTK_WIDGET (entry), priv->tick_id);
@@ -9934,13 +9833,8 @@ static void
gtk_entry_update_pulse (GtkEntry *entry)
{
GtkEntryPrivate *priv = entry->priv;
gint64 pulse_time = g_get_monotonic_time ();
if (priv->pulse2 == pulse_time)
return;
priv->pulse1 = priv->pulse2;
priv->pulse2 = pulse_time;
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (priv->progress_bar));
}
/**
@@ -9958,34 +9852,32 @@ void
gtk_entry_set_progress_fraction (GtkEntry *entry,
gdouble fraction)
{
GtkWidget *widget;
GtkEntryPrivate *private;
gdouble old_fraction;
GtkWidget *widget;
GtkEntryPrivate *priv;
gdouble old_fraction;
g_return_if_fail (GTK_IS_ENTRY (entry));
widget = GTK_WIDGET (entry);
private = entry->priv;
priv = entry->priv;
if (private->progress_pulse_mode)
if (priv->progress_pulse_mode)
old_fraction = -1;
else
old_fraction = private->progress_fraction;
old_fraction = gtk_entry_get_progress_fraction (entry);
gtk_entry_stop_pulse_mode (entry);
gtk_entry_ensure_progress_gadget (entry);
gtk_entry_ensure_progress_bar (entry);
fraction = CLAMP (fraction, 0.0, 1.0);
private->progress_fraction = fraction;
private->progress_pulse_current = 0.0;
if (fraction != old_fraction)
if (fraction != gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (priv->progress_bar)))
{
gtk_css_gadget_set_visible (private->progress_gadget, fraction > 0);
gtk_widget_set_visible (priv->progress_bar, fraction > 0);
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->progress_bar),
fraction);
g_object_notify_by_pspec (G_OBJECT (entry), entry_props[PROP_PROGRESS_FRACTION]);
gtk_widget_queue_allocate (widget);
}
}
@@ -10005,7 +9897,10 @@ gtk_entry_get_progress_fraction (GtkEntry *entry)
{
g_return_val_if_fail (GTK_IS_ENTRY (entry), 0.0);
return entry->priv->progress_fraction;
if (entry->priv->progress_bar == NULL)
return 0;
return gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (entry->priv->progress_bar));
}
/**
@@ -10022,17 +9917,20 @@ void
gtk_entry_set_progress_pulse_step (GtkEntry *entry,
gdouble fraction)
{
GtkEntryPrivate *private;
GtkEntryPrivate *priv;
g_return_if_fail (GTK_IS_ENTRY (entry));
private = entry->priv;
priv = entry->priv;
fraction = CLAMP (fraction, 0.0, 1.0);
if (fraction != private->progress_pulse_fraction)
if (priv->progress_bar == NULL)
return;
if (fraction != gtk_progress_bar_get_pulse_step (GTK_PROGRESS_BAR (priv->progress_bar)))
{
private->progress_pulse_fraction = fraction;
gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR (priv->progress_bar), fraction);
g_object_notify_by_pspec (G_OBJECT (entry), entry_props[PROP_PROGRESS_PULSE_STEP]);
}
}
@@ -10052,7 +9950,10 @@ gtk_entry_get_progress_pulse_step (GtkEntry *entry)
{
g_return_val_if_fail (GTK_IS_ENTRY (entry), 0.0);
return entry->priv->progress_pulse_fraction;
if (entry->priv->progress_bar == NULL)
return 0.0;
return gtk_progress_bar_get_pulse_step (GTK_PROGRESS_BAR (entry->priv->progress_bar));
}
/**

View File

@@ -553,7 +553,7 @@ gtk_file_chooser_button_init (GtkFileChooserButton *button)
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (priv->combo_box),
priv->name_cell, "text", 1, NULL);
gtk_widget_hide (priv->combo_box);
gtk_widget_set_parent (priv->combo_box, GTK_WIDGET (button));
priv->child = priv->button;

View File

@@ -215,6 +215,8 @@ struct _GtkFileChooserWidgetPrivate {
GtkFileSystem *file_system;
GtkWidget *box;
/* Save mode widgets */
GtkWidget *save_widgets;
GtkWidget *save_widgets_table;
@@ -612,7 +614,7 @@ static void switch_to_home_dir (GtkFileChooserWidget *impl);
G_DEFINE_TYPE_WITH_CODE (GtkFileChooserWidget, gtk_file_chooser_widget, GTK_TYPE_BOX,
G_DEFINE_TYPE_WITH_CODE (GtkFileChooserWidget, gtk_file_chooser_widget, GTK_TYPE_WIDGET,
G_ADD_PRIVATE (GtkFileChooserWidget)
G_IMPLEMENT_INTERFACE (GTK_TYPE_FILE_CHOOSER,
gtk_file_chooser_widget_iface_init)
@@ -3652,6 +3654,12 @@ gtk_file_chooser_widget_dispose (GObject *object)
priv->external_entry = NULL;
}
if (priv->box)
{
gtk_widget_unparent (priv->box);
priv->box = NULL;
}
g_clear_object (&priv->long_press_gesture);
G_OBJECT_CLASS (gtk_file_chooser_widget_parent_class)->dispose (object);
@@ -8062,6 +8070,43 @@ add_normal_and_shifted_binding (GtkBindingSet *binding_set,
signal_name, 0);
}
static void
gtk_file_chooser_widget_measure (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline)
{
GtkFileChooserWidget *self = GTK_FILE_CHOOSER_WIDGET (widget);
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (self);
gtk_widget_measure (priv->box, orientation, for_size,
minimum, natural,
minimum_baseline, natural_baseline);
}
static void
gtk_file_chooser_widget_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
GtkFileChooserWidget *self = GTK_FILE_CHOOSER_WIDGET (widget);
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (self);
gtk_widget_snapshot_child (widget, priv->box, snapshot);
}
static void
gtk_file_chooser_widget_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkFileChooserWidget *self = GTK_FILE_CHOOSER_WIDGET (widget);
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (self);
gtk_widget_size_allocate (priv->box, allocation);
}
static void
gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
{
@@ -8086,6 +8131,9 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
widget_class->style_updated = gtk_file_chooser_widget_style_updated;
widget_class->screen_changed = gtk_file_chooser_widget_screen_changed;
widget_class->key_press_event = gtk_file_chooser_widget_key_press_event;
widget_class->measure = gtk_file_chooser_widget_measure;
widget_class->size_allocate = gtk_file_chooser_widget_size_allocate;
widget_class->snapshot = gtk_file_chooser_widget_snapshot;
/*
* Signals
@@ -8478,6 +8526,7 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, rename_file_error_label);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, rename_file_popover);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, remote_warning_bar);
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, box);
/* And a *lot* of callbacks to bind ... */
gtk_widget_class_bind_template_callback (widget_class, browse_files_key_press_event_cb);
@@ -8607,6 +8656,8 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *impl)
impl->priv = gtk_file_chooser_widget_get_instance_private (impl);
priv = impl->priv;
gtk_widget_set_has_window (GTK_WIDGET (impl), FALSE);
priv->local_only = FALSE;
priv->preview_widget_active = TRUE;
priv->use_preview_label = TRUE;

View File

@@ -41,7 +41,7 @@ typedef struct _GtkFileChooserWidgetClass GtkFileChooserWidgetClass;
struct _GtkFileChooserWidget
{
GtkBox parent_instance;
GtkWidget parent_instance;
GtkFileChooserWidgetPrivate *priv;
};
@@ -52,7 +52,7 @@ struct _GtkFileChooserWidget
*/
struct _GtkFileChooserWidgetClass
{
GtkBoxClass parent_class;
GtkWidgetClass parent_class;
/*< private >*/

View File

@@ -81,6 +81,7 @@
struct _GtkFontChooserWidgetPrivate
{
GtkWidget *grid;
GtkWidget *search_entry;
GtkWidget *family_face_list;
GtkTreeViewColumn *family_face_column;
@@ -109,16 +110,6 @@ struct _GtkFontChooserWidgetPrivate
guint last_fontconfig_timestamp;
};
/* This is the initial fixed height and the top padding of the preview entry */
#define PREVIEW_HEIGHT 72
#define PREVIEW_TOP_PADDING 6
/* These are the sizes of the font, style & size lists. */
#define FONT_LIST_HEIGHT 136
#define FONT_LIST_WIDTH 190
#define FONT_STYLE_LIST_WIDTH 170
#define FONT_SIZE_LIST_WIDTH 60
/* Keep in line with GtkTreeStore defined in gtkfontchooserwidget.ui */
enum {
FAMILY_COLUMN,
@@ -181,7 +172,7 @@ static void gtk_font_chooser_widget_cell_data_func (GtkTreeViewColum
static void gtk_font_chooser_widget_iface_init (GtkFontChooserIface *iface);
G_DEFINE_TYPE_WITH_CODE (GtkFontChooserWidget, gtk_font_chooser_widget, GTK_TYPE_BOX,
G_DEFINE_TYPE_WITH_CODE (GtkFontChooserWidget, gtk_font_chooser_widget, GTK_TYPE_WIDGET,
G_ADD_PRIVATE (GtkFontChooserWidget)
G_IMPLEMENT_INTERFACE (GTK_TYPE_FONT_CHOOSER,
gtk_font_chooser_widget_iface_init))
@@ -574,6 +565,58 @@ row_deleted_cb (GtkTreeModel *model,
gtk_stack_set_visible_child_name (GTK_STACK (priv->list_stack), "empty");
}
static void
gtk_font_chooser_widget_measure (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline)
{
GtkFontChooserWidget *self = GTK_FONT_CHOOSER_WIDGET (widget);
GtkFontChooserWidgetPrivate *priv = gtk_font_chooser_widget_get_instance_private (self);
gtk_widget_measure (priv->grid, orientation, for_size,
minimum, natural,
minimum_baseline, natural_baseline);
}
static void
gtk_font_chooser_widget_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
GtkFontChooserWidget *self = GTK_FONT_CHOOSER_WIDGET (widget);
GtkFontChooserWidgetPrivate *priv = gtk_font_chooser_widget_get_instance_private (self);
gtk_widget_snapshot_child (widget, priv->grid, snapshot);
}
static void
gtk_font_chooser_widget_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkFontChooserWidget *self = GTK_FONT_CHOOSER_WIDGET (widget);
GtkFontChooserWidgetPrivate *priv = gtk_font_chooser_widget_get_instance_private (self);
gtk_widget_size_allocate (priv->grid, allocation);
}
static void
gtk_font_chooser_widget_dispose (GObject *object)
{
GtkFontChooserWidget *self = GTK_FONT_CHOOSER_WIDGET (object);
GtkFontChooserWidgetPrivate *priv = gtk_font_chooser_widget_get_instance_private (self);
if (priv->grid)
{
gtk_widget_unparent (priv->grid);
priv->grid = NULL;
}
G_OBJECT_CLASS (gtk_font_chooser_widget_parent_class)->dispose (object);
}
static void
gtk_font_chooser_widget_class_init (GtkFontChooserWidgetClass *klass)
{
@@ -585,8 +628,12 @@ gtk_font_chooser_widget_class_init (GtkFontChooserWidgetClass *klass)
widget_class->screen_changed = gtk_font_chooser_widget_screen_changed;
widget_class->style_updated = gtk_font_chooser_widget_style_updated;
widget_class->measure = gtk_font_chooser_widget_measure;
widget_class->size_allocate = gtk_font_chooser_widget_size_allocate;
widget_class->snapshot = gtk_font_chooser_widget_snapshot;
gobject_class->finalize = gtk_font_chooser_widget_finalize;
gobject_class->dispose = gtk_font_chooser_widget_dispose;
gobject_class->set_property = gtk_font_chooser_widget_set_property;
gobject_class->get_property = gtk_font_chooser_widget_get_property;
@@ -607,6 +654,7 @@ gtk_font_chooser_widget_class_init (GtkFontChooserWidgetClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, GtkFontChooserWidget, preview);
gtk_widget_class_bind_template_child_private (widget_class, GtkFontChooserWidget, size_spin);
gtk_widget_class_bind_template_child_private (widget_class, GtkFontChooserWidget, size_slider);
gtk_widget_class_bind_template_child_private (widget_class, GtkFontChooserWidget, grid);
gtk_widget_class_bind_template_callback (widget_class, text_changed_cb);
gtk_widget_class_bind_template_callback (widget_class, stop_search_cb);
@@ -631,6 +679,8 @@ gtk_font_chooser_widget_init (GtkFontChooserWidget *fontchooser)
fontchooser->priv = gtk_font_chooser_widget_get_instance_private (fontchooser);
priv = fontchooser->priv;
gtk_widget_set_has_window (GTK_WIDGET (fontchooser), FALSE);
gtk_widget_init_template (GTK_WIDGET (fontchooser));
/* Default preview string */

View File

@@ -22,7 +22,7 @@
#error "Only <gtk/gtk.h> can be included directly."
#endif
#include <gtk/gtkbox.h>
#include <gtk/gtkwidget.h>
G_BEGIN_DECLS
@@ -39,7 +39,7 @@ typedef struct _GtkFontChooserWidgetClass GtkFontChooserWidgetClass;
struct _GtkFontChooserWidget
{
GtkBox parent_instance;
GtkWidget parent_instance;
/*< private >*/
GtkFontChooserWidgetPrivate *priv;
@@ -51,7 +51,7 @@ struct _GtkFontChooserWidget
*/
struct _GtkFontChooserWidgetClass
{
GtkBoxClass parent_class;
GtkWidgetClass parent_class;
/*< private >*/

View File

@@ -190,7 +190,7 @@ static void gtk_info_bar_buildable_custom_finished (GtkBuildable *build
gpointer user_data);
G_DEFINE_TYPE_WITH_CODE (GtkInfoBar, gtk_info_bar, GTK_TYPE_BOX,
G_DEFINE_TYPE_WITH_CODE (GtkInfoBar, gtk_info_bar, GTK_TYPE_WIDGET,
G_ADD_PRIVATE (GtkInfoBar)
G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
gtk_info_bar_buildable_interface_init))
@@ -307,6 +307,58 @@ gtk_info_bar_close (GtkInfoBar *info_bar)
GTK_RESPONSE_CANCEL);
}
static void
gtk_info_bar_measure (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline)
{
GtkInfoBar *self = GTK_INFO_BAR (widget);
GtkInfoBarPrivate *priv = gtk_info_bar_get_instance_private (self);
gtk_widget_measure (priv->revealer, orientation, for_size,
minimum, natural,
minimum_baseline, natural_baseline);
}
static void
gtk_info_bar_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkInfoBar *self = GTK_INFO_BAR (widget);
GtkInfoBarPrivate *priv = gtk_info_bar_get_instance_private (self);
gtk_widget_size_allocate (priv->revealer, allocation);
}
static void
gtk_info_bar_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
GtkInfoBar *self = GTK_INFO_BAR (widget);
GtkInfoBarPrivate *priv = gtk_info_bar_get_instance_private (self);
gtk_widget_snapshot_child (widget, priv->revealer, snapshot);
}
static void
gtk_info_bar_dispose (GObject *object)
{
GtkInfoBar *self = GTK_INFO_BAR (object);
GtkInfoBarPrivate *priv = gtk_info_bar_get_instance_private (self);
if (priv->revealer)
{
gtk_widget_unparent (priv->revealer);
priv->revealer = NULL;
}
G_OBJECT_CLASS (gtk_info_bar_parent_class)->dispose (object);
}
static void
gtk_info_bar_class_init (GtkInfoBarClass *klass)
{
@@ -319,6 +371,11 @@ gtk_info_bar_class_init (GtkInfoBarClass *klass)
object_class->get_property = gtk_info_bar_get_property;
object_class->set_property = gtk_info_bar_set_property;
object_class->dispose = gtk_info_bar_dispose;
widget_class->measure = gtk_info_bar_measure;
widget_class->size_allocate = gtk_info_bar_size_allocate;
widget_class->snapshot = gtk_info_bar_snapshot;
klass->close = gtk_info_bar_close;
@@ -433,7 +490,7 @@ gtk_info_bar_init (GtkInfoBar *info_bar)
priv = info_bar->priv = gtk_info_bar_get_instance_private (info_bar);
gtk_widget_set_redraw_on_allocate (widget, TRUE);
gtk_widget_set_has_window (GTK_WIDGET (info_bar), FALSE);
/* message-type is a CONSTRUCT property, so we init to a value
* different from its default to trigger its property setter

View File

@@ -56,7 +56,7 @@ typedef struct _GtkInfoBar GtkInfoBar;
struct _GtkInfoBar
{
GtkBox parent;
GtkWidget parent_instance;
/*< private > */
GtkInfoBarPrivate *priv;
@@ -65,7 +65,7 @@ struct _GtkInfoBar
struct _GtkInfoBarClass
{
GtkBoxClass parent_class;
GtkWidgetClass parent_class;
/* Signals */
void (* response) (GtkInfoBar *info_bar, gint response_id);

View File

@@ -89,19 +89,11 @@
* epiphany has for page loading progress.
*/
#define MIN_HORIZONTAL_BAR_WIDTH 150
#define MIN_HORIZONTAL_BAR_HEIGHT 6
#define MIN_VERTICAL_BAR_WIDTH 7
#define MIN_VERTICAL_BAR_HEIGHT 80
#define DEFAULT_PULSE_DURATION 250000000
struct _GtkProgressBarPrivate
{
gchar *text;
GtkWidget *label;
GtkCssGadget *gadget;
GtkCssGadget *text_gadget;
GtkCssGadget *trough_gadget;
GtkCssGadget *progress_gadget;
@@ -121,9 +113,9 @@ struct _GtkProgressBarPrivate
guint activity_dir : 1;
guint activity_mode : 1;
guint ellipsize : 3;
guint show_text : 1;
guint inverted : 1;
guint text_set : 1;
};
enum {
@@ -202,21 +194,6 @@ static gboolean gtk_progress_bar_render_trough (GtkCssGadget *gadget,
gint width,
gint height,
gpointer data);
static void gtk_progress_bar_measure_text (GtkCssGadget *gadget,
GtkOrientation orientation,
gint for_size,
gint *minimum,
gint *natural,
gint *minimum_baseline,
gint *natural_baseline,
gpointer data);
static gboolean gtk_progress_bar_render_text (GtkCssGadget *gadget,
GtkSnapshot *snapshot,
gint x,
gint y,
gint width,
gint height,
gpointer data);
G_DEFINE_TYPE_WITH_CODE (GtkProgressBar, gtk_progress_bar, GTK_TYPE_WIDGET,
G_ADD_PRIVATE (GtkProgressBar)
@@ -436,8 +413,6 @@ update_node_state (GtkProgressBar *pbar)
gtk_css_gadget_set_state (priv->gadget, state);
gtk_css_gadget_set_state (priv->trough_gadget, state);
gtk_css_gadget_set_state (priv->progress_gadget, state);
if (priv->text_gadget)
gtk_css_gadget_set_state (priv->text_gadget, state);
}
static void
@@ -455,10 +430,9 @@ gtk_progress_bar_init (GtkProgressBar *pbar)
priv->activity_pos = 0;
priv->activity_dir = 1;
priv->activity_blocks = 5;
priv->ellipsize = PANGO_ELLIPSIZE_NONE;
priv->show_text = FALSE;
priv->text_set = FALSE;
priv->text = NULL;
priv->fraction = 0.0;
gtk_widget_set_has_window (GTK_WIDGET (pbar), FALSE);
@@ -561,13 +535,13 @@ gtk_progress_bar_get_property (GObject *object,
g_value_set_double (value, priv->pulse_fraction);
break;
case PROP_TEXT:
g_value_set_string (value, priv->text);
g_value_set_string (value, gtk_progress_bar_get_text (pbar));
break;
case PROP_SHOW_TEXT:
g_value_set_boolean (value, priv->show_text);
break;
case PROP_ELLIPSIZE:
g_value_set_enum (value, priv->ellipsize);
g_value_set_enum (value, gtk_progress_bar_get_ellipsize (pbar));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -601,9 +575,9 @@ gtk_progress_bar_finalize (GObject *object)
if (priv->activity_mode)
gtk_progress_bar_act_mode_leave (pbar);
g_free (priv->text);
if (priv->label)
gtk_widget_unparent (priv->label);
g_clear_object (&priv->text_gadget);
g_clear_object (&priv->progress_gadget);
g_clear_object (&priv->trough_gadget);
g_clear_object (&priv->gadget);
@@ -611,17 +585,6 @@ gtk_progress_bar_finalize (GObject *object)
G_OBJECT_CLASS (gtk_progress_bar_parent_class)->finalize (object);
}
static gchar *
get_current_text (GtkProgressBar *pbar)
{
GtkProgressBarPrivate *priv = pbar->priv;
if (priv->text)
return g_strdup (priv->text);
else
return g_strdup_printf (C_("progress bar label", "%.0f%%"), priv->fraction * 100.0);
}
static void
gtk_progress_bar_measure (GtkCssGadget *gadget,
GtkOrientation orientation,
@@ -643,11 +606,8 @@ gtk_progress_bar_measure (GtkCssGadget *gadget,
priv = pbar->priv;
if (priv->show_text)
gtk_css_gadget_get_preferred_size (priv->text_gadget,
orientation,
-1,
&text_minimum, &text_natural,
NULL, NULL);
gtk_widget_measure (priv->label, orientation, -1,
&text_minimum, &text_natural, NULL, NULL);
else
text_minimum = text_natural = 0;
@@ -685,89 +645,6 @@ gtk_progress_bar_measure (GtkCssGadget *gadget,
}
}
static PangoLayout *
gtk_progress_bar_get_layout (GtkProgressBar *pbar)
{
PangoLayout *layout;
gchar *buf;
GtkCssStyle *style;
PangoAttrList *attrs;
PangoFontDescription *desc;
buf = get_current_text (pbar);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (pbar), buf);
style = gtk_css_node_get_style (gtk_css_gadget_get_node (pbar->priv->text_gadget));
attrs = gtk_css_style_get_pango_attributes (style);
desc = gtk_css_style_get_pango_font (style);
pango_layout_set_attributes (layout, attrs);
pango_layout_set_font_description (layout, desc);
if (attrs)
pango_attr_list_unref (attrs);
pango_font_description_free (desc);
g_free (buf);
return layout;
}
static void
gtk_progress_bar_measure_text (GtkCssGadget *gadget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline,
gpointer data)
{
GtkWidget *widget;
GtkProgressBar *pbar;
GtkProgressBarPrivate *priv;
PangoLayout *layout;
PangoRectangle logical_rect;
widget = gtk_css_gadget_get_owner (gadget);
pbar = GTK_PROGRESS_BAR (widget);
priv = pbar->priv;
layout = gtk_progress_bar_get_layout (pbar);
pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
if (orientation == GTK_ORIENTATION_HORIZONTAL)
{
if (priv->ellipsize)
{
PangoContext *context;
PangoFontMetrics *metrics;
gint char_width;
/* The minimum size for ellipsized text is ~ 3 chars */
context = pango_layout_get_context (layout);
metrics = pango_context_get_metrics (context,
pango_layout_get_font_description (layout),
pango_context_get_language (context));
char_width = pango_font_metrics_get_approximate_char_width (metrics);
pango_font_metrics_unref (metrics);
*minimum = PANGO_PIXELS (char_width) * 3;
}
else
*minimum = logical_rect.width;
*natural = MAX (*minimum, logical_rect.width);
}
else
*minimum = *natural = logical_rect.height;
g_object_unref (layout);
}
static void
gtk_progress_bar_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
@@ -830,16 +707,11 @@ gtk_progress_bar_allocate (GtkCssGadget *gadget,
if (!priv->show_text)
return;
gtk_css_gadget_get_preferred_size (priv->text_gadget,
GTK_ORIENTATION_HORIZONTAL,
-1,
&text_min, &text_nat,
NULL, NULL);
gtk_css_gadget_get_preferred_size (priv->text_gadget,
GTK_ORIENTATION_VERTICAL,
-1,
&text_height, NULL,
NULL, NULL);
gtk_widget_measure (priv->label, GTK_ORIENTATION_HORIZONTAL, -1,
&text_min, &text_nat, NULL, NULL);
gtk_widget_measure (priv->label, GTK_ORIENTATION_VERTICAL, -1,
&text_height, NULL, NULL, NULL);
text_width = CLAMP (text_nat, text_min, allocation->width);
@@ -858,7 +730,8 @@ gtk_progress_bar_allocate (GtkCssGadget *gadget,
alloc.height = text_height;
}
gtk_css_gadget_allocate (priv->text_gadget, &alloc, -1, &text_clip);
gtk_widget_size_allocate (priv->label, &alloc);
gtk_widget_get_clip (priv->label, &text_clip);
gdk_rectangle_union (out_clip, &text_clip, out_clip);
}
@@ -1072,42 +945,6 @@ gtk_progress_bar_act_mode_leave (GtkProgressBar *pbar)
update_node_classes (pbar);
}
static gboolean
gtk_progress_bar_render_text (GtkCssGadget *gadget,
GtkSnapshot *snapshot,
int x,
int y,
int width,
int height,
gpointer data)
{
GtkWidget *widget;
GtkProgressBar *pbar;
GtkProgressBarPrivate *priv;
GtkStyleContext *context;
PangoLayout *layout;
widget = gtk_css_gadget_get_owner (gadget);
pbar = GTK_PROGRESS_BAR (widget);
priv = pbar->priv;
context = gtk_widget_get_style_context (widget);
gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (gadget));
layout = gtk_progress_bar_get_layout (pbar);
pango_layout_set_ellipsize (layout, priv->ellipsize);
if (priv->ellipsize)
pango_layout_set_width (layout, width * PANGO_SCALE);
gtk_snapshot_render_layout (snapshot, context, x, y, layout);
g_object_unref (layout);
gtk_style_context_restore (context);
return FALSE;
}
static gboolean
gtk_progress_bar_render_trough (GtkCssGadget *gadget,
GtkSnapshot *snapshot,
@@ -1144,8 +981,8 @@ gtk_progress_bar_render (GtkCssGadget *gadget,
priv = GTK_PROGRESS_BAR (widget)->priv;
gtk_css_gadget_snapshot (priv->trough_gadget, snapshot);
if (priv->show_text)
gtk_css_gadget_snapshot (priv->text_gadget, snapshot);
if (priv->label)
gtk_widget_snapshot_child (widget, priv->label, snapshot);
return FALSE;
}
@@ -1205,6 +1042,15 @@ gtk_progress_bar_set_fraction (GtkProgressBar *pbar,
gtk_widget_queue_allocate (GTK_WIDGET (pbar));
update_fraction_classes (pbar);
if (!priv->text_set && priv->label != NULL)
{
char *text = g_strdup_printf (C_("progress bar label", "%.0f %%"), priv->fraction * 100.0);
gtk_label_set_label (GTK_LABEL (priv->label), text);
g_free (text);
}
g_object_notify_by_pspec (G_OBJECT (pbar), progress_props[PROP_FRACTION]);
}
@@ -1261,36 +1107,25 @@ gtk_progress_bar_set_text (GtkProgressBar *pbar,
const gchar *text)
{
GtkProgressBarPrivate *priv;
const char *current_text = NULL;
g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
priv = pbar->priv;
if (priv->label)
current_text = gtk_label_get_label (GTK_LABEL (priv->label));
/* Don't notify again if nothing's changed. */
if (g_strcmp0 (priv->text, text) == 0)
if (g_strcmp0 (current_text, text) == 0)
return;
g_free (priv->text);
priv->text = g_strdup (text);
gtk_widget_queue_resize (GTK_WIDGET (pbar));
priv->text_set = TRUE;
gtk_label_set_label (GTK_LABEL (priv->label), text);
g_object_notify_by_pspec (G_OBJECT (pbar), progress_props[PROP_TEXT]);
}
static void
gtk_progress_bar_text_style_changed (GtkCssNode *node,
GtkCssStyleChange *change,
GtkProgressBar *pbar)
{
if (change == NULL ||
gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TEXT_ATTRS) ||
gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_FONT))
{
gtk_widget_queue_resize (GTK_WIDGET (pbar));
}
}
/**
* gtk_progress_bar_set_show_text:
* @pbar: a #GtkProgressBar
@@ -1326,25 +1161,24 @@ gtk_progress_bar_set_show_text (GtkProgressBar *pbar,
if (show_text)
{
priv->text_gadget = gtk_css_custom_gadget_new ("text",
GTK_WIDGET (pbar),
priv->gadget,
priv->trough_gadget,
gtk_progress_bar_measure_text,
NULL,
gtk_progress_bar_render_text,
NULL,
NULL);
g_signal_connect (gtk_css_gadget_get_node (priv->text_gadget), "style-changed",
G_CALLBACK (gtk_progress_bar_text_style_changed), pbar);
priv->label = g_object_new (GTK_TYPE_LABEL,
"css-name", "text",
NULL);
gtk_widget_set_parent (priv->label, GTK_WIDGET (pbar));
update_node_state (pbar);
if (!priv->text_set)
{
char *text = g_strdup_printf (C_("progress bar label", "%.0f %%"), priv->fraction * 100.0);
gtk_label_set_label (GTK_LABEL (priv->label), text);
g_free (text);
}
}
else
{
if (priv->text_gadget)
gtk_css_node_set_parent (gtk_css_gadget_get_node (priv->text_gadget), NULL);
g_clear_object (&priv->text_gadget);
gtk_widget_unparent (priv->label);
g_clear_object (&priv->label);
}
gtk_widget_queue_resize (GTK_WIDGET (pbar));
@@ -1481,7 +1315,7 @@ gtk_progress_bar_get_text (GtkProgressBar *pbar)
{
g_return_val_if_fail (GTK_IS_PROGRESS_BAR (pbar), NULL);
return pbar->priv->text;
return pbar->priv->label ? gtk_label_get_label (GTK_LABEL (pbar->priv->label)) : NULL;
}
/**
@@ -1554,12 +1388,14 @@ gtk_progress_bar_set_ellipsize (GtkProgressBar *pbar,
priv = pbar->priv;
if ((PangoEllipsizeMode)priv->ellipsize != mode)
if (priv->label == NULL)
return;
if (gtk_label_get_ellipsize (GTK_LABEL (priv->label)) != mode)
{
priv->ellipsize = mode;
gtk_label_set_ellipsize (GTK_LABEL (priv->label), mode);
g_object_notify_by_pspec (G_OBJECT (pbar), progress_props[PROP_ELLIPSIZE]);
gtk_widget_queue_resize (GTK_WIDGET (pbar));
}
}
@@ -1579,5 +1415,8 @@ gtk_progress_bar_get_ellipsize (GtkProgressBar *pbar)
{
g_return_val_if_fail (GTK_IS_PROGRESS_BAR (pbar), PANGO_ELLIPSIZE_NONE);
return pbar->priv->ellipsize;
if (pbar->priv->label == NULL)
return PANGO_ELLIPSIZE_NONE;
return gtk_label_get_ellipsize (GTK_LABEL (pbar->priv->label));
}

View File

@@ -25,6 +25,7 @@
#include "gtktypebuiltins.h"
#include "gtksettings.h"
#include "gtkdialogprivate.h"
#include "gtkbox.h"
#include <stdarg.h>
@@ -206,7 +207,6 @@ gtk_recent_chooser_dialog_constructed (GObject *object)
gtk_box_pack_start (GTK_BOX (content_area),
priv->chooser, TRUE, TRUE);
gtk_widget_show (priv->chooser);
_gtk_recent_chooser_set_delegate (GTK_RECENT_CHOOSER (object),
GTK_RECENT_CHOOSER (priv->chooser));

View File

@@ -62,7 +62,7 @@ static void gtk_recent_chooser_widget_finalize (GObject *o
G_DEFINE_TYPE_WITH_CODE (GtkRecentChooserWidget,
gtk_recent_chooser_widget,
GTK_TYPE_BOX,
GTK_TYPE_WIDGET,
G_ADD_PRIVATE (GtkRecentChooserWidget)
G_IMPLEMENT_INTERFACE (GTK_TYPE_RECENT_CHOOSER,
_gtk_recent_chooser_delegate_iface_init))
@@ -74,8 +74,8 @@ gtk_recent_chooser_widget_constructed (GObject *gobject)
self->priv->chooser = _gtk_recent_chooser_default_new (self->priv->manager);
gtk_container_add (GTK_CONTAINER (self), self->priv->chooser);
gtk_widget_show (self->priv->chooser);
gtk_widget_set_parent (self->priv->chooser, GTK_WIDGET (self));
_gtk_recent_chooser_set_delegate (GTK_RECENT_CHOOSER (self),
GTK_RECENT_CHOOSER (self->priv->chooser));
}
@@ -120,20 +120,64 @@ gtk_recent_chooser_widget_finalize (GObject *object)
GtkRecentChooserWidget *self = GTK_RECENT_CHOOSER_WIDGET (object);
self->priv->manager = NULL;
gtk_widget_unparent (self->priv->chooser);
G_OBJECT_CLASS (gtk_recent_chooser_widget_parent_class)->finalize (object);
}
static void
gtk_recent_chooser_widget_measure (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline)
{
GtkRecentChooserWidget *self = GTK_RECENT_CHOOSER_WIDGET (widget);
GtkRecentChooserWidgetPrivate *priv = gtk_recent_chooser_widget_get_instance_private (self);
gtk_widget_measure (priv->chooser, orientation, for_size,
minimum, natural,
minimum_baseline, natural_baseline);
}
static void
gtk_recent_chooser_widget_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
GtkRecentChooserWidget *self = GTK_RECENT_CHOOSER_WIDGET (widget);
GtkRecentChooserWidgetPrivate *priv = gtk_recent_chooser_widget_get_instance_private (self);
gtk_widget_snapshot_child (widget, priv->chooser, snapshot);
}
static void
gtk_recent_chooser_widget_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkRecentChooserWidget *self = GTK_RECENT_CHOOSER_WIDGET (widget);
GtkRecentChooserWidgetPrivate *priv = gtk_recent_chooser_widget_get_instance_private (self);
gtk_widget_size_allocate (priv->chooser, allocation);
}
static void
gtk_recent_chooser_widget_class_init (GtkRecentChooserWidgetClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
gobject_class->constructed = gtk_recent_chooser_widget_constructed;
gobject_class->set_property = gtk_recent_chooser_widget_set_property;
gobject_class->get_property = gtk_recent_chooser_widget_get_property;
gobject_class->finalize = gtk_recent_chooser_widget_finalize;
widget_class->measure = gtk_recent_chooser_widget_measure;
widget_class->size_allocate = gtk_recent_chooser_widget_size_allocate;
widget_class->snapshot = gtk_recent_chooser_widget_snapshot;
_gtk_recent_chooser_install_properties (gobject_class);
}
@@ -142,8 +186,7 @@ gtk_recent_chooser_widget_init (GtkRecentChooserWidget *widget)
{
widget->priv = gtk_recent_chooser_widget_get_instance_private (widget);
gtk_orientable_set_orientation (GTK_ORIENTABLE (widget),
GTK_ORIENTATION_VERTICAL);
gtk_widget_set_has_window (GTK_WIDGET (widget), FALSE);
}
/*

View File

@@ -24,7 +24,7 @@
#endif
#include <gtk/gtkrecentchooser.h>
#include <gtk/gtkbox.h>
#include <gtk/gtkwidget.h>
G_BEGIN_DECLS
@@ -42,7 +42,7 @@ typedef struct _GtkRecentChooserWidgetPrivate GtkRecentChooserWidgetPrivate;
struct _GtkRecentChooserWidget
{
GtkBox parent_instance;
GtkWidget parent_instance;
/*< private >*/
GtkRecentChooserWidgetPrivate *priv;
@@ -50,7 +50,7 @@ struct _GtkRecentChooserWidget
struct _GtkRecentChooserWidgetClass
{
GtkBoxClass parent_class;
GtkWidgetClass parent_class;
/* Padding for future expansion */
void (*_gtk_reserved1) (void);

View File

@@ -3812,6 +3812,7 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class)
priv->focus_on_click = TRUE;
#ifdef G_ENABLE_DEBUG
priv->highlight_resize = FALSE;
priv->in_size_allocate = FALSE;
#endif
switch (_gtk_widget_get_direction (widget))
@@ -5112,6 +5113,9 @@ gtk_widget_queue_allocate (GtkWidget *widget)
{
g_return_if_fail (GTK_IS_WIDGET (widget));
if (widget->priv->in_size_allocate)
g_warning ("%s on %s %p while in size_allocate", __FUNCTION__, G_OBJECT_TYPE_NAME (widget), widget);
if (_gtk_widget_get_realized (widget))
gtk_widget_queue_draw (widget);
@@ -5176,6 +5180,9 @@ gtk_widget_queue_resize (GtkWidget *widget)
{
g_return_if_fail (GTK_IS_WIDGET (widget));
if (widget->priv->in_size_allocate)
g_warning ("%s on %s %p while in size_allocate", __FUNCTION__, G_OBJECT_TYPE_NAME (widget), widget);
if (_gtk_widget_get_realized (widget))
gtk_widget_queue_draw (widget);
@@ -5196,6 +5203,9 @@ gtk_widget_queue_resize_no_redraw (GtkWidget *widget)
{
g_return_if_fail (GTK_IS_WIDGET (widget));
if (widget->priv->in_size_allocate)
g_warning ("%s on %s %p while in size_allocate", __FUNCTION__, G_OBJECT_TYPE_NAME (widget), widget);
gtk_widget_queue_resize_internal (widget);
}
@@ -5338,6 +5348,8 @@ gtk_widget_size_allocate_with_baseline (GtkWidget *widget,
if (!priv->visible && !_gtk_widget_is_toplevel (widget))
return;
priv->in_size_allocate = TRUE;
gtk_widget_push_verify_invariants (widget);
#ifdef G_ENABLE_DEBUG
@@ -5536,6 +5548,8 @@ out:
gtk_widget_ensure_allocate (widget);
gtk_widget_pop_verify_invariants (widget);
priv->in_size_allocate = FALSE;
}
@@ -12163,6 +12177,15 @@ static GQuark quark_builder_has_focus = 0;
static GQuark quark_builder_atk_relations = 0;
static GQuark quark_builder_set_name = 0;
static void
gtk_widget_buildable_add_child (GtkBuildable *buildable,
GtkBuilder *builder,
GObject *child,
const gchar *type)
{
gtk_widget_set_parent (GTK_WIDGET (child), GTK_WIDGET (buildable));
}
static void
gtk_widget_buildable_interface_init (GtkBuildableIface *iface)
{
@@ -12178,6 +12201,7 @@ gtk_widget_buildable_interface_init (GtkBuildableIface *iface)
iface->parser_finished = gtk_widget_buildable_parser_finished;
iface->custom_tag_start = gtk_widget_buildable_custom_tag_start;
iface->custom_finished = gtk_widget_buildable_custom_finished;
iface->add_child = gtk_widget_buildable_add_child;
}
static void
@@ -15429,9 +15453,15 @@ gtk_widget_snapshot (GtkWidget *widget,
double opacity;
cairo_rectangle_int_t offset_clip;
if (_gtk_widget_get_alloc_needed (widget))
if (!_gtk_widget_is_drawable (widget))
return;
if (_gtk_widget_get_alloc_needed (widget))
{
g_warning ("Trying to snapshot %s %p without a current allocation", G_OBJECT_TYPE_NAME (widget), widget);
return;
}
priv = widget->priv;
offset_clip = priv->clip;
offset_clip.x -= priv->allocation.x;

View File

@@ -47,6 +47,7 @@ struct _GtkWidgetPrivate
#ifdef G_ENABLE_DEBUG
guint highlight_resize : 1;
guint in_size_allocate : 1;
#endif
guint in_destruction : 1;

View File

@@ -1,884 +0,0 @@
@define-color fg_color #000;
@define-color bg_color #dcdad5;
@define-color text_color #000;
@define-color base_color #fff;
@define-color selected_bg_color #4b6983;
@define-color selected_fg_color #fff;
@define-color tooltip_bg_color #eee1b3;
@define-color tooltip_fg_color #000;
@define-color placeholder_text_color #808080;
@define-color info_fg_color rgb (181, 171, 156);
@define-color info_bg_color rgb (252, 252, 189);
@define-color warning_fg_color rgb (173, 120, 41);
@define-color warning_bg_color rgb (250, 173, 61);
@define-color question_fg_color rgb (97, 122, 214);
@define-color question_bg_color rgb (138, 173, 212);
@define-color error_fg_color rgb (166, 38, 38);
@define-color error_bg_color rgb (237, 54, 54);
@define-color success_bg_color #4e9a06;
* {
color: @fg_color;
border-color: shade (@bg_color, 0.6);
padding: 2px;
}
.background, .button, .slider {
background-color: @bg_color;
}
.popover {
border-color: darker(@bg_color);
border-width: 1px;
border-style: solid;
}
.expander, GtkTreeView.view.expander {
color: #fff;
}
.expander:hover,
GtkTreeView.view.expander:selected:hover {
color: @text_color;
}
GtkTreeView.dnd {
border-color: @internal_element_color;
border-radius: 0;
border-width: 1px;
border-style: solid;
}
*:disabled {
border-color: shade (@bg_color, 0.7);
background-color: shade (@bg_color, 0.9);
color: shade (@bg_color, 0.7);
}
.entry.read-only {
border-color: shade (@bg_color, 0.7);
background-color: shade (@bg_color, 0.9);
}
.entry:selected {
background-color: shade (@bg_color, 0.9);
color: @fg_color;
}
.entry:selected:focus {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.view {
border-width: 0;
border-radius: 0;
background-color: @base_color;
color: @text_color;
}
.view:selected {
background-color: shade (@bg_color, 0.9);
color: @fg_color;
}
.view:selected:focus {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.view column:sorted row,
.view column:sorted row:hover {
background-color: shade (@bg_color, 0.85);
}
.view column:sorted row:nth-child(odd),
.view column:sorted row:nth-child(odd):hover {
background-color: shade (@bg_color, 0.8);
}
.view row,
.view row:hover {
background-color: @base_color;
color: @text_color;
}
.view row:nth-child(odd),
.view row:nth-child(odd):hover {
background-color: shade (@base_color, 0.93);
}
.view row:selected:focus {
background-color: @selected_bg_color;
}
.view row:selected {
background-color: darker (@bg_color);
color: @selected_fg_color;
}
.view.cell.trough,
.view.cell.trough:hover,
.view.cell.trough:selected,
.view.cell.trough:selected:focus {
background-color: @bg_color;
color: @fg_color;
}
.view.cell.progressbar,
.view.cell.progressbar:hover,
.view.cell.progressbar:selected,
.view.cell.progressbar:selected:focus {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.rubberband {
background-color: alpha (@fg_color, 0.25);
border-color: @fg_color;
border-style: solid;
border-width: 1px;
}
.tooltip,
.tooltip * {
background-color: @tooltip_bg_color;
color: @tooltip_fg_color;
border-color: @tooltip_fg_color;
border-width: 1px;
border-style: solid;
}
.button,
.slider {
border-style: outset;
border-width: 2px;
}
.button:active, .button:checked {
background-color: shade (@bg_color, 0.7);
border-style: inset;
}
.spinbutton.button:hover,
.button:hover,
.slider:hover {
background-color: @selected_bg_color;
color: @selected_fg_color;
border-color: shade (@selected_bg_color, 0.7);
}
.trough {
background-color: darker (@bg_color);
border-style: inset;
border-width: 1px;
padding: 0;
}
.entry {
border-style: inset;
border-width: 2px;
background-color: @base_color;
color: @text_color;
}
.entry:disabled {
background-color: shade (@base_color, 0.9);
color: shade (@base_color, 0.7);
}
.entry:active {
background-color: #c4c2bd;
color: #000;
}
.progressbar,
.entry.progressbar,
.cell.progressbar {
background-color: @selected_bg_color;
border-color: shade (@selected_bg_color, 0.7);
color: @selected_fg_color;
border-style: outset;
border-width: 1px;
}
.level-bar.indicator-discrete {
margin: 1px;
}
.level-bar.fill-block {
background-color: @selected_bg_color;
}
.level-bar.fill-block.level-low {
background-color: @warning_bg_color;
}
.level-bar.fill-block.level-high {
background-color: @success_bg_color;
}
.level-bar.fill-block.empty-fill-block {
background-color: @base_color;
}
GtkCheckButton:hover,
GtkCheckButton:selected,
GtkRadioButton:hover,
GtkRadioButton:selected {
background-color: shade (@bg_color, 1.05);
}
.check, .radio,
.cell.check, .cell.radio,
.cell.check:hover, .cell.radio:hover {
border-style: solid;
border-width: 1px;
background-color: @base_color;
border-color: @fg_color;
}
.check:checked, .radio:checked,
.check:hover, .radio:hover {
background-color: @base_color;
border-color: @fg_color;
color: @text_color;
}
.check:active, .radio:active {
background-color: darker (@bg_color);
color: @selected_fg_color;
border-color: @selected_fg_color;
}
.check:active:focus, .radio:active:focus {
background-color: @selected_bg_color;
}
.menuitem.check, .menuitem.radio {
color: @fg_color;
border-style: none;
border-width: 0;
}
.popup {
border-style: outset;
border-width: 1px;
}
.viewport {
border-style: inset;
border-width: 2px;
}
.notebook {
border-style: outset;
border-width: 1px;
}
.notebook tab {
border-style: solid;
border-width: 1px;
padding: 0;
}
.notebook tab:active {
color: @selected_fg_color;
background-color: darker (@bg_color);
}
.frame {
border-style: inset;
border-width: 1px;
}
GtkScrolledWindow.frame {
padding: 0;
}
.menu,
.menubar,
.toolbar {
border-style: outset;
border-width: 1px;
}
.menu:hover,
.menubar:hover,
.menuitem:hover,
.menuitem.check:hover,
.menuitem.radio:hover {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
GtkSpinButton.button {
border-width: 1px;
}
.scale.slider:hover,
GtkSpinButton.button:hover {
background-color: shade (@bg_color, 1.05);
border-color: shade (@bg_color, 0.8);
}
.scale.slider.fine-tune:active,
.scale.slider.fine-tune:active:hover,
.scale.slider.fine-tune.horizontal:active,
.scale.slider.fine-tune.horizontal:active:hover {
border-width: 5px;
}
.scrollbar.slider.fine-tune {
border-width: 5px;
}
GtkSwitch.trough:active {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
GtkToggleButton.button:indeterminate {
border-style: outset;
border-width: 1px;
background-color: shade (@bg_color, 0.9);
border-color: shade (@bg_color, 0.7);
}
GtkLabel:selected {
background-color: shade (@bg_color, 0.9);
}
GtkLabel:selected:focus {
background-color: @selected_bg_color;
}
.info {
background-color: @info_bg_color;
color: @info_fg_color;
}
.warning {
background-color: @warning_bg_color;
color: @warning_fg_color;
}
.question {
background-color: @question_bg_color;
color: @question_fg_color;
}
.error {
background-color: @error_bg_color;
color: @error_fg_color;
}
.highlight {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.light-area-focus {
color: #000;
}
.dark-area-focus {
color: #fff;
}
GtkCalendar.view {
border-width: 1px;
border-style: inset;
padding: 1px;
}
GtkCalendar.view:indeterminate {
color: darker (@bg_color);
}
GtkCalendar.header {
background-color: @bg_color;
border-style: outset;
border-width: 2px;
}
GtkCalendar.highlight {
border-width: 0;
}
GtkCalendar.button {
background-color: @bg_color;
}
GtkCalendar.button:hover {
background-color: lighter (@bg_color);
color: @fg_color;
}
.menu * {
border-width: 0;
padding: 2px;
}
@keyframes spinner {
0% { background-image: none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)); }
0% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)); }
8% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none; }
8% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)); }
16% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)); }
16% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)); }
25% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)); }
25% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)); }
33% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)); }
33% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)); }
41% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)); }
41% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)); }
50% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)); }
50% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)); }
58% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)); }
58% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)); }
66% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)); }
66% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)); }
75% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)); }
75% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)); }
83% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)); }
83% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)); }
91% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)); }
91% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)); }
100% { background-image: none,
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)); }
100% { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)); }
}
.spinner {
background-color: transparent;
background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent));
background-position: 25.00% 6.70%, 6.70% 25.00%, 0.00% 50.00%, 6.70% 75.00%, 25.00% 93.30%, 50.00% 100.00%, 75.00% 93.30%, 93.30% 75.00%, 100.00% 50.00%, 93.30% 25.00%, 75.00% 6.70%, 50.00% 0.00%;
background-size: 20% 20%;
background-repeat: no-repeat;
transition: background-image 500ms ease-out;
}
.spinner:active {
background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.916667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.75)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.666667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.583333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.5)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.416667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.333333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.25)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.166667)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(alpha(currentColor, 0.0833333)), to(transparent)),
-gtk-gradient(radial, center center, 0, center center, 0.5, to(currentColor), to(transparent));
animation: spinner 1s infinite linear;
}
/* Client side decorations */
.titlebar {
text-shadow: 1px 1px lighter (@bg_color);
background-image: linear-gradient(to bottom, white, @bg_color);
border-radius: 7px 7px 0px 0px;
}
.maximized .titlebar,
.tiled .titlebar {
border-radius: 0;
}
.titlebar.default-decoration {
border: none;
box-shadow: none;
}
.titlebar .title {
font-weight: bold;
font-size: 10pt;
}
.titlebar .subtitle {
font-size: 9pt;
}
.titlebar:backdrop {
text-shadow: none;
background-image: none;
background-color: @bg_color;
}
.titlebar .titlebutton {
-gtk-icon-shadow: 0px 1px #ffff;
color: shade(@fg_color, 1.8);
background: none;
padding: 5px 5px 6px 5px;
border-radius: 3px;
border-width: 1px 1px 2px 1px;
border-color: transparent;
border-style: solid;
border-image: none;
}
.titlebar .titlebutton:hover {
background-image: linear-gradient(to bottom, @bg_color, lighter (@bg_color));
}
.titlebar .titlebutton:backdrop {
border-image: none;
background-image: none;
}
.titlebar .titlebutton:active {
background-image: linear-gradient(to bottom, #a7aba7, shade(@bg_color, 0.95));
color: @selected_fg_color;
-gtk-icon-shadow: none;
}
.titlebar .titlebutton:backdrop {
background-image: none;
color: #a7aba7;
border-image: none;
-gtk-icon-shadow: none;
}
.window-frame {
border-color: darker (@bg_color);
border-radius: 7px 7px 0 0;
border-width: 1px;
border-style: solid;
box-shadow: 0 2px 8px 3px alpha(black, 0.5);
margin: 10px;
}
.window-frame.tooltip.csd {
border-radius: 1px 1px 0 0;
box-shadow: none;
margin: 0px;
}
.window-frame.popup.csd {
border-radius: 1px 1px 0 0;
box-shadow: 0 1px 1px 1px alpha(black, 0.5);
margin: 0px;
}
.window-frame.popup {
border-color: darker (@bg_color);
border-width: 1px;
border-style: solid;
}
.window-frame.tiled {
border-radius: 0;
background-color: @bg_color;
}
.window-frame:backdrop {
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;
}

View File

@@ -28,8 +28,7 @@
<object class="GtkTreeModelSort" id="program_list_sort">
<property name="model">program_list_store</property>
</object>
<template class="GtkAppChooserWidget" parent="GtkBox">
<property name="orientation">vertical</property>
<template class="GtkAppChooserWidget" parent="GtkWidget">
<child>
<object class="GtkOverlay" id="overlay">
<property name="visible">1</property>
@@ -129,9 +128,6 @@
</object>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
</template>
</interface>

View File

@@ -20,7 +20,6 @@
</child>
<child>
<object class="GtkFileChooserWidget" id="widget">
<property name="orientation">vertical</property>
<signal name="default-size-changed" handler="file_chooser_widget_default_size_changed" swapped="no"/>
<signal name="file-activated" handler="file_chooser_widget_file_activated" swapped="no"/>
<signal name="response-requested" handler="file_chooser_widget_response_requested" swapped="no"/>

View File

@@ -2,385 +2,389 @@
<interface domain="gtk30">
<!-- interface-requires gtk+ 3.10 -->
<!-- interface-requires gtkprivate 3.10 -->
<template class="GtkFileChooserWidget" parent="GtkBox">
<property name="orientation">vertical</property>
<template class="GtkFileChooserWidget" parent="GtkWidget">
<child>
<object class="GtkBox" id="browse_widgets_box">
<object class="GtkBox" id="box">
<property name="orientation">vertical</property>
<child>
<object class="GtkPaned" id="browse_widgets_hpaned">
<object class="GtkBox" id="browse_widgets_box">
<property name="orientation">vertical</property>
<child>
<object class="GtkPlacesSidebar" id="places_sidebar">
<property name="hscrollbar-policy">never</property>
<property name="local-only">1</property>
<property name="show-other-locations">1</property>
<style>
<class name="sidebar"/>
</style>
<signal name="open-location" handler="places_sidebar_open_location_cb" swapped="no"/>
<signal name="show-error-message" handler="places_sidebar_show_error_message_cb" swapped="no"/>
<signal name="show-other-locations-with-flags" handler="places_sidebar_show_other_locations_with_flags_cb" swapped="no"/>
</object>
<packing>
<property name="resize">0</property>
<property name="shrink">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<object class="GtkPaned" id="browse_widgets_hpaned">
<child>
<object class="GtkRevealer" id="browse_header_revealer">
<property name="hexpand">1</property>
<object class="GtkPlacesSidebar" id="places_sidebar">
<property name="hscrollbar-policy">never</property>
<property name="local-only">1</property>
<property name="show-other-locations">1</property>
<style>
<class name="sidebar"/>
</style>
<signal name="open-location" handler="places_sidebar_open_location_cb" swapped="no"/>
<signal name="show-error-message" handler="places_sidebar_show_error_message_cb" swapped="no"/>
<signal name="show-other-locations-with-flags" handler="places_sidebar_show_other_locations_with_flags_cb" swapped="no"/>
</object>
<packing>
<property name="resize">0</property>
<property name="shrink">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="name">pathbarbox</property>
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<style>
<class name="view"/>
</style>
<object class="GtkRevealer" id="browse_header_revealer">
<property name="hexpand">1</property>
<child>
<object class="GtkStack" id="browse_header_stack">
<object class="GtkBox">
<property name="name">pathbarbox</property>
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<style>
<class name="view"/>
</style>
<child>
<object class="GtkStack" id="browse_header_stack">
<property name="transition-type">crossfade</property>
<child>
<object class="GtkBox">
<property name="spacing">6</property>
<property name="margin">6</property>
<child>
<object class="GtkPathBar" id="browse_path_bar">
<signal name="path-clicked" handler="path_bar_clicked" after="yes" swapped="no"/>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="browse_new_folder_button">
<property name="tooltip-text" translatable="yes">Create Folder</property>
<property name="use-underline">1</property>
<property name="popover">new_folder_popover</property>
<property name="icon-name">folder-new-symbolic</property>
<signal name="notify::active" handler="new_folder_popover_active"/>
</object>
<packing>
<property name="fill">0</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="name">pathbar</property>
</packing>
</child>
<child>
<object class="GtkBox" id="location_entry_box">
<property name="spacing">6</property>
<property name="margin">6</property>
</object>
<packing>
<property name="name">location</property>
</packing>
</child>
<child>
<object class="GtkBox" id="search_entry_box">
<property name="spacing">6</property>
<property name="margin">6</property>
<child type="center">
<object class="GtkSearchEntry" id="search_entry">
<property name="width-chars">45</property>
<signal name="search-changed" handler="search_entry_activate_cb" swapped="yes"/>
<signal name="stop-search" handler="search_entry_stop_cb" swapped="yes"/>
</object>
</child>
<child>
<object class="GtkSpinner" id="search_spinner">
<property name="visible">0</property>
<property name="active">1</property>
</object>
<packing>
<property name="pack-type">end</property>
</packing>
</child>
</object>
<packing>
<property name="name">search</property>
</packing>
</child>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="list_and_preview_box">
<property name="spacing">12</property>
<child>
<object class="GtkStack" id="browse_files_stack">
<property name="transition-type">crossfade</property>
<style>
<class name="view"/>
</style>
<child>
<object class="GtkBox">
<property name="spacing">6</property>
<property name="margin">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkPathBar" id="browse_path_bar">
<signal name="path-clicked" handler="path_bar_clicked" after="yes" swapped="no"/>
<object class="GtkScrolledWindow" id="browse_files_swin">
<property name="hscrollbar-policy">never</property>
<child>
<object class="GtkTreeView" id="browse_files_tree_view">
<property name="has-tooltip">1</property>
<property name="enable-search">0</property>
<child internal-child="accessible">
<object class="AtkObject" id="browse_files_tree_view-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Files</property>
</object>
</child>
<signal name="button-press-event" handler="list_button_press_event_cb" swapped="no"/>
<signal name="drag-data-received" handler="file_list_drag_data_received_cb" swapped="no"/>
<signal name="drag-drop" handler="file_list_drag_drop_cb" swapped="no"/>
<signal name="drag-begin" handler="file_list_drag_begin_cb" swapped="no"/>
<signal name="drag-motion" handler="file_list_drag_motion_cb" swapped="no"/>
<signal name="drag-end" handler="file_list_drag_end_cb" swapped="no"/>
<signal name="key-press-event" handler="browse_files_key_press_event_cb" swapped="no"/>
<signal name="popup-menu" handler="list_popup_menu_cb" swapped="no"/>
<signal name="query-tooltip" handler="file_list_query_tooltip_cb" swapped="no"/>
<signal name="row-activated" handler="list_row_activated" swapped="no"/>
<signal name="cursor-changed" handler="list_cursor_changed" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection2">
<signal name="changed" handler="list_selection_changed" swapped="no"/>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="list_name_column">
<property name="title" translatable="yes">Name</property>
<property name="resizable">1</property>
<property name="expand">1</property>
<child>
<object class="GtkCellRendererPixbuf" id="list_pixbuf_renderer">
<property name="xpad">6</property>
</object>
</child>
<child>
<object class="GtkCellRendererText" id="list_name_renderer">
<property name="width-chars">10</property>
<property name="ellipsize">end</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="list_location_column">
<property name="title" translatable="yes">Location</property>
<property name="resizable">1</property>
<property name="visible">0</property>
<property name="expand">1</property>
<child>
<object class="GtkCellRendererText" id="list_location_renderer">
<property name="xalign">0</property>
<property name="width-chars">10</property>
<property name="ellipsize">start</property>
<property name="xpad">6</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="list_size_column">
<property name="title" translatable="yes">Size</property>
<property name="sizing">fixed</property>
<child>
<object class="GtkCellRendererText" id="list_size_renderer">
<property name="xalign">0</property>
<property name="xpad">6</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="list_time_column">
<property name="title" translatable="yes">Modified</property>
<property name="sizing">fixed</property>
<child>
<object class="GtkCellRendererText" id="list_date_renderer">
<property name="xpad">6</property>
</object>
</child>
<child>
<object class="GtkCellRendererText" id="list_time_renderer">
<property name="xpad">6</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="browse_new_folder_button">
<property name="tooltip-text" translatable="yes">Create Folder</property>
<property name="use-underline">1</property>
<property name="popover">new_folder_popover</property>
<property name="icon-name">folder-new-symbolic</property>
<signal name="notify::active" handler="new_folder_popover_active"/>
<object class="GtkActionBar" id="remote_warning_bar">
<property name="visible">0</property>
<child type="center">
<object class="GtkLabel">
<property name="label" translatable="yes">Remote location — only searching the current folder</property>
</object>
</child>
</object>
<packing>
<property name="fill">0</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="name">pathbar</property>
<property name="name">list</property>
</packing>
</child>
<child>
<object class="GtkBox" id="location_entry_box">
<property name="spacing">6</property>
<property name="margin">6</property>
<object class="GtkPlacesView" id="places_view">
<property name="local-only" bind-source="GtkFileChooserWidget" bind-property="local-only" bind-flags="default|sync-create"/>
<signal name="open-location" handler="places_sidebar_open_location_cb" swapped="no"/>
<signal name="show-error-message" handler="places_sidebar_show_error_message_cb" swapped="no"/>
</object>
<packing>
<property name="name">location</property>
<property name="name">other_locations</property>
</packing>
</child>
<child>
<object class="GtkBox" id="search_entry_box">
<property name="spacing">6</property>
<property name="margin">6</property>
<child type="center">
<object class="GtkSearchEntry" id="search_entry">
<property name="width-chars">45</property>
<signal name="search-changed" handler="search_entry_activate_cb" swapped="yes"/>
<signal name="stop-search" handler="search_entry_stop_cb" swapped="yes"/>
<object class="GtkGrid">
<property name="row-spacing">12</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<property name="halign">center</property>
<property name="valign">center</property>
<style>
<class name="dim-label"/>
</style>
<child>
<object class="GtkImage">
<property name="icon-name">edit-find-symbolic</property>
<property name="pixel-size">72</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkSpinner" id="search_spinner">
<property name="visible">0</property>
<property name="active">1</property>
<object class="GtkLabel">
<property name="label" translatable="yes">No Results Found</property>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="scale" value="1.44"/>
</attributes>
</object>
<packing>
<property name="pack-type">end</property>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Try a different search</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">search</property>
<property name="name">empty</property>
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="preview_box">
<property name="visible">0</property>
<property name="orientation">vertical</property>
<property name="spacing">12</property>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="fill">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="list_and_preview_box">
<property name="spacing">12</property>
<child>
<object class="GtkStack" id="browse_files_stack">
<property name="transition-type">crossfade</property>
<style>
<class name="view"/>
</style>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkScrolledWindow" id="browse_files_swin">
<property name="hscrollbar-policy">never</property>
<child>
<object class="GtkTreeView" id="browse_files_tree_view">
<property name="has-tooltip">1</property>
<property name="enable-search">0</property>
<child internal-child="accessible">
<object class="AtkObject" id="browse_files_tree_view-atkobject">
<property name="AtkObject::accessible-name" translatable="yes">Files</property>
</object>
</child>
<signal name="button-press-event" handler="list_button_press_event_cb" swapped="no"/>
<signal name="drag-data-received" handler="file_list_drag_data_received_cb" swapped="no"/>
<signal name="drag-drop" handler="file_list_drag_drop_cb" swapped="no"/>
<signal name="drag-begin" handler="file_list_drag_begin_cb" swapped="no"/>
<signal name="drag-motion" handler="file_list_drag_motion_cb" swapped="no"/>
<signal name="drag-end" handler="file_list_drag_end_cb" swapped="no"/>
<signal name="key-press-event" handler="browse_files_key_press_event_cb" swapped="no"/>
<signal name="popup-menu" handler="list_popup_menu_cb" swapped="no"/>
<signal name="query-tooltip" handler="file_list_query_tooltip_cb" swapped="no"/>
<signal name="row-activated" handler="list_row_activated" swapped="no"/>
<signal name="cursor-changed" handler="list_cursor_changed" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection2">
<signal name="changed" handler="list_selection_changed" swapped="no"/>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="list_name_column">
<property name="title" translatable="yes">Name</property>
<property name="resizable">1</property>
<property name="expand">1</property>
<child>
<object class="GtkCellRendererPixbuf" id="list_pixbuf_renderer">
<property name="xpad">6</property>
</object>
</child>
<child>
<object class="GtkCellRendererText" id="list_name_renderer">
<property name="width-chars">10</property>
<property name="ellipsize">end</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="list_location_column">
<property name="title" translatable="yes">Location</property>
<property name="resizable">1</property>
<property name="visible">0</property>
<property name="expand">1</property>
<child>
<object class="GtkCellRendererText" id="list_location_renderer">
<property name="xalign">0</property>
<property name="width-chars">10</property>
<property name="ellipsize">start</property>
<property name="xpad">6</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="list_size_column">
<property name="title" translatable="yes">Size</property>
<property name="sizing">fixed</property>
<child>
<object class="GtkCellRendererText" id="list_size_renderer">
<property name="xalign">0</property>
<property name="xpad">6</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="list_time_column">
<property name="title" translatable="yes">Modified</property>
<property name="sizing">fixed</property>
<child>
<object class="GtkCellRendererText" id="list_date_renderer">
<property name="xpad">6</property>
</object>
</child>
<child>
<object class="GtkCellRendererText" id="list_time_renderer">
<property name="xpad">6</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkActionBar" id="remote_warning_bar">
<property name="visible">0</property>
<child type="center">
<object class="GtkLabel">
<property name="label" translatable="yes">Remote location — only searching the current folder</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="name">list</property>
</packing>
</child>
<child>
<object class="GtkPlacesView" id="places_view">
<property name="local-only" bind-source="GtkFileChooserWidget" bind-property="local-only" bind-flags="default|sync-create"/>
<signal name="open-location" handler="places_sidebar_open_location_cb" swapped="no"/>
<signal name="show-error-message" handler="places_sidebar_show_error_message_cb" swapped="no"/>
</object>
<packing>
<property name="name">other_locations</property>
</packing>
</child>
<child>
<object class="GtkGrid">
<property name="row-spacing">12</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<property name="halign">center</property>
<property name="valign">center</property>
<style>
<class name="dim-label"/>
</style>
<child>
<object class="GtkImage">
<property name="icon-name">edit-find-symbolic</property>
<property name="pixel-size">72</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">No Results Found</property>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="scale" value="1.44"/>
</attributes>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">Try a different search</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">empty</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="preview_box">
<property name="visible">0</property>
<property name="orientation">vertical</property>
<property name="spacing">12</property>
</object>
<packing>
<property name="fill">0</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">2</property>
<property name="shrink">0</property>
</packing>
</child>
</object>
<packing>
<property name="shrink">0</property>
<property name="expand">1</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
<child>
<object class="GtkActionBar" id="extra_and_filters">
<property name="visible">0</property>
<child>
<object class="GtkBox" id="extra_align">
<property name="spacing">12</property>
</object>
</child>
<child>
<object class="GtkBox" id="filter_combo_hbox">
<!--<property name="spacing">12</property>-->
<object class="GtkActionBar" id="extra_and_filters">
<property name="visible">0</property>
<child>
<object class="GtkComboBoxText" id="filter_combo">
<property name="tooltip-text" translatable="yes">Select which types of files are shown</property>
<property name="focus-on-click">0</property>
<property name="entry-text-column">0</property>
<property name="id-column">1</property>
<property name="valign">start</property>
<signal name="changed" handler="filter_combo_changed" swapped="no"/>
<object class="GtkBox" id="extra_align">
<property name="spacing">12</property>
</object>
</child>
<child>
<object class="GtkBox" id="filter_combo_hbox">
<!--<property name="spacing">12</property>-->
<child>
<object class="GtkComboBoxText" id="filter_combo">
<property name="tooltip-text" translatable="yes">Select which types of files are shown</property>
<property name="focus-on-click">0</property>
<property name="entry-text-column">0</property>
<property name="id-column">1</property>
<property name="valign">start</property>
<signal name="changed" handler="filter_combo_changed" swapped="no"/>
</object>
<packing>
<property name="fill">0</property>
<property name="pack-type">end</property>
</packing>
</child>
</object>
<packing>
<property name="fill">0</property>
<property name="pack-type">end</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
<property name="pack-type">end</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
<property name="pack-type">end</property>
</packing>
</child>
</template>
<object class="GtkSizeGroup" id="browse_path_bar_size_group">

View File

@@ -12,9 +12,6 @@
<child>
<object class="GtkFontChooserWidget" id="fontchooser">
<property name="visible">1</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<property name="margin">5</property>
<signal name="font-activated" handler="font_activated_cb" swapped="no"/>
</object>
<packing>

View File

@@ -30,9 +30,9 @@
<property name="page-increment">10</property>
<signal name="value-changed" handler="size_change_cb" swapped="no"/>
</object>
<template class="GtkFontChooserWidget" parent="GtkBox">
<template class="GtkFontChooserWidget" parent="GtkWidget">
<child>
<object class="GtkGrid" id="grid1">
<object class="GtkGrid" id="grid">
<property name="visible">1</property>
<property name="row-spacing">6</property>
<property name="column-spacing">6</property>
@@ -205,9 +205,6 @@
</packing>
</child>
</object>
<packing>
<property name="expand">1</property>
</packing>
</child>
</template>
<object class="GThemedIcon" id="fonticon">

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface domain="gtk30">
<!-- interface-requires gtk+ 3.10 -->
<template class="GtkInfoBar" parent="GtkBox">
<template class="GtkInfoBar" parent="GtkWidget">
<child>
<object class="GtkRevealer" id="revealer">
<property name="visible">1</property>