1 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
3 behavior.c for ObConf, the configuration tool for Openbox
4 Copyright (c) 2003-2007 Dana Jansens
5 Copyright (c) 2003 Tim Riley
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 See the COPYING file for a copy of the GNU General Public License.
23 static gboolean mapping = FALSE;
25 static void behavior_enable_stuff();
27 void behavior_setup_tab()
29 GtkWidget *w, *w1, *w2;
35 w1 = get_widget("resist_window");
36 w2 = get_widget("resist_edge");
37 group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
38 gtk_size_group_add_widget(group, w1);
39 gtk_size_group_add_widget(group, w2);
41 w1 = get_widget("resist_window_label");
42 w2 = get_widget("resist_edge_label");
43 group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
44 gtk_size_group_add_widget(group, w1);
45 gtk_size_group_add_widget(group, w2);
47 w1 = get_widget("doubleclick_time");
48 w2 = get_widget("drag_threshold");
49 group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
50 gtk_size_group_add_widget(group, w1);
51 gtk_size_group_add_widget(group, w2);
53 w1 = get_widget("doubleclick_time_label");
54 w2 = get_widget("drag_threshold_label");
55 group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
56 gtk_size_group_add_widget(group, w1);
57 gtk_size_group_add_widget(group, w2);
59 w = get_widget("focus_mouse");
60 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
61 tree_get_bool("focus/followMouse", FALSE));
63 w = get_widget("focus_delay");
64 gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
65 tree_get_int("focus/focusDelay", 0));
67 w = get_widget("focus_raise");
68 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
69 tree_get_bool("focus/raiseOnFocus", FALSE));
71 w = get_widget("focus_last");
72 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
73 tree_get_bool("focus/focusLast", FALSE));
75 w = get_widget("focus_new");
76 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
77 tree_get_bool("focus/focusNew", TRUE));
79 w = get_widget("resize_contents");
80 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
81 tree_get_bool("resize/drawContents", TRUE));
83 w = get_widget("resist_window");
84 gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
85 tree_get_int("resistance/strength", 10));
87 w = get_widget("resist_edge");
88 gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
89 tree_get_int("resistance/screen_edge_strength",
92 w = get_widget("place_mouse");
93 s = tree_get_string("placement/policy", "Smart");
94 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
95 !g_ascii_strcasecmp(s, "UnderMouse"));
98 w = get_widget("doubleclick_time");
99 gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
100 tree_get_int("mouse/doubleClickTime", 200));
102 w = get_widget("drag_threshold");
103 gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
104 tree_get_int("mouse/dragThreshold", 3));
106 behavior_enable_stuff();
111 static void behavior_enable_stuff()
116 w = get_widget("focus_mouse");
117 b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));
119 w = get_widget("focus_delay");
120 gtk_widget_set_sensitive(w, b);
121 w = get_widget("focus_delay_label");
122 gtk_widget_set_sensitive(w, b);
123 w = get_widget("focus_delay_label_units");
124 gtk_widget_set_sensitive(w, b);
125 w = get_widget("focus_raise");
126 gtk_widget_set_sensitive(w, b);
127 w = get_widget("focus_last");
128 gtk_widget_set_sensitive(w, b);
131 void on_focus_mouse_toggled(GtkToggleButton *w, gpointer data)
137 b = gtk_toggle_button_get_active(w);
138 tree_set_bool("focus/followMouse", b);
140 behavior_enable_stuff();
143 void on_focus_delay_value_changed(GtkSpinButton *w, gpointer data)
147 tree_set_int("focus/focusDelay",
148 gtk_spin_button_get_value_as_int(w));
151 void on_focus_raise_toggled(GtkToggleButton *w, gpointer data)
155 tree_set_bool("focus/raiseOnFocus", gtk_toggle_button_get_active(w));
158 void on_focus_last_toggled(GtkToggleButton *w, gpointer data)
162 tree_set_bool("focus/focusLast", gtk_toggle_button_get_active(w));
165 void on_focus_new_toggled(GtkToggleButton *w, gpointer data)
169 tree_set_bool("focus/focusNew", gtk_toggle_button_get_active(w));
172 void on_place_mouse_toggled(GtkToggleButton *w, gpointer data)
176 tree_set_string("placement/policy",
177 (gtk_toggle_button_get_active(w) ?
178 "UnderMouse" : "Smart"));
181 void on_resist_window_value_changed(GtkSpinButton *w, gpointer data)
185 tree_set_int("resistance/strength", gtk_spin_button_get_value_as_int(w));
188 void on_resist_edge_value_changed(GtkSpinButton *w, gpointer data)
192 tree_set_int("resistance/screen_edge_strength",
193 gtk_spin_button_get_value_as_int(w));
196 void on_resize_contents_toggled(GtkToggleButton *w, gpointer data)
200 tree_set_bool("resize/drawContents", gtk_toggle_button_get_active(w));
203 void on_doubleclick_time_value_changed(GtkSpinButton *w, gpointer data)
207 tree_set_int("mouse/doubleClickTime",
208 gtk_spin_button_get_value_as_int(w));
211 void on_drag_threshold_value_changed(GtkSpinButton *w, gpointer data)
215 tree_set_int("mouse/dragThreshold",
216 gtk_spin_button_get_value_as_int(w));