Add gtk_widget_remove_css_classes_by_prefix() helper
This commit is contained in:
@@ -24,3 +24,16 @@ void gtk_grid_set_spacing(GtkGrid *grid, int spacing) {
|
|||||||
gtk_grid_set_row_spacing(grid, spacing);
|
gtk_grid_set_row_spacing(grid, spacing);
|
||||||
gtk_grid_set_column_spacing(grid, spacing);
|
gtk_grid_set_column_spacing(grid, spacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gtk_widget_remove_css_classes_by_prefix(
|
||||||
|
GtkWidget *w,
|
||||||
|
const char *prefix
|
||||||
|
) {
|
||||||
|
char **classes = gtk_widget_get_css_classes(w);
|
||||||
|
|
||||||
|
for (char **i = classes; *i != NULL; i++)
|
||||||
|
if (strncmp(*i, prefix, strlen(prefix)) == 0)
|
||||||
|
gtk_widget_remove_css_class(w, *i);
|
||||||
|
|
||||||
|
g_strfreev(classes);
|
||||||
|
}
|
||||||
|
|||||||
@@ -9,3 +9,4 @@ void gtk_widget_set_margin(GtkWidget *w, int margin);
|
|||||||
void gtk_widget_set_expand(GtkWidget *w, gboolean expand);
|
void gtk_widget_set_expand(GtkWidget *w, gboolean expand);
|
||||||
void gtk_widget_set_align(GtkWidget *w, GtkAlign x, GtkAlign y);
|
void gtk_widget_set_align(GtkWidget *w, GtkAlign x, GtkAlign y);
|
||||||
void gtk_grid_set_spacing(GtkGrid *grid, int spacing);
|
void gtk_grid_set_spacing(GtkGrid *grid, int spacing);
|
||||||
|
void gtk_widget_remove_css_classes_by_prefix(GtkWidget *w, const char *prefix);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#include "gtkhelper.h"
|
||||||
#include "widget-drop-down.h"
|
#include "widget-drop-down.h"
|
||||||
|
|
||||||
struct drop_down {
|
struct drop_down {
|
||||||
@@ -14,16 +15,6 @@ struct drop_down {
|
|||||||
int fixed_text;
|
int fixed_text;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void remove_selected_classes(GtkWidget *widget) {
|
|
||||||
char **classes = gtk_widget_get_css_classes(widget);
|
|
||||||
|
|
||||||
for (char **i = classes; *i != NULL; i++)
|
|
||||||
if (strncmp(*i, "selected-", 9) == 0)
|
|
||||||
gtk_widget_remove_css_class(widget, *i);
|
|
||||||
|
|
||||||
g_strfreev(classes);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sanitise_class_name(char *s) {
|
static void sanitise_class_name(char *s) {
|
||||||
char *dst = s;
|
char *dst = s;
|
||||||
|
|
||||||
@@ -120,7 +111,7 @@ static void drop_down_updated(
|
|||||||
int value = alsa_get_elem_value(elem);
|
int value = alsa_get_elem_value(elem);
|
||||||
gtk_single_selection_set_selected(data->selection, value);
|
gtk_single_selection_set_selected(data->selection, value);
|
||||||
|
|
||||||
remove_selected_classes(data->button);
|
gtk_widget_remove_css_classes_by_prefix(data->button, "selected-");
|
||||||
add_class(data->button, alsa_get_item_name(elem, value));
|
add_class(data->button, alsa_get_item_name(elem, value));
|
||||||
|
|
||||||
if (data->fixed_text)
|
if (data->fixed_text)
|
||||||
|
|||||||
Reference in New Issue
Block a user