CTWM
|
#include "ctwm.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdint.h>
#include <assert.h>
#include <X11/Xatom.h>
#include <X11/extensions/shape.h>
#include "ctwm_atoms.h"
#include "ctwm_shutdown.h"
#include "ewmh_atoms.h"
#include "screen.h"
#include "events.h"
#include "event_handlers.h"
#include "functions_defs.h"
#include "icons.h"
#include "otp.h"
#include "image.h"
#include "list.h"
#include "functions.h"
#include "occupation.h"
#include "r_layout.h"
#include "util.h"
#include "vscreen.h"
#include "win_iconify.h"
#include "win_ops.h"
#include "win_resize.h"
#include "win_utils.h"
#include "workspace_utils.h"
Go to the source code of this file.
Macros | |
#define | NET_WM_STATE_REMOVE 0 /* remove/unset property */ |
#define | NET_WM_STATE_ADD 1 /* add/set property */ |
#define | NET_WM_STATE_TOGGLE 2 /* toggle property */ |
#define | _NET_WM_MOVERESIZE_SIZE_TOPLEFT 0 |
#define | _NET_WM_MOVERESIZE_SIZE_TOP 1 |
#define | _NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2 |
#define | _NET_WM_MOVERESIZE_SIZE_RIGHT 3 |
#define | _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4 |
#define | _NET_WM_MOVERESIZE_SIZE_BOTTOM 5 |
#define | _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6 |
#define | _NET_WM_MOVERESIZE_SIZE_LEFT 7 |
#define | _NET_WM_MOVERESIZE_MOVE 8 /* movement only */ |
#define | _NET_WM_MOVERESIZE_SIZE_KEYBOARD 9 /* size via keyboard */ |
#define | _NET_WM_MOVERESIZE_MOVE_KEYBOARD 10 /* move via keyboard */ |
#define | _NET_WM_MOVERESIZE_CANCEL 11 /* cancel operation */ |
#define | ALL_WORKSPACES 0xFFFFFFFFU |
#define | CRWARN(x) (void)0 |
#define | CHKNRET(st) |
#define | DOBIT(fld) |
Variables | |
Atom | XEWMHAtom [NUM_EWMH_XATOMS] |
static bool | caughtError |
static uint16_t * | buffer_16bpp |
static uint32_t * | buffer_32bpp |
Definition at line 78 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
Definition at line 75 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
Definition at line 77 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
#define _NET_WM_MOVERESIZE_SIZE_BOTTOM 5 |
Definition at line 72 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
#define _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6 |
Definition at line 73 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
#define _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4 |
Definition at line 71 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
Definition at line 76 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
#define _NET_WM_MOVERESIZE_SIZE_LEFT 7 |
Definition at line 74 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
#define _NET_WM_MOVERESIZE_SIZE_RIGHT 3 |
Definition at line 70 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
#define _NET_WM_MOVERESIZE_SIZE_TOP 1 |
Definition at line 68 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
#define _NET_WM_MOVERESIZE_SIZE_TOPLEFT 0 |
Definition at line 67 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
#define _NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2 |
Definition at line 69 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
#define ALL_WORKSPACES 0xFFFFFFFFU |
Definition at line 96 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_DESKTOP(), EwmhGetOccupation(), and EwmhSet_NET_WM_DESKTOP_ws().
Definition at line 64 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_STATE().
Definition at line 63 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_STATE().
Definition at line 65 of file ewmh.c.
Referenced by EwmhClientMessage_NET_WM_STATE().
Definition at line 1027 of file ewmh.c.
References CHKNRET, and PlaceX.
Referenced by EwmhClientMessage_NET_WM_STATE(), and EwmhGet_NET_WM_STATE().
|
static |
Definition at line 838 of file ewmh.c.
References buffer_16bpp, PlaceX, x, and y.
Referenced by ExtractIcon().
Definition at line 846 of file ewmh.c.
References buffer_32bpp, PlaceX, x, and y.
Referenced by ExtractIcon().
bool EwmhClientMessage | ( | XClientMessageEvent * | msg | ) |
Definition at line 561 of file ewmh.c.
References dpy, EwmhClientMessage_NET_ACTIVE_WINDOW(), EwmhClientMessage_NET_CLOSE_WINDOW(), EwmhClientMessage_NET_WM_DESKTOP(), EwmhClientMessage_NET_WM_MOVERESIZE(), EwmhClientMessage_NET_WM_STATE(), GotoWorkSpaceByNumber(), PlaceX, Scr, and ShowBackground().
Referenced by HandleClientMessage().
|
static |
Definition at line 1227 of file ewmh.c.
References AutoRaiseWindow(), DeIconify(), GetTwmWindow(), TwmWindow::mapped, PlaceX, Scr, SetFocus(), and WarpToWindow().
Referenced by EwmhClientMessage().
|
static |
Definition at line 1387 of file ewmh.c.
References ButtonPressed, C_NO_CONTEXT, ExecuteFunction(), GetTwmWindow(), and PlaceX.
Referenced by EwmhClientMessage().
|
static |
Definition at line 1648 of file ewmh.c.
References ALL_WORKSPACES, ChangeOccupation(), WorkSpaceWindow::currentwspc, fullOccupation, GetTwmWindow(), WorkSpace::number, TwmWindow::occupation, PlaceX, Scr, TwmWindow::vs, and VirtualScreen::wsw.
Referenced by EwmhClientMessage().
|
static |
Definition at line 1269 of file ewmh.c.
References _NET_WM_MOVERESIZE_CANCEL, _NET_WM_MOVERESIZE_MOVE, _NET_WM_MOVERESIZE_MOVE_KEYBOARD, _NET_WM_MOVERESIZE_SIZE_BOTTOM, _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT, _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT, _NET_WM_MOVERESIZE_SIZE_KEYBOARD, _NET_WM_MOVERESIZE_SIZE_LEFT, _NET_WM_MOVERESIZE_SIZE_RIGHT, _NET_WM_MOVERESIZE_SIZE_TOP, _NET_WM_MOVERESIZE_SIZE_TOPLEFT, _NET_WM_MOVERESIZE_SIZE_TOPRIGHT, C_WINDOW, DeIconify(), ExecuteFunction(), TwmWindow::frame, GetTwmWindow(), TwmWindow::mapped, PlaceX, and synth_btnevent_for_moveresize().
Referenced by EwmhClientMessage().
|
static |
Definition at line 1066 of file ewmh.c.
References atomToFlag(), dpy, EWMH_STATE_MAXIMIZED_HORZ, EWMH_STATE_MAXIMIZED_VERT, EwmhClientMessage_NET_WM_STATEchange(), GetTwmWindow(), NET_WM_STATE_ADD, NET_WM_STATE_REMOVE, NET_WM_STATE_TOGGLE, and PlaceX.
Referenced by EwmhClientMessage().
|
static |
Definition at line 1144 of file ewmh.c.
References DOBIT, EWMH_STATE_ABOVE, EWMH_STATE_BELOW, EWMH_STATE_FULLSCREEN, EWMH_STATE_MAXIMIZED_HORZ, EWMH_STATE_MAXIMIZED_VERT, EWMH_STATE_SHADED, EwmhSet_NET_WM_STATE(), fullzoom(), OtpEffectivePriority(), OtpRestackWindow(), OtpSetAflagMask(), PlaceX, Squeeze(), ZOOM_NONE, and TwmWindow::zoomed.
Referenced by EwmhClientMessage_NET_WM_STATE().
Definition at line 1738 of file ewmh.c.
References dpy, EWMH_HAS_STRUT, EwmhRemoveStrut(), PlaceX, and Scr.
Referenced by HandleDestroyNotify().
Definition at line 2237 of file ewmh.c.
References atomToFlag(), EwmhGetWindowProperties(), PlaceX, and TwmWindow::w.
Referenced by EwmhGetProperties().
Image * EwmhGetIcon | ( | ScreenInfo * | scr, |
TwmWindow * | twm_win ) |
Definition at line 637 of file ewmh.c.
References ALLOW_DEAD_STORE, dpy, ExtractIcon(), PlaceX, Scr, and TwmWindow::w.
Referenced by CreateIconWindow(), and EwmhHandle_NET_WM_ICONNotify().
Definition at line 1864 of file ewmh.c.
References EWMH_PRI_DESKTOP, EWMH_PRI_DOCK, wt_Desktop, and wt_Dock.
Referenced by AddNewOwl().
Definition at line 1602 of file ewmh.c.
References ALL_WORKSPACES, EwmhGetWindowProperties(), fullOccupation, PlaceX, Scr, and TwmWindow::w.
Referenced by SetupOccupation().
Definition at line 1842 of file ewmh.c.
References EWMH_STATE_ABOVE, EWMH_STATE_BELOW, EWMH_STATE_SHADED, EwmhGet_NET_WM_STATE(), EwmhGetStrut(), EwmhGetWindowProperty(), PlaceX, TwmWindow::w, wt_Desktop, wt_Dock, and wt_Normal.
Referenced by AddWindow().
Definition at line 1957 of file ewmh.c.
References EWMH_HAS_STRUT, EwmhGetWindowProperties(), EwmhRecalculateStrut(), PlaceX, Scr, and TwmWindow::w.
Referenced by EwmhGetProperties(), and EwmhHandle_NET_WM_STRUTNotify().
|
static |
Definition at line 1577 of file ewmh.c.
Referenced by EwmhGet_NET_WM_STATE(), EwmhGetOccupation(), and EwmhGetStrut().
Definition at line 1541 of file ewmh.c.
Referenced by EwmhGetProperties().
|
static |
Definition at line 947 of file ewmh.c.
References Icon::bm_w, dpy, EwmhGetIcon(), FreeImage(), GetIconOffset(), Icon::height, TwmWindow::icon, Icon::image, Image::mask, Icon::match, match_net_wm_icon, Image::pixmap, PlaceX, RedoIconName(), Scr, Icon::w, Icon::width, and x.
Referenced by EwmhHandlePropertyNotify().
|
static |
Definition at line 1018 of file ewmh.c.
References EwmhGetStrut().
Referenced by EwmhHandlePropertyNotify().
int EwmhHandlePropertyNotify | ( | XPropertyEvent * | event, |
TwmWindow * | twm_win ) |
Definition at line 1403 of file ewmh.c.
References apply_window_icon_name(), apply_window_name(), EwmhHandle_NET_WM_ICONNotify(), EwmhHandle_NET_WM_STRUTNotify(), FreeWMPropertyString(), GetWMPropertyString(), TwmWindow::names, PlaceX, and TwmWindow::w.
Referenced by HandlePropertyNotify().
Definition at line 1876 of file ewmh.c.
References wt_Desktop, and wt_Dock.
Referenced by AddWindow().
Definition at line 1887 of file ewmh.c.
References wt_Desktop, and wt_Dock.
Referenced by AddWindow().
bool EwmhInitScreenEarly | ( | ScreenInfo * | scr | ) |
Definition at line 307 of file ewmh.c.
References dpy, EwmhReplaceWM(), PlaceX, and ScreenInfo::XineramaRoot.
Referenced by takeover_screen().
void EwmhInitScreenLate | ( | ScreenInfo * | scr | ) |
Definition at line 349 of file ewmh.c.
References WorkSpaceMgr::count, dpy, EwmhSet_NET_SHOWING_DESKTOP(), EwmhSet_NET_WORKAREA(), PlaceX, ScreenInfo::rooth, ScreenInfo::rootw, ScreenInfo::workSpaceManagerActive, ScreenInfo::workSpaceMgr, and ScreenInfo::XineramaRoot.
Referenced by ctwm_main().
Definition at line 1898 of file ewmh.c.
References wt_Desktop, and wt_Dock.
Referenced by AddWindow().
Definition at line 1915 of file ewmh.c.
References EwmhSet_NET_WORKAREA(), max(), PlaceX, RLayoutCopyCropped(), and Scr.
Referenced by EwmhGetStrut(), and EwmhRemoveStrut().
Definition at line 2069 of file ewmh.c.
References EwmhRecalculateStrut(), EwmhStrut::next, PlaceX, and Scr.
Referenced by EwmhDeleteClientWindow().
|
static |
Definition at line 194 of file ewmh.c.
References CatchError(), caughtError, CLarg, dpy, EventTime, GenerateTimestamp(), PlaceX, ScreenInfo::screen, SendPropertyMessage(), and ScreenInfo::XineramaRoot.
Referenced by EwmhInitScreenEarly().
void EwmhSelectionClear | ( | XSelectionClearEvent * | sev | ) |
Definition at line 546 of file ewmh.c.
References DoShutdown(), and PlaceX.
Definition at line 1782 of file ewmh.c.
References dpy, TwmWindow::iconmanagerlist, TwmWindow::isiconmgr, TwmWindow::iswspmgr, OtpBottomWin(), OtpNextWinUp(), PlaceX, Scr, and TwmWindow::w.
Referenced by HandleDestroyNotify(), HandleMapRequest(), OtpLower(), OtpRaise(), OtpRaiseLower(), OtpTinyLower(), and OtpTinyRaise().
Set _NET_FRAME_EXTENTS property.
This tells the client how much space is being taken up by the window decorations. Some clients may need this information to position other windows on top of themselves. e.g., Firefox's form autofill and context menu will be positioned a bit wrong (high, by the height of the titlebar) without this.
Definition at line 2099 of file ewmh.c.
References dpy, TwmWindow::frame_bw, TwmWindow::frame_bw3D, PlaceX, TwmWindow::title_height, and TwmWindow::w.
Referenced by AddWindow().
Definition at line 2116 of file ewmh.c.
References dpy, PlaceX, and Scr.
Referenced by EwmhInitScreenLate(), and ShowBackground().
Definition at line 1469 of file ewmh.c.
References WorkSpaceWindow::currentwspc, EwmhSet_NET_WM_DESKTOP_ws(), PlaceX, TwmWindow::vs, and VirtualScreen::wsw.
Referenced by ChangeOccupation(), and SetupOccupation().
Definition at line 1487 of file ewmh.c.
References ALL_WORKSPACES, dpy, fullOccupation, MAXWORKSPACE, TwmWindow::occupation, PlaceX, Scr, and TwmWindow::w.
Referenced by EwmhSet_NET_WM_DESKTOP(), and GotoWorkSpace().
Definition at line 2137 of file ewmh.c.
References dpy, EWMH_PRI_DESKTOP, EWMH_PRI_DOCK, EWMH_STATE_ABOVE, EWMH_STATE_BELOW, EWMH_STATE_FULLSCREEN, EWMH_STATE_MAXIMIZED_HORZ, EWMH_STATE_MAXIMIZED_VERT, EWMH_STATE_SHADED, OtpEffectiveDisplayPriority(), PlaceX, TwmWindow::squeezed, TwmWindow::w, wt_Desktop, wt_Dock, and TwmWindow::zoomed.
Referenced by EwmhClientMessage_NET_WM_STATEchange(), fullzoom(), HandleMapRequest(), otp_priority_handler(), RecomputeOwlPrefs(), and Squeeze().
|
static |
Definition at line 2260 of file ewmh.c.
References ScreenInfo::BorderBottom, ScreenInfo::BorderLeft, ScreenInfo::BorderRight, ScreenInfo::BorderTop, dpy, PlaceX, ScreenInfo::rooth, ScreenInfo::rootw, and Scr.
Referenced by EwmhInitScreenLate(), and EwmhRecalculateStrut().
Definition at line 528 of file ewmh.c.
References EwmhTerminateScreen(), NumScreens, PlaceX, and ScreenList.
Referenced by DoShutdown().
|
static |
Definition at line 512 of file ewmh.c.
References dpy, PlaceX, and ScreenInfo::XineramaRoot.
Referenced by EwmhTerminate().
Definition at line 1689 of file ewmh.c.
References dpy, PlaceX, and TwmWindow::w.
Referenced by HandleUnmapNotify().
XXX sort of duplicated from util.c:LoadJpegImage()
Definition at line 851 of file ewmh.c.
References AllocImage(), buffer_16bpp, buffer_32bpp, convert_for_16(), convert_for_32(), ScreenInfo::d_depth, dpy, Image::height, Image::mask, Image::pixmap, PlaceX, ScreenInfo::Root, ScreenInfo::screen, Image::width, x, and y.
Referenced by EwmhGetIcon().
|
static |
Definition at line 1343 of file ewmh.c.
References dpy, EventTime, TwmWindow::frame, TwmWindow::frame_x, TwmWindow::frame_y, TwmWindow::parent_vs, PlaceX, root, TwmWindow::w, VirtualScreen::window, and MenuRoot::x.
Referenced by EwmhClientMessage_NET_WM_MOVERESIZE().
|
static |
Definition at line 835 of file ewmh.c.
Referenced by convert_for_16(), and ExtractIcon().
|
static |
Definition at line 836 of file ewmh.c.
Referenced by convert_for_32(), and ExtractIcon().
|
static |
Definition at line 124 of file ewmh.c.
Referenced by CatchError(), and EwmhReplaceWM().
Atom XEWMHAtom[NUM_EWMH_XATOMS] |
Definition at line 61 of file ewmh.c.
Referenced by EwmhInitAtoms().