int main(int argc, char *argv[]) { printf("Usage to click buttons: %s <window-title> <button-name>\n", argv[0]); printf("Usage to identify buttons: %s <window-title>\n", argv[0]); printf("Usage to identify windows: %s\n", argv[0]); switch (argc) { case 1: enum_windows(); break; case 2: enum_buttons(argv[1]); break; case 3: click_button(argv[1], argv[2]); break; } return 1; }
void snap_button(struct dlg *dlg, struct button *bp, bool sizing, int *content) { struct edges h; struct edges v; void *parent = NULL; int snapdist = g_snap_dist; int grid = g_snap_usegrid ? g_snap_gridsize : 0; int padding = g_snap_padding; if (snapdist < 1) return; h.dmin = v.dmin = h.def = v.def = snapdist; h.from2 = (h.from1 = bp->x0) + bp->w0; v.from2 = (v.from1 = bp->y0) + bp->h0; // ------------------------------------------------------ // snap to grid if (grid > 1)// && (parent || sizing)) { snap_to_grid(&h, &v, sizing, grid, padding); } else { struct snap_info si; si.h = &h; si.v = &v; si.sizing = sizing; si.same_level = true; si.pad = padding; si.self = bp; si.parent = parent; enum_buttons(dlg, snap_enum_proc, &si); h.to1 = 0; h.to2 = dlg->w; v.to1 = 0; v.to2 = dlg->h; snap_to_edge(&h, &v, sizing, false, padding); // ----------------------------------------- if (sizing) { // snap to button icons if (content) { // images have to be double padded, since they are centered h.to2 = (h.to1 = h.from1) + content[0]; v.to2 = (v.to1 = v.from1) + content[1]; snap_to_edge(&h, &v, sizing, false, -2*padding); } /* // snap frame to childs si.same_level = false; si.pad = -padding; si.self = NULL; si.parent = self; enum_buttons(dlg, snap_enum_proc, &si); */ } } // ----------------------------------------- // adjust the window-pos if (h.dmin < snapdist) { if (sizing) bp->w0 += h.omin; else bp->x0 += h.omin; } if (v.dmin < snapdist) { if (sizing) bp->h0 += v.omin; else bp->y0 += v.omin; } }