Compare commits
2 Commits
password-c
...
wip/cdavis
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75b79aa6e6 | ||
|
|
c49684206d |
@@ -50,6 +50,9 @@
|
||||
|
||||
#define DISPLAY_SCHEMA "org.gnome.settings-daemon.plugins.color"
|
||||
|
||||
#define DISPLAY_CONFIG_ID_JOIN "join"
|
||||
#define DISPLAY_CONFIG_ID_CLONE "clone"
|
||||
|
||||
typedef enum {
|
||||
CC_DISPLAY_CONFIG_JOIN,
|
||||
CC_DISPLAY_CONFIG_CLONE,
|
||||
@@ -95,8 +98,7 @@ struct _CcDisplayPanel
|
||||
|
||||
GtkWidget *arrangement_row;
|
||||
AdwBin *arrangement_bin;
|
||||
GtkToggleButton *config_type_join;
|
||||
GtkToggleButton *config_type_mirror;
|
||||
AdwToggleGroup *config_type_toggles;
|
||||
GtkWidget *display_multiple_displays;
|
||||
AdwBin *display_settings_bin;
|
||||
GtkWidget *display_settings_group;
|
||||
@@ -161,9 +163,11 @@ config_get_current_type (CcDisplayPanel *self)
|
||||
static CcDisplayConfigType
|
||||
cc_panel_get_selected_type (CcDisplayPanel *self)
|
||||
{
|
||||
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->config_type_join)))
|
||||
char* active_id = adw_toggle_group_get_active (self->config_type_toggles);
|
||||
|
||||
if (g_str_equal (active_id, DISPLAY_CONFIG_ID_JOIN))
|
||||
return CC_DISPLAY_CONFIG_JOIN;
|
||||
else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->config_type_mirror)))
|
||||
if (g_str_equal (active_id, DISPLAY_CONFIG_ID_CLONE))
|
||||
return CC_DISPLAY_CONFIG_CLONE;
|
||||
else
|
||||
g_assert_not_reached ();
|
||||
@@ -302,10 +306,10 @@ cc_panel_set_selected_type (CcDisplayPanel *self, CcDisplayConfigType type)
|
||||
switch (type)
|
||||
{
|
||||
case CC_DISPLAY_CONFIG_JOIN:
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->config_type_join), TRUE);
|
||||
adw_toggle_group_set_active (self->config_type_toggles, DISPLAY_CONFIG_ID_JOIN);
|
||||
break;
|
||||
case CC_DISPLAY_CONFIG_CLONE:
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->config_type_mirror), TRUE);
|
||||
adw_toggle_group_set_active (self->config_type_toggles, DISPLAY_CONFIG_ID_CLONE);
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
@@ -470,8 +474,7 @@ on_back_button_clicked_cb (CcDisplayPanel *self)
|
||||
}
|
||||
|
||||
static void
|
||||
on_config_type_toggled_cb (CcDisplayPanel *self,
|
||||
GtkCheckButton *btn)
|
||||
on_config_type_toggled_cb (CcDisplayPanel *self)
|
||||
{
|
||||
CcDisplayConfigType type;
|
||||
|
||||
@@ -481,9 +484,6 @@ on_config_type_toggled_cb (CcDisplayPanel *self,
|
||||
if (!self->current_config)
|
||||
return;
|
||||
|
||||
if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (btn)))
|
||||
return;
|
||||
|
||||
type = cc_panel_get_selected_type (self);
|
||||
config_ensure_of_type (self, type);
|
||||
}
|
||||
@@ -591,8 +591,7 @@ cc_display_panel_class_init (CcDisplayPanelClass *klass)
|
||||
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, arrangement_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, cancel_button);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, display_multiple_displays);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, config_type_join);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, config_type_mirror);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, config_type_toggles);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, display_settings_bin);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, display_settings_group);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcDisplayPanel, display_settings_title_widget);
|
||||
|
||||
@@ -122,25 +122,13 @@
|
||||
<object class="AdwActionRow" id="config_type_switcher_row">
|
||||
<property name="title" translatable="yes">Multiple Displays</property>
|
||||
<child type="suffix">
|
||||
<object class="GtkBox">
|
||||
<object class="AdwToggleGroup" id="config_type_toggles">
|
||||
<property name="valign">center</property>
|
||||
<style>
|
||||
<class name="linked" />
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkToggleButton" id="config_type_join">
|
||||
<property name="label" translatable="yes" comments="'Join' as in 'Join displays'">Join</property>
|
||||
<property name="active">True</property>
|
||||
<signal name="toggled" handler="on_config_type_toggled_cb" swapped="yes"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkToggleButton" id="config_type_mirror">
|
||||
<property name="label" translatable="yes">Mirror</property>
|
||||
<property name="group">config_type_join</property>
|
||||
<signal name="toggled" handler="on_config_type_toggled_cb" swapped="yes"/>
|
||||
</object>
|
||||
</child>
|
||||
<signal name="notify::active" handler="on_config_type_toggled_cb" swapped="yes"/>
|
||||
<toggles>
|
||||
<toggle id="join" translatable="yes" comments="'Join' as in 'Join displays'">Join</toggle>
|
||||
<toggle id="clone" translatable="yes">Mirror</toggle>
|
||||
</toggles>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
@@ -44,9 +44,7 @@ struct _CcMousePanel
|
||||
CcSplitRow *mouse_scroll_direction_row;
|
||||
GtkScale *mouse_speed_scale;
|
||||
CcMouseTest *mouse_test;
|
||||
GtkBox *primary_button_box;
|
||||
GtkToggleButton *primary_button_left;
|
||||
GtkToggleButton *primary_button_right;
|
||||
AdwToggleGroup *primary_button_toggles;
|
||||
AdwPreferencesPage*preferences;
|
||||
GtkStack *stack;
|
||||
CcIllustratedRow *tap_to_click_row;
|
||||
@@ -77,6 +75,9 @@ CC_PANEL_REGISTER (CcMousePanel, cc_mouse_panel)
|
||||
|
||||
#define ASSET_RESOURCES_PREFIX "/org/gnome/control-center/mouse/assets/"
|
||||
|
||||
#define BUTTON_ID_LEFT "left"
|
||||
#define BUTTON_ID_RIGHT "right"
|
||||
|
||||
static void
|
||||
setup_illustrations (CcMousePanel *self)
|
||||
{
|
||||
@@ -252,34 +253,52 @@ mouse_accel_set_mapping (const GValue *value,
|
||||
return g_variant_new_string (g_value_get_boolean (value) ? "default" : "flat");
|
||||
}
|
||||
|
||||
static gboolean
|
||||
primary_button_get_mapping (GValue *value,
|
||||
GVariant *variant,
|
||||
gpointer user_data)
|
||||
{
|
||||
gboolean left_handed = g_variant_get_boolean (variant);
|
||||
|
||||
g_value_set_string (value, left_handed ? BUTTON_ID_RIGHT : BUTTON_ID_LEFT);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static GVariant *
|
||||
primary_button_set_mapping (const GValue *value,
|
||||
const GVariantType *type,
|
||||
gpointer user_data)
|
||||
{
|
||||
return g_variant_new_boolean (g_str_equal (g_value_get_string (value), BUTTON_ID_RIGHT));
|
||||
}
|
||||
|
||||
/* Set up the property editors in the dialog. */
|
||||
static void
|
||||
setup_dialog (CcMousePanel *self)
|
||||
{
|
||||
GtkToggleButton *button;
|
||||
|
||||
self->mouse_test = CC_MOUSE_TEST (cc_mouse_test_new ());
|
||||
|
||||
gtk_widget_set_direction (GTK_WIDGET (self->primary_button_box), GTK_TEXT_DIR_LTR);
|
||||
gtk_widget_set_direction (GTK_WIDGET (self->primary_button_toggles), GTK_TEXT_DIR_LTR);
|
||||
|
||||
self->left_handed = g_settings_get_boolean (self->mouse_settings, "left-handed");
|
||||
button = self->left_handed ? self->primary_button_right : self->primary_button_left;
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
|
||||
|
||||
g_settings_bind (self->mouse_settings, "left-handed",
|
||||
self->primary_button_left, "active",
|
||||
G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_INVERT_BOOLEAN);
|
||||
g_settings_bind (self->mouse_settings, "left-handed",
|
||||
self->primary_button_right, "active",
|
||||
G_SETTINGS_BIND_DEFAULT);
|
||||
adw_toggle_group_set_active (ADW_TOGGLE_GROUP (self->primary_button_toggles),
|
||||
self->left_handed ? BUTTON_ID_LEFT : BUTTON_ID_RIGHT);
|
||||
g_settings_bind_with_mapping (self->mouse_settings, "left-handed",
|
||||
self->primary_button_toggles, "active",
|
||||
G_SETTINGS_BIND_DEFAULT,
|
||||
primary_button_get_mapping,
|
||||
primary_button_set_mapping,
|
||||
NULL, NULL);
|
||||
|
||||
/* Allow changing orientation with either button */
|
||||
button = self->primary_button_right;
|
||||
self->right_gesture = gtk_gesture_click_new ();
|
||||
handle_secondary_button (self, button, self->right_gesture);
|
||||
button = self->primary_button_left;
|
||||
self->left_gesture = gtk_gesture_click_new ();
|
||||
handle_secondary_button (self, button, self->left_gesture);
|
||||
/* FIXME: Allow changing orientation with either button */
|
||||
/* button = self->primary_button_right; */
|
||||
/* self->right_gesture = gtk_gesture_click_new (); */
|
||||
/* handle_secondary_button (self, button, self->right_gesture); */
|
||||
/* button = self->primary_button_left; */
|
||||
/* self->left_gesture = gtk_gesture_click_new (); */
|
||||
/* handle_secondary_button (self, button, self->left_gesture); */
|
||||
|
||||
g_settings_bind (self->mouse_settings, "natural-scroll",
|
||||
self->mouse_scroll_direction_row, "use-default",
|
||||
@@ -434,9 +453,7 @@ cc_mouse_panel_class_init (CcMousePanelClass *klass)
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, mouse_group);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, mouse_scroll_direction_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, mouse_speed_scale);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, primary_button_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, primary_button_left);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, primary_button_right);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, primary_button_toggles);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, preferences);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, stack);
|
||||
gtk_widget_class_bind_template_child (widget_class, CcMousePanel, tap_to_click_row);
|
||||
|
||||
@@ -57,29 +57,12 @@
|
||||
<property name="subtitle" translatable="yes">Order of physical buttons on mice and touchpads.</property>
|
||||
<property name="subtitle-lines">0</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="primary_button_box">
|
||||
<object class="AdwToggleGroup" id="primary_button_toggles">
|
||||
<property name="valign">center</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<property name="margin_top">12</property>
|
||||
<property name="margin_bottom">12</property>
|
||||
<style>
|
||||
<class name="linked"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkToggleButton" id="primary_button_left">
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label" translatable="yes">Left</property>
|
||||
<property name="height_request">35</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkToggleButton" id="primary_button_right">
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label" translatable="yes">Right</property>
|
||||
<property name="group">primary_button_left</property>
|
||||
<property name="height_request">35</property>
|
||||
</object>
|
||||
</child>
|
||||
<toggles>
|
||||
<toggle id="left" translatable="yes">Left</toggle>
|
||||
<toggle id="right" translatable="yes">Right</toggle>
|
||||
</toggles>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
Reference in New Issue
Block a user