- const char *snap;
- switch (resource.snap_to_windows) {
- case WindowNoSnap: snap = "NoSnap"; break;
- case WindowResistance: snap = "Resistance"; break;
- case WindowSnap: default: snap = "Snap"; break;
- }
- config->setValue(screenstr + "windowToWindowSnap", snap);
-}
-
-
-void BScreen::saveResizeZones(unsigned int z) {
- resource.resize_zones = z;
- config->setValue(screenstr + "resizeZones", resource.resize_zones);
-}
-
-
-void BScreen::saveWindowCornerSnap(bool s) {
- resource.window_corner_snap = s;
- config->setValue(screenstr + "windowCornerSnap",
- resource.window_corner_snap);
-}
-
-
-void BScreen::saveWorkspaces(unsigned int w) {
- resource.workspaces = w;
- config->setValue(screenstr + "workspaces", resource.workspaces);
-}
-
-
-void BScreen::savePlacementPolicy(int p) {
- resource.placement_policy = p;
- const char *placement;
- switch (resource.placement_policy) {
- case CascadePlacement: placement = "CascadePlacement"; break;
- case UnderMousePlacement: placement = "UnderMousePlacement"; break;
- case ClickMousePlacement: placement = "ClickMousePlacement"; break;
- case ColSmartPlacement: placement = "ColSmartPlacement"; break;
- case RowSmartPlacement: default: placement = "RowSmartPlacement"; break;
- }
- config->setValue(screenstr + "windowPlacement", placement);
-}
-
-
-void BScreen::saveResistanceSize(int s) {
- resource.resistance_size = s;
- config->setValue(screenstr + "resistanceSize",
- resource.resistance_size);
-}
-
-
-void BScreen::saveSnapThreshold(int t) {
- resource.snap_threshold = t;
- config->setValue(screenstr + "edgeSnapThreshold",
- resource.snap_threshold);
-}
-
-
-void BScreen::saveSnapOffset(int t) {
- resource.snap_offset = t;
- config->setValue(screenstr + "edgeSnapOffset",
- resource.snap_offset);
-}
-
-
-void BScreen::saveRowPlacementDirection(int d) {
- resource.row_direction = d;
- config->setValue(screenstr + "rowPlacementDirection",
- resource.row_direction == LeftRight ?
- "LeftToRight" : "RightToLeft");
-}
-
-
-void BScreen::saveColPlacementDirection(int d) {
- resource.col_direction = d;
- config->setValue(screenstr + "colPlacementDirection",
- resource.col_direction == TopBottom ?
- "TopToBottom" : "BottomToTop");
-}
-
-
-void BScreen::saveStrftimeFormat(const std::string& format) {
- resource.strftime_format = format;
- config->setValue(screenstr + "strftimeFormat", resource.strftime_format);
-}
-
-
-void BScreen::saveWorkspaceNames() {
- string names;
-
- for (unsigned int i = 0; i < workspacesList.size(); ++i) {
- names += workspacesList[i]->getName();
- if (i < workspacesList.size() - 1)
- names += ',';
- }
+ Atom supported[] = {
+ otk::Property::atoms.net_current_desktop,
+ otk::Property::atoms.net_number_of_desktops,
+ otk::Property::atoms.net_desktop_geometry,
+ otk::Property::atoms.net_desktop_viewport,
+ otk::Property::atoms.net_active_window,
+ otk::Property::atoms.net_workarea,
+ otk::Property::atoms.net_client_list,
+ otk::Property::atoms.net_client_list_stacking,
+ otk::Property::atoms.net_desktop_names,
+ otk::Property::atoms.net_close_window,
+ otk::Property::atoms.net_wm_name,
+ otk::Property::atoms.net_wm_visible_name,
+ otk::Property::atoms.net_wm_icon_name,
+ otk::Property::atoms.net_wm_visible_icon_name,
+/*
+ otk::Property::atoms.net_wm_desktop,
+*/
+ otk::Property::atoms.net_wm_strut,
+ otk::Property::atoms.net_wm_window_type,
+ otk::Property::atoms.net_wm_window_type_desktop,
+ otk::Property::atoms.net_wm_window_type_dock,
+ otk::Property::atoms.net_wm_window_type_toolbar,
+ otk::Property::atoms.net_wm_window_type_menu,
+ otk::Property::atoms.net_wm_window_type_utility,
+ otk::Property::atoms.net_wm_window_type_splash,
+ otk::Property::atoms.net_wm_window_type_dialog,
+ otk::Property::atoms.net_wm_window_type_normal,
+/*
+ otk::Property::atoms.net_wm_moveresize,
+ otk::Property::atoms.net_wm_moveresize_size_topleft,
+ otk::Property::atoms.net_wm_moveresize_size_topright,
+ otk::Property::atoms.net_wm_moveresize_size_bottomleft,
+ otk::Property::atoms.net_wm_moveresize_size_bottomright,
+ otk::Property::atoms.net_wm_moveresize_move,
+*/
+ otk::Property::atoms.net_wm_allowed_actions,
+ otk::Property::atoms.net_wm_action_move,
+ otk::Property::atoms.net_wm_action_resize,
+ otk::Property::atoms.net_wm_action_minimize,
+ otk::Property::atoms.net_wm_action_shade,
+/* otk::Property::atoms.net_wm_action_stick,*/
+ otk::Property::atoms.net_wm_action_maximize_horz,
+ otk::Property::atoms.net_wm_action_maximize_vert,
+ otk::Property::atoms.net_wm_action_fullscreen,
+ otk::Property::atoms.net_wm_action_change_desktop,
+ otk::Property::atoms.net_wm_action_close,
+
+ otk::Property::atoms.net_wm_state,
+ otk::Property::atoms.net_wm_state_modal,
+ otk::Property::atoms.net_wm_state_maximized_vert,
+ otk::Property::atoms.net_wm_state_maximized_horz,
+ otk::Property::atoms.net_wm_state_shaded,
+ otk::Property::atoms.net_wm_state_skip_taskbar,
+ otk::Property::atoms.net_wm_state_skip_pager,
+ otk::Property::atoms.net_wm_state_hidden,
+ otk::Property::atoms.net_wm_state_fullscreen,
+ otk::Property::atoms.net_wm_state_above,
+ otk::Property::atoms.net_wm_state_below,
+ };
+ const int num_supported = sizeof(supported)/sizeof(Atom);
+
+ otk::Property::set(_info->rootWindow(), otk::Property::atoms.net_supported,
+ otk::Property::atoms.atom, supported, num_supported);
+}
+
+
+void Screen::changeClientList()
+{
+ Window *windows;
+ unsigned int size = clients.size();
+
+ // create an array of the window ids
+ if (size > 0) {
+ Window *win_it;
+
+ windows = new Window[size];
+ win_it = windows;
+ ClientList::const_iterator it = clients.begin();
+ const ClientList::const_iterator end = clients.end();
+ for (; it != end; ++it, ++win_it)
+ *win_it = (*it)->window();
+ } else
+ windows = (Window*) 0;