diff options
author | Thorsten Wißmann <edu@thorsten-wissmann.de> | 2013-03-02 13:13:19 +0100 |
---|---|---|
committer | Thorsten Wißmann <edu@thorsten-wissmann.de> | 2013-03-02 13:13:19 +0100 |
commit | d2df58e3ac7536517fcc22af4dfdec05353c4b62 (patch) | |
tree | abffb9a0a75cdec71b02bdbf7867a1c029843f12 | |
parent | 11658771ad440538957ae0e5a5f1b1b4c10cdc34 (diff) |
Move named monitor subtree to monitors.by-name.
-rw-r--r-- | src/monitor.c | 13 |
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; } |