Compare commits
19 Commits
matthiasc/
...
wip/baeder
Author | SHA1 | Date | |
---|---|---|---|
|
df0dcbe939 | ||
|
ffd1579a93 | ||
|
da2695f563 | ||
|
20cfb37608 | ||
|
c4c3f5c024 | ||
|
e7d9dd451a | ||
|
1573240cec | ||
|
d98bc177d0 | ||
|
554bd2d0ff | ||
|
7d0ad83494 | ||
|
6f7f102fcb | ||
|
7658942625 | ||
|
4cb3ad43a5 | ||
|
81bf7d646f | ||
|
96e8be8dab | ||
|
8845ed327c | ||
|
755dd7ddaa | ||
|
93c691949a | ||
|
06412bfff9 |
@@ -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));
|
||||
|
5
gsk/resources/glsl/color.fs.glsl
Normal file
5
gsk/resources/glsl/color.fs.glsl
Normal file
@@ -0,0 +1,5 @@
|
||||
uniform vec4 uColor;
|
||||
|
||||
void main() {
|
||||
setOutputColor(uColor);
|
||||
}
|
6
gsk/resources/glsl/color.vs.glsl
Normal file
6
gsk/resources/glsl/color.vs.glsl
Normal 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);
|
||||
}
|
@@ -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)
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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 >*/
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -46,6 +46,9 @@ struct _GtkCssImageIconTheme
|
||||
GdkRGBA error;
|
||||
gint scale;
|
||||
char *name;
|
||||
|
||||
int cached_size;
|
||||
GskTexture *cached_texture;
|
||||
};
|
||||
|
||||
struct _GtkCssImageIconThemeClass
|
||||
|
211
gtk/gtkentry.c
211
gtk/gtkentry.c
@@ -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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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 >*/
|
||||
|
||||
|
@@ -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 */
|
||||
|
@@ -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 >*/
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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));
|
||||
}
|
||||
|
@@ -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));
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -47,6 +47,7 @@ struct _GtkWidgetPrivate
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
guint highlight_resize : 1;
|
||||
guint in_size_allocate : 1;
|
||||
#endif
|
||||
|
||||
guint in_destruction : 1;
|
||||
|
@@ -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;
|
||||
}
|
@@ -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>
|
||||
|
@@ -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"/>
|
||||
|
@@ -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">
|
||||
|
@@ -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>
|
||||
|
@@ -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">
|
||||
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user