void EdgeWindowsShow(void) { int ax, ay, cx, cy; if (Conf.desks.edge_flip_mode == EDGE_FLIP_OFF) { EdgeWindowsHide(); return; } if (!w1) { w1 = EobjWindowCreate(EOBJ_TYPE_EVENT, 0, 0, 1, WinGetH(VROOT), 0, "Edge-L"); w2 = EobjWindowCreate(EOBJ_TYPE_EVENT, WinGetW(VROOT) - 1, 0, 1, WinGetH(VROOT), 0, "Edge-R"); w3 = EobjWindowCreate(EOBJ_TYPE_EVENT, 0, 0, WinGetW(VROOT), 1, 0, "Edge-T"); w4 = EobjWindowCreate(EOBJ_TYPE_EVENT, 0, WinGetH(VROOT) - 1, WinGetW(VROOT), 1, 0, "Edge-B"); ESelectInput(EobjGetWin(w1), EnterWindowMask | LeaveWindowMask); ESelectInput(EobjGetWin(w2), EnterWindowMask | LeaveWindowMask); ESelectInput(EobjGetWin(w3), EnterWindowMask | LeaveWindowMask); ESelectInput(EobjGetWin(w4), EnterWindowMask | LeaveWindowMask); EventCallbackRegister(EobjGetWin(w1), EdgeHandleEvents, (void *)0); EventCallbackRegister(EobjGetWin(w2), EdgeHandleEvents, (void *)1); EventCallbackRegister(EobjGetWin(w3), EdgeHandleEvents, (void *)2); EventCallbackRegister(EobjGetWin(w4), EdgeHandleEvents, (void *)3); } DeskCurrentGetArea(&cx, &cy); DesksGetAreaSize(&ax, &ay); EdgeWindowShow(1, cx != 0 || Conf.desks.areas_wraparound); EdgeWindowShow(2, cx != (ax - 1) || Conf.desks.areas_wraparound); EdgeWindowShow(3, cy != 0 || Conf.desks.areas_wraparound); EdgeWindowShow(4, cy != (ay - 1) || Conf.desks.areas_wraparound); }
static void TooltipRealize(ToolTip * tt) { int i, wh; EObj *eo; for (i = 0; i < 5; i++) { if (!tt->iclass[i]) continue; wh = (i + 1) * 8; eo = EobjWindowCreate(EOBJ_TYPE_MISC, -50, -100, wh, wh, 1, tt->name); eo->fade = eo->shadow = 1; EobjChangeOpacity(eo, OpacityFromPercent(Conf.opacity.tooltips)); tt->win[i] = eo; } tt->iwin = ECreateWindow(EobjGetWin(tt->TTWIN), 0, 0, 1, 1, 0); }
static void _CoordsShow(EWin * ewin, int mode) { TextClass *tc; ImageClass *ic; char s[256]; int md; int x, y; unsigned int w, h; int cx, cy, cw, ch; EObj *eo = coord_eo; EImageBorder *pad; int bl, br, bt, bb; if (!Conf.movres.mode_info) return; if (!ewin || !ewin->state.show_coords) return; tc = TextclassFind("COORDS", 1); ic = ImageclassFind("COORDS", 1); if ((!ic) || (!tc)) return; cx = cy = cw = ch = 0; x = ewin->shape_x; y = ewin->shape_y; w = (ewin->state.shaded) ? ewin->client.w : ewin->shape_w; h = (ewin->state.shaded) ? ewin->client.h : ewin->shape_h; ICCCM_GetIncrementalSize(ewin, w, h, &w, &h); switch (mode) { default: case 0: Esnprintf(s, sizeof(s), "%i x %i (%i, %i)", w, h, x, y); break; case 1: Esnprintf(s, sizeof(s), _("Focused/unfocused opacity: %d/%d %%"), OpacityToPercent(ewin->props.focused_opacity), OpacityToPercent(ewin->ewmh.opacity)); break; } TextSize(tc, 0, 0, 0, s, &cw, &ch, 17); pad = ImageclassGetPadding(ic); cw += pad->left + pad->right; ch += pad->top + pad->bottom; /* Width hysteresis (hack - assuming horizontal text) */ cw += 8; if (eo && abs(EobjGetW(eo) - cw) < 8) cw = EobjGetW(eo); if (Mode.mode == MODE_MOVE) md = Conf.movres.mode_move; else md = Conf.movres.mode_resize; if ((md == 0) || ((cw < ewin->shape_w - 2) && (ch < ewin->shape_h - 2))) { if (Conf.movres.mode_info == 1) { switch (md) { case 0: case 1: case 2: EwinBorderGetSize(ewin, &bl, &br, &bt, &bb); w = (ewin->state.shaded) ? EoGetW(ewin) : ewin->shape_w + bl + br; h = (ewin->state.shaded) ? EoGetH(ewin) : ewin->shape_h + bt + bb; cx = x + (w - cw) / 2 + EoGetX(EoGetDesk(ewin)); cy = y + (h - ch) / 2 + EoGetY(EoGetDesk(ewin)); break; } } } if (!eo) { eo = EobjWindowCreate(EOBJ_TYPE_MISC, 0, 0, 1, 1, 2, "Coord"); if (!eo) return; coord_eo = eo; eo->fade = eo->shadow = 1; /* Center text (override theme) */ TextclassSetJustification(tc, 512); } #define TEST_COORD_REPARENT_TO_FRAME 0 #if TEST_COORD_REPARENT_TO_FRAME cx -= x; cy -= y; #endif md = cw != EobjGetW(eo) || ch != EobjGetH(eo); /* md is change size flag */ EobjMoveResize(eo, cx, cy, cw, ch); if (!eo->shown) { #if TEST_COORD_REPARENT_TO_FRAME EobjReparent(eo, EoObj(ewin), cx, cy); #endif EobjMap(eo, 0); } ITApply(EobjGetWin(eo), ic, NULL, STATE_NORMAL, 1, 0, ST_SOLID, tc, NULL, s, 1); if (md) /* Assuming that shape change only happens when size changes too */ EobjShapeUpdate(eo, 0); EFlush(); }
void StartupWindowsCreate(void) { Win w1, w2, win1, win2, b1, b2; Background *bg; ImageClass *ic; int x, y, bx, by, bw, bh, dbw; EObj *eo; /* Acting only as boolean? */ if (BackgroundFind("STARTUP_BACKGROUND_SIDEWAYS")) bg_sideways = 1; ic = ImageclassFind("STARTUP_BAR", 0); if (!ic) ic = ImageclassFind("DESKTOP_DRAGBUTTON_HORIZ", 0); bg = BackgroundFind("STARTUP_BACKGROUND"); if (!ic || !bg) return; dbw = Conf.desks.dragbar_width; if (dbw <= 0) dbw = 16; if (bg_sideways) { x = WinGetW(VROOT) / 2; y = 0; bx = WinGetW(VROOT) - dbw; by = 0; bw = dbw; bh = WinGetH(VROOT); } else { x = 0; y = WinGetH(VROOT) / 2; bx = 0; by = WinGetH(VROOT) - dbw; bw = WinGetW(VROOT); bh = dbw; } eo = EobjWindowCreate(EOBJ_TYPE_MISC, -x, -y, WinGetW(VROOT), WinGetH(VROOT), 1, "Init-1"); if (!eo) return; init_win1 = eo; w1 = EobjGetWin(eo); win1 = ECreateWindow(w1, x, y, WinGetW(VROOT), WinGetH(VROOT), 0); eo = EobjWindowCreate(EOBJ_TYPE_MISC, x, y, WinGetW(VROOT), WinGetH(VROOT), 1, "Init-2"); if (!eo) return; init_win2 = eo; w2 = EobjGetWin(eo); win2 = ECreateWindow(w2, -x, -y, WinGetW(VROOT), WinGetH(VROOT), 0); EMapWindow(win1); EMapWindow(win2); if (bw > 0 && bh > 0) { b1 = ECreateWindow(w1, bx, by, bw, bh, 0); b2 = ECreateWindow(w2, 0, 0, bw, bh, 0); EMapRaised(b1); EMapRaised(b2); ImageclassApply(ic, b1, 0, 0, 0, ST_SOLID); ImageclassApply(ic, b2, 0, 0, 0, ST_SOLID); } BackgroundSet(bg, win1, WinGetW(VROOT), WinGetH(VROOT)); BackgroundSet(bg, win2, WinGetW(VROOT), WinGetH(VROOT)); StartupBackgroundsDestroy(); EobjMap(init_win1, 0); EobjMap(init_win2, 0); EobjsRepaint(); }