Lines Matching defs:twm_win
87 static XEvent synth_btnevent_for_moveresize(TwmWindow *twm_win);
89 static void EwmhGetStrut(TwmWindow *twm_win, bool update);
90 static void EwmhRemoveStrut(TwmWindow *twm_win);
92 static int EwmhGet_NET_WM_STATE(TwmWindow *twm_win);
93 static void EwmhClientMessage_NET_WM_STATEchange(TwmWindow *twm_win, int change,
637 Image *EwmhGetIcon(ScreenInfo *scr, TwmWindow *twm_win)
654 if(XGetWindowProperty(dpy, twm_win->w, XA__NET_WM_ICON,
735 if(XGetWindowProperty(dpy, twm_win->w, XA__NET_WM_ICON,
812 if(XGetWindowProperty(dpy, twm_win->w, XA__NET_WM_ICON,
948 TwmWindow *twm_win)
952 Icon *icon = twm_win->icon;
969 Image *image = EwmhGetIcon(Scr, twm_win);
979 if(twm_win->icon->bm_w) {
980 XDestroyWindow(dpy, twm_win->icon->bm_w);
986 x = GetIconOffset(twm_win->icon);
987 twm_win->icon->bm_w =
988 XCreateWindow(dpy, twm_win->icon->w, x, 0,
989 twm_win->icon->width,
990 twm_win->icon->height,
996 XShapeCombineMask(dpy, twm_win->icon->bm_w, ShapeBounding, 0, 0, image->mask,
998 XShapeCombineMask(dpy, twm_win->icon->w, ShapeBounding, x, 0, image->mask,
1006 rect.width = twm_win->icon->width;
1007 rect.height = twm_win->icon->height;
1008 XShapeCombineRectangles(dpy, twm_win->icon->w, ShapeBounding, 0,
1011 XMapSubwindows(dpy, twm_win->icon->w);
1012 RedoIconName(twm_win);
1019 TwmWindow *twm_win)
1021 EwmhGetStrut(twm_win, true);
1069 TwmWindow *twm_win;
1072 twm_win = GetTwmWindow(w);
1074 if(twm_win == NULL) {
1107 newValue = ~twm_win->ewmhFlags & change;
1127 EwmhClientMessage_NET_WM_STATEchange(twm_win, change, newValue);
1130 EwmhClientMessage_NET_WM_STATEchange(twm_win, change1, newValue & change1);
1132 EwmhClientMessage_NET_WM_STATEchange(twm_win, change2, newValue & change2);
1144 static void EwmhClientMessage_NET_WM_STATEchange(TwmWindow *twm_win, int change,
1155 newZoom = twm_win->zoomed; /* turn off whatever zoom */
1170 fullzoom(twm_win, newZoom);
1175 twm_win->ewmhFlags & EWMH_STATE_SHADED);
1177 if((twm_win->ewmhFlags & EWMH_STATE_SHADED) ^ newValue) {
1182 Squeeze(twm_win);
1192 const int prepri = OtpEffectivePriority(twm_win);
1206 OtpSetAflagMask(twm_win, omask, oval);
1207 if(OtpEffectivePriority(twm_win) != prepri) {
1208 OtpRestackWindow(twm_win);
1212 EwmhSet_NET_WM_STATE(twm_win, change);
1230 TwmWindow *twm_win;
1232 twm_win = GetTwmWindow(w);
1234 if(twm_win == NULL) {
1238 if(!twm_win->mapped) {
1239 DeIconify(twm_win);
1242 WarpToWindow(twm_win, Scr->RaiseOnWarp /* True ? */);
1251 AutoRaiseWindow(twm_win);
1253 SetFocus(twm_win, msg->data.l[1]);
1271 TwmWindow *twm_win;
1273 twm_win = GetTwmWindow(msg->window);
1275 if(twm_win == NULL) {
1279 if(!twm_win->mapped) {
1280 DeIconify(twm_win);
1294 XEvent xevent = synth_btnevent_for_moveresize(twm_win);
1304 ExecuteFunction(F_RESIZE, "", twm_win->frame, twm_win,
1322 XEvent xevent = synth_btnevent_for_moveresize(twm_win);
1323 ExecuteFunction(F_MOVE, "", twm_win->frame, twm_win,
1331 * TODO: check if the twm_win is the same.
1343 synth_btnevent_for_moveresize(TwmWindow *twm_win)
1346 Window root = twm_win->parent_vs->window;
1347 Window child = twm_win->w;
1348 int x_root = twm_win->frame_x;
1349 int y_root = twm_win->frame_y;
1355 XQueryPointer(dpy, twm_win->frame, &root, &child, &x_root, &y_root,
1403 int EwmhHandlePropertyNotify(XPropertyEvent *event, TwmWindow *twm_win)
1406 EwmhHandle_NET_WM_ICONNotify(event, twm_win);
1411 EwmhHandle_NET_WM_STRUTNotify(event, twm_win);
1415 char *prop = GetWMPropertyString(twm_win->w, XA__NET_WM_NAME);
1417 FreeWMPropertyString(twm_win->names.net_wm_name);
1418 twm_win->names.net_wm_name = NULL;
1419 apply_window_name(twm_win);
1423 if(twm_win->names.net_wm_name != NULL
1424 && strcmp(twm_win->names.net_wm_name, prop) == 0) {
1431 FreeWMPropertyString(twm_win->names.net_wm_name);
1432 twm_win->names.net_wm_name = prop;
1435 apply_window_name(twm_win);
1439 char *prop = GetWMPropertyString(twm_win->w, XA__NET_WM_ICON_NAME);
1441 FreeWMPropertyString(twm_win->names.net_wm_icon_name);
1442 twm_win->names.net_wm_icon_name = NULL;
1443 apply_window_icon_name(twm_win);
1447 if(twm_win->names.net_wm_icon_name != NULL
1448 && strcmp(twm_win->names.net_wm_icon_name, prop) == 0) {
1455 FreeWMPropertyString(twm_win->names.net_wm_icon_name);
1456 twm_win->names.net_wm_icon_name = prop;
1459 apply_window_icon_name(twm_win);
1469 void EwmhSet_NET_WM_DESKTOP(TwmWindow *twm_win)
1473 VirtualScreen *vs = twm_win->vs;
1481 EwmhSet_NET_WM_DESKTOP_ws(twm_win, ws);
1487 void EwmhSet_NET_WM_DESKTOP_ws(TwmWindow *twm_win, WorkSpace *ws)
1495 else if(twm_win->occupation == fullOccupation) {
1506 int occupation = twm_win->occupation;
1534 XChangeProperty(dpy, twm_win->w,
1602 int EwmhGetOccupation(TwmWindow *twm_win)
1610 prop = EwmhGetWindowProperties(twm_win->w,
1651 TwmWindow *twm_win;
1656 twm_win = GetTwmWindow(w);
1658 if(twm_win == NULL) {
1662 occupation = twm_win->occupation;
1665 if((vs = twm_win->vs) != NULL) {
1682 ChangeOccupation(twm_win, occupation);
1689 void EwmhUnmapNotify(TwmWindow *twm_win)
1691 XDeleteProperty(dpy, twm_win->w, XA__NET_WM_DESKTOP);
1786 TwmWindow *twm_win;
1797 for(twm_win = OtpBottomWin();
1798 twm_win != NULL;
1799 twm_win = OtpNextWinUp(twm_win)) {
1800 if(twm_win->iconmanagerlist != NULL &&
1801 !twm_win->iswspmgr &&
1802 !twm_win->isiconmgr) {
1803 prop[i] = twm_win->w;
1842 void EwmhGetProperties(TwmWindow *twm_win)
1844 twm_win->ewmhFlags = 0;
1846 Atom type = EwmhGetWindowProperty(twm_win->w, XA__NET_WM_WINDOW_TYPE, XA_ATOM);
1849 twm_win->ewmhWindowType = wt_Desktop;
1852 twm_win->ewmhWindowType = wt_Dock;
1855 twm_win->ewmhWindowType = wt_Normal;
1857 EwmhGetStrut(twm_win, false);
1859 twm_win->ewmhFlags |= EwmhGet_NET_WM_STATE(twm_win) &
1864 int EwmhGetInitPriority(TwmWindow *twm_win)
1866 switch(twm_win->ewmhWindowType) {
1876 bool EwmhHasBorder(TwmWindow *twm_win)
1878 switch(twm_win->ewmhWindowType) {
1887 bool EwmhHasTitle(TwmWindow *twm_win)
1889 switch(twm_win->ewmhWindowType) {
1898 bool EwmhOnWindowRing(TwmWindow *twm_win)
1900 switch(twm_win->ewmhWindowType) {
1957 static void EwmhGetStrut(TwmWindow *twm_win, bool update)
1963 prop = EwmhGetWindowProperties(twm_win->w,
1967 prop = EwmhGetWindowProperties(twm_win->w,
2027 if(strut->win == twm_win) {
2048 strut->win = twm_win;
2060 twm_win->ewmhFlags |= EWMH_HAS_STRUT;
2069 static void EwmhRemoveStrut(TwmWindow *twm_win)
2075 if(strut->win == twm_win) {
2076 twm_win->ewmhFlags &= ~EWMH_HAS_STRUT;
2099 void EwmhSet_NET_FRAME_EXTENTS(TwmWindow *twm_win)
2102 const long w = twm_win->frame_bw3D + twm_win->frame_bw;
2106 data[2] = twm_win->title_height + w; // top
2109 XChangeProperty(dpy, twm_win->w,
2137 void EwmhSet_NET_WM_STATE(TwmWindow *twm_win, int changes)
2146 switch(twm_win->zoomed) {
2166 twm_win->ewmhFlags &= ~(EWMH_STATE_MAXIMIZED_VERT |
2169 twm_win->ewmhFlags |= newFlags;
2173 if(twm_win->squeezed) {
2174 twm_win->ewmhFlags |= EWMH_STATE_SHADED;
2177 twm_win->ewmhFlags &= ~EWMH_STATE_SHADED;
2182 int pri = OtpEffectiveDisplayPriority(twm_win);
2184 twm_win->ewmhFlags &= ~(EWMH_STATE_ABOVE | EWMH_STATE_BELOW);
2191 if(twm_win->ewmhWindowType == wt_Dock && pri == EWMH_PRI_DOCK) {
2194 if(twm_win->ewmhWindowType == wt_Desktop && pri == EWMH_PRI_DESKTOP) {
2199 twm_win->ewmhFlags |= EWMH_STATE_ABOVE;
2202 twm_win->ewmhFlags |= EWMH_STATE_BELOW;
2206 flags = twm_win->ewmhFlags;
2228 XChangeProperty(dpy, twm_win->w, XA__NET_WM_STATE, XA_ATOM, 32,
2237 static int EwmhGet_NET_WM_STATE(TwmWindow *twm_win)
2244 prop = EwmhGetWindowProperties(twm_win->w, XA__NET_WM_STATE, XA_ATOM, &nitems);