-/* Copyright (c) 2012-2014, Bastien Dejean
+/* Copyright (c) 2012, Bastien Dejean
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those
- * of the authors and should not be interpreted as representing official policies,
- * either expressed or implied, of the FreeBSD Project.
*/
#include <limits.h>
mon = m;
if (pointer_follows_monitor)
- center_pointer(m);
+ center_pointer(m->rectangle);
ewmh_update_current_desktop();
put_status();
}
}
free(cir);
- } else if (!remove_disabled_monitor && info->connection != XCB_RANDR_CONNECTION_DISCONNECTED) {
+ } else if (!remove_disabled_monitors && info->connection != XCB_RANDR_CONNECTION_DISCONNECTED) {
m = get_monitor_by_id(outputs[i]);
if (m != NULL)
m->wired = true;
free(gpo);
/* handle overlapping monitors */
- m = mon_head;
- while (m != NULL) {
- monitor_t *next = m->next;
- if (m->wired) {
- for (monitor_t *mb = mon_head; mb != NULL; mb = mb->next)
- if (mb != m && mb->wired &&
- (m->desk == NULL || mb->desk == NULL) &&
- contains(mb->rectangle, m->rectangle)) {
- if (mm == m)
- mm = mb;
- merge_monitors(m, mb);
- remove_monitor(m);
- break;
- }
+ if (merge_overlapping_monitors) {
+ m = mon_head;
+ while (m != NULL) {
+ monitor_t *next = m->next;
+ if (m->wired) {
+ for (monitor_t *mb = mon_head; mb != NULL; mb = mb->next)
+ if (mb != m && mb->wired &&
+ (m->desk == NULL || mb->desk == NULL) &&
+ contains(mb->rectangle, m->rectangle)) {
+ if (mm == m)
+ mm = mb;
+ if (m->desk != NULL && mb->desk == NULL && contains(m->rectangle, mb->rectangle)) {
+ mm = m;
+ remove_monitor(mb);
+ } else {
+ merge_monitors(m, mb);
+ remove_monitor(m);
+ }
+ break;
+ }
+ }
+ m = next;
}
- m = next;
}
/* merge and remove disconnected monitors */