style: Add styling for locked buttons
This commit is contained in:
		@ -25,6 +25,11 @@ sq_button.wide {
 | 
				
			|||||||
    border-color: #3e3a44
 | 
					    border-color: #3e3a44
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sq_button.locked {
 | 
				
			||||||
 | 
					    background: #ffffff;
 | 
				
			||||||
 | 
					    color: #2b292f;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#Return {
 | 
					#Return {
 | 
				
			||||||
    background: #1c71d8;
 | 
					    background: #1c71d8;
 | 
				
			||||||
    border-color: #1a5fb4
 | 
					    border-color: #1a5fb4
 | 
				
			||||||
 | 
				
			|||||||
@ -69,7 +69,7 @@ static void eek_renderer_real_render_button_label (EekRenderer *self,
 | 
				
			|||||||
static void invalidate                         (EekRenderer *renderer);
 | 
					static void invalidate                         (EekRenderer *renderer);
 | 
				
			||||||
static void render_button                         (EekRenderer *self,
 | 
					static void render_button                         (EekRenderer *self,
 | 
				
			||||||
                                                cairo_t     *cr, struct button_place *place,
 | 
					                                                cairo_t     *cr, struct button_place *place,
 | 
				
			||||||
                                                gboolean     active);
 | 
					                                                gboolean     pressed, gboolean locked);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct _CreateKeyboardSurfaceCallbackData {
 | 
					struct _CreateKeyboardSurfaceCallbackData {
 | 
				
			||||||
    cairo_t *cr;
 | 
					    cairo_t *cr;
 | 
				
			||||||
@ -99,7 +99,7 @@ create_keyboard_surface_button_callback (struct squeek_button *button,
 | 
				
			|||||||
        .row = data->row,
 | 
					        .row = data->row,
 | 
				
			||||||
        .button = button,
 | 
					        .button = button,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    render_button (data->renderer, data->cr, &place, FALSE);
 | 
					    render_button (data->renderer, data->cr, &place, FALSE, FALSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cairo_restore (data->cr);
 | 
					    cairo_restore (data->cr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -286,7 +286,8 @@ static void
 | 
				
			|||||||
render_button (EekRenderer *self,
 | 
					render_button (EekRenderer *self,
 | 
				
			||||||
            cairo_t     *cr,
 | 
					            cairo_t     *cr,
 | 
				
			||||||
            struct button_place *place,
 | 
					            struct button_place *place,
 | 
				
			||||||
            gboolean     active)
 | 
					               gboolean     pressed,
 | 
				
			||||||
 | 
					               gboolean     locked)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekRendererPrivate *priv = eek_renderer_get_instance_private (self);
 | 
					    EekRendererPrivate *priv = eek_renderer_get_instance_private (self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -303,15 +304,21 @@ render_button (EekRenderer *self,
 | 
				
			|||||||
    /* Set the state to take into account whether the button is active
 | 
					    /* Set the state to take into account whether the button is active
 | 
				
			||||||
       (pressed) or normal. */
 | 
					       (pressed) or normal. */
 | 
				
			||||||
    gtk_style_context_set_state(ctx,
 | 
					    gtk_style_context_set_state(ctx,
 | 
				
			||||||
        active ? GTK_STATE_FLAG_ACTIVE : GTK_STATE_FLAG_NORMAL);
 | 
					        pressed ? GTK_STATE_FLAG_ACTIVE : GTK_STATE_FLAG_NORMAL);
 | 
				
			||||||
    const char *outline_name = squeek_button_get_outline_name(place->button);
 | 
					    const char *outline_name = squeek_button_get_outline_name(place->button);
 | 
				
			||||||
 | 
					    if (locked) {
 | 
				
			||||||
 | 
					        gtk_style_context_add_class(ctx, "locked");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    gtk_style_context_add_class(ctx, outline_name);
 | 
					    gtk_style_context_add_class(ctx, outline_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    render_button_in_context(self, cr, ctx, place, active);
 | 
					    render_button_in_context(self, cr, ctx, place, pressed);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Save and restore functions don't work if gtk_render_* was used in between
 | 
					    // Save and restore functions don't work if gtk_render_* was used in between
 | 
				
			||||||
    gtk_style_context_set_state(ctx, GTK_STATE_FLAG_NORMAL);
 | 
					    gtk_style_context_set_state(ctx, GTK_STATE_FLAG_NORMAL);
 | 
				
			||||||
    gtk_style_context_remove_class(ctx, outline_name);
 | 
					    gtk_style_context_remove_class(ctx, outline_name);
 | 
				
			||||||
 | 
					    if (locked) {
 | 
				
			||||||
 | 
					        gtk_style_context_remove_class(ctx, "locked");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -442,7 +449,8 @@ eek_renderer_real_render_button (EekRenderer *self,
 | 
				
			|||||||
    struct squeek_key *key = squeek_button_get_key(place->button);
 | 
					    struct squeek_key *key = squeek_button_get_key(place->button);
 | 
				
			||||||
    render_button (
 | 
					    render_button (
 | 
				
			||||||
                self, cr, place,
 | 
					                self, cr, place,
 | 
				
			||||||
                squeek_key_is_pressed(key) || squeek_key_is_locked (key)
 | 
					                squeek_key_is_pressed(key),
 | 
				
			||||||
 | 
					                squeek_key_is_locked (key)
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    cairo_restore (cr);
 | 
					    cairo_restore (cr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user