summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorsten Wißmann <edu@thorsten-wissmann.de>2013-03-02 13:13:19 +0100
committerThorsten Wißmann <edu@thorsten-wissmann.de>2013-03-02 13:13:19 +0100
commitd2df58e3ac7536517fcc22af4dfdec05353c4b62 (patch)
treeabffb9a0a75cdec71b02bdbf7867a1c029843f12
parent11658771ad440538957ae0e5a5f1b1b4c10cdc34 (diff)
Move named monitor subtree to monitors.by-name.
-rw-r--r--src/monitor.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/monitor.c b/src/monitor.c
index ace4e22c..525bb484 100644
--- a/src/monitor.c
+++ b/src/monitor.c
@@ -32,6 +32,7 @@ int* g_mouse_recenter_gap;
HSStack* g_monitor_stack;
GArray* g_monitors; // Array of HSMonitor*
HSObject* g_monitor_object;
+HSObject* g_monitor_by_name_object;
typedef struct RectList {
XRectangle rect;
@@ -49,6 +50,7 @@ void monitor_init() {
g_mouse_recenter_gap = &(settings_find("mouse_recenter_gap")->value.i);
g_monitor_stack = stack_create();
g_monitor_object = hsobject_create_and_link(hsobject_root(), "monitors");
+ g_monitor_by_name_object = hsobject_create_and_link(g_monitor_object, "by-name");
}
void monitor_destroy() {
@@ -62,6 +64,7 @@ void monitor_destroy() {
}
g_free(m);
}
+ hsobject_unlink_and_destroy(g_monitor_object, g_monitor_by_name_object);
hsobject_unlink_and_destroy(hsobject_root(), g_monitor_object);
stack_destroy(g_monitor_stack);
g_array_free(g_monitors, true);
@@ -384,7 +387,7 @@ HSMonitor* add_monitor(XRectangle rect, HSTag* tag, char* name) {
HSMonitor* m = g_new0(HSMonitor, 1);
hsobject_init(&m->object);
if (name) {
- hsobject_link(g_monitor_object, &m->object, name);
+ hsobject_link(g_monitor_by_name_object, &m->object, name);
}
m->rect = rect;
m->tag = tag;
@@ -506,7 +509,7 @@ int remove_monitor(int index) {
stack_remove_slice(g_monitor_stack, monitor->slice);
slice_destroy(monitor->slice);
XDestroyWindow(g_display, monitor->stacking_window);
- hsobject_unlink(g_monitor_object, &monitor->object);
+ hsobject_unlink(g_monitor_by_name_object, &monitor->object);
hsobject_free(&monitor->object);
// and remove monitor completely
if (monitor->name) {
@@ -570,7 +573,7 @@ int rename_monitor_command(int argc, char** argv, GString* output) {
} else if (!strcmp("", argv[2])) {
// empty name -> clear name
if (mon->name != NULL) {
- hsobject_unlink_by_name(g_monitor_object, mon->name->str);
+ hsobject_unlink_by_name(g_monitor_by_name_object, mon->name->str);
g_string_free(mon->name, true);
mon->name = NULL;
}
@@ -586,11 +589,11 @@ int rename_monitor_command(int argc, char** argv, GString* output) {
GString* name = g_string_new(argv[2]);
mon->name = name;
} else {
- hsobject_unlink_by_name(g_monitor_object, mon->name->str);
+ hsobject_unlink_by_name(g_monitor_by_name_object, mon->name->str);
// already named
g_string_assign(mon->name, argv[2]);
}
- hsobject_link(g_monitor_object, &mon->object, mon->name->str);
+ hsobject_link(g_monitor_by_name_object, &mon->object, mon->name->str);
return 0;
}