aboutsummaryrefslogtreecommitdiff
path: root/src/Window.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Window.cc')
-rw-r--r--src/Window.cc105
1 files changed, 43 insertions, 62 deletions
diff --git a/src/Window.cc b/src/Window.cc
index 1216d63..5c681ea 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -22,7 +22,7 @@
22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25// $Id: Window.cc,v 1.176 2003/05/15 11:17:27 fluxgen Exp $ 25// $Id: Window.cc,v 1.177 2003/05/15 12:00:46 fluxgen Exp $
26 26
27#include "Window.hh" 27#include "Window.hh"
28 28
@@ -236,16 +236,16 @@ FluxboxWindow::FluxboxWindow(WinClient &client, BScreen &scr, FbWinFrameTheme &t
236 m_screen(scr), 236 m_screen(scr),
237 m_timer(this), 237 m_timer(this),
238 display(0), 238 display(0),
239 m_windowmenu(menutheme, scr.getScreenNumber(), *scr.getImageControl()), 239 m_windowmenu(menutheme, scr.screenNumber(), *scr.getImageControl()),
240 m_layermenu(new LayerMenu<FluxboxWindow>(menutheme, 240 m_layermenu(new LayerMenu<FluxboxWindow>(menutheme,
241 scr.getScreenNumber(), 241 scr.screenNumber(),
242 *scr.getImageControl(), 242 *scr.getImageControl(),
243 *scr.layerManager().getLayer(Fluxbox::instance()->getMenuLayer()), 243 *scr.layerManager().getLayer(Fluxbox::instance()->getMenuLayer()),
244 this, 244 this,
245 false)), 245 false)),
246 m_old_decoration(DECOR_NORMAL), 246 m_old_decoration(DECOR_NORMAL),
247 m_client(&client), 247 m_client(&client),
248 m_frame(new FbWinFrame(tm, *scr.getImageControl(), scr.getScreenNumber(), 0, 0, 100, 100)), 248 m_frame(new FbWinFrame(tm, *scr.getImageControl(), scr.screenNumber(), 0, 0, 100, 100)),
249 m_layeritem(m_frame->window(), layer), 249 m_layeritem(m_frame->window(), layer),
250 m_layernum(layer.getLayerNum()), 250 m_layernum(layer.getLayerNum()),
251 m_parent(scr.rootWindow()) { 251 m_parent(scr.rootWindow()) {
@@ -269,16 +269,16 @@ FluxboxWindow::FluxboxWindow(Window w, BScreen &scr, FbWinFrameTheme &tm,
269 m_screen(scr), 269 m_screen(scr),
270 m_timer(this), 270 m_timer(this),
271 display(0), 271 display(0),
272 m_windowmenu(menutheme, scr.getScreenNumber(), *scr.getImageControl()), 272 m_windowmenu(menutheme, scr.screenNumber(), *scr.getImageControl()),
273 m_layermenu(new LayerMenu<FluxboxWindow>(menutheme, 273 m_layermenu(new LayerMenu<FluxboxWindow>(menutheme,
274 scr.getScreenNumber(), 274 scr.screenNumber(),
275 *scr.getImageControl(), 275 *scr.getImageControl(),
276 *scr.layerManager().getLayer(Fluxbox::instance()->getMenuLayer()), 276 *scr.layerManager().getLayer(Fluxbox::instance()->getMenuLayer()),
277 this, 277 this,
278 false)), 278 false)),
279 m_old_decoration(DECOR_NORMAL), 279 m_old_decoration(DECOR_NORMAL),
280 m_client(new WinClient(w, *this)), 280 m_client(new WinClient(w, *this)),
281 m_frame(new FbWinFrame(tm, *scr.getImageControl(), scr.getScreenNumber(), 0, 0, 100, 100)), 281 m_frame(new FbWinFrame(tm, *scr.getImageControl(), scr.screenNumber(), 0, 0, 100, 100)),
282 m_layeritem(m_frame->window(), layer), 282 m_layeritem(m_frame->window(), layer),
283 m_layernum(layer.getLayerNum()), 283 m_layernum(layer.getLayerNum()),
284 m_parent(scr.rootWindow()) { 284 m_parent(scr.rootWindow()) {
@@ -484,8 +484,8 @@ void FluxboxWindow::init() {
484 484
485 if (real_x >= 0 && 485 if (real_x >= 0 &&
486 real_y + frame().y() >= 0 && 486 real_y + frame().y() >= 0 &&
487 real_x <= (signed) screen().getWidth() && 487 real_x <= (signed) screen().width() &&
488 real_y <= (signed) screen().getHeight()) 488 real_y <= (signed) screen().height())
489 place_window = false; 489 place_window = false;
490 490
491 } else 491 } else
@@ -500,7 +500,7 @@ void FluxboxWindow::init() {
500 positionWindows(); 500 positionWindows();
501 501
502 if (m_workspace_number < 0 || m_workspace_number >= screen().getCount()) 502 if (m_workspace_number < 0 || m_workspace_number >= screen().getCount())
503 m_workspace_number = screen().getCurrentWorkspaceID(); 503 m_workspace_number = screen().currentWorkspaceID();
504 504
505 restoreAttributes(); 505 restoreAttributes();
506 506
@@ -1180,23 +1180,23 @@ bool FluxboxWindow::setInputFocus() {
1180 if (((signed) (frame().y() + frame().height())) < 0) { 1180 if (((signed) (frame().y() + frame().height())) < 0) {
1181 moveResize(screen().rootTheme().borderWidth(), screen().rootTheme().borderWidth(), 1181 moveResize(screen().rootTheme().borderWidth(), screen().rootTheme().borderWidth(),
1182 frame().width(), frame().height()); 1182 frame().width(), frame().height());
1183 } else if (frame().y() > (signed) screen().getHeight()) { 1183 } else if (frame().y() > (signed) screen().height()) {
1184 moveResize(screen().rootTheme().borderWidth(), screen().getHeight() - frame().height(), 1184 moveResize(screen().rootTheme().borderWidth(), screen().height() - frame().height(),
1185 frame().width(), frame().height()); 1185 frame().width(), frame().height());
1186 } else { 1186 } else {
1187 moveResize(screen().rootTheme().borderWidth(), frame().y() + screen().rootTheme().borderWidth(), 1187 moveResize(screen().rootTheme().borderWidth(), frame().y() + screen().rootTheme().borderWidth(),
1188 frame().width(), frame().height()); 1188 frame().width(), frame().height());
1189 } 1189 }
1190 } else if (frame().x() > (signed) screen().getWidth()) { 1190 } else if (frame().x() > (signed) screen().width()) {
1191 if (((signed) (frame().y() + frame().height())) < 0) { 1191 if (((signed) (frame().y() + frame().height())) < 0) {
1192 moveResize(screen().getWidth() - frame().width(), screen().rootTheme().borderWidth(), 1192 moveResize(screen().width() - frame().width(), screen().rootTheme().borderWidth(),
1193 frame().width(), frame().height()); 1193 frame().width(), frame().height());
1194 } else if (frame().y() > (signed) screen().getHeight()) { 1194 } else if (frame().y() > (signed) screen().height()) {
1195 moveResize(screen().getWidth() - frame().width(), 1195 moveResize(screen().width() - frame().width(),
1196 screen().getHeight() - frame().height(), 1196 screen().height() - frame().height(),
1197 frame().width(), frame().height()); 1197 frame().width(), frame().height());
1198 } else { 1198 } else {
1199 moveResize(screen().getWidth() - frame().width(), 1199 moveResize(screen().width() - frame().width(),
1200 frame().y() + screen().rootTheme().borderWidth(), 1200 frame().y() + screen().rootTheme().borderWidth(),
1201 frame().width(), frame().height()); 1201 frame().width(), frame().height());
1202 } 1202 }
@@ -1299,8 +1299,8 @@ void FluxboxWindow::deiconify(bool reassoc, bool do_raise) {
1299 oplock = true; 1299 oplock = true;
1300 1300
1301 if (iconic || reassoc) { 1301 if (iconic || reassoc) {
1302 screen().reassociateWindow(this, screen().getCurrentWorkspace()->workspaceID(), false); 1302 screen().reassociateWindow(this, screen().currentWorkspace()->workspaceID(), false);
1303 } else if (moving || m_workspace_number != screen().getCurrentWorkspace()->workspaceID()) { 1303 } else if (moving || m_workspace_number != screen().currentWorkspace()->workspaceID()) {
1304 oplock = false; 1304 oplock = false;
1305 return; 1305 return;
1306 } 1306 }
@@ -1384,12 +1384,12 @@ void FluxboxWindow::maximize() {
1384 m_old_height = frame().height(); 1384 m_old_height = frame().height();
1385 m_old_pos_x = frame().x(); 1385 m_old_pos_x = frame().x();
1386 m_old_pos_y = frame().y(); 1386 m_old_pos_y = frame().y();
1387 unsigned int left_x = screen().getMaxLeft(); 1387 unsigned int left_x = screen().maxLeft();
1388 unsigned int max_width = screen().getMaxRight(); 1388 unsigned int max_width = screen().maxRight();
1389 unsigned int max_top = screen().getMaxTop(); 1389 unsigned int max_top = screen().maxTop();
1390 moveResize(left_x, max_top, 1390 moveResize(left_x, max_top,
1391 max_width - left_x, 1391 max_width - left_x,
1392 screen().getMaxBottom() - max_top - frame().window().borderWidth()); 1392 screen().maxBottom() - max_top - frame().window().borderWidth());
1393 } else { // demaximize, restore to old values 1393 } else { // demaximize, restore to old values
1394 moveResize(m_old_pos_x, m_old_pos_y, 1394 moveResize(m_old_pos_x, m_old_pos_y,
1395 m_old_width, m_old_height); 1395 m_old_width, m_old_height);
@@ -1399,8 +1399,8 @@ void FluxboxWindow::maximize() {
1399} 1399}
1400 1400
1401void FluxboxWindow::maximizeHorizontal() { 1401void FluxboxWindow::maximizeHorizontal() {
1402 unsigned int left_x = screen().getMaxLeft(); 1402 unsigned int left_x = screen().maxLeft();
1403 unsigned int max_width = screen().getMaxRight(); 1403 unsigned int max_width = screen().maxRight();
1404 moveResize(left_x, frame().y(), 1404 moveResize(left_x, frame().y(),
1405 max_width - left_x, frame().height() - frame().window().borderWidth()); 1405 max_width - left_x, frame().height() - frame().window().borderWidth());
1406 1406
@@ -1410,10 +1410,10 @@ void FluxboxWindow::maximizeHorizontal() {
1410 Maximize window horizontal 1410 Maximize window horizontal
1411 */ 1411 */
1412void FluxboxWindow::maximizeVertical() { 1412void FluxboxWindow::maximizeVertical() {
1413 unsigned int max_top = screen().getMaxTop(); 1413 unsigned int max_top = screen().maxTop();
1414 moveResize(frame().x(), max_top, 1414 moveResize(frame().x(), max_top,
1415 frame().width() - frame().window().borderWidth(), 1415 frame().width() - frame().window().borderWidth(),
1416 screen().getMaxBottom() - max_top); 1416 screen().maxBottom() - max_top);
1417} 1417}
1418 1418
1419 1419
@@ -1862,7 +1862,7 @@ void FluxboxWindow::restoreAttributes() {
1862 m_current_state = save_state; 1862 m_current_state = save_state;
1863 } 1863 }
1864 1864
1865 if (( m_blackbox_attrib.workspace != screen().getCurrentWorkspaceID()) && 1865 if (( m_blackbox_attrib.workspace != screen().currentWorkspaceID()) &&
1866 ( m_blackbox_attrib.workspace < screen().getCount())) { 1866 ( m_blackbox_attrib.workspace < screen().getCount())) {
1867 m_workspace_number = m_blackbox_attrib.workspace; 1867 m_workspace_number = m_blackbox_attrib.workspace;
1868 1868
@@ -2434,12 +2434,12 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) {
2434 m_last_resize_y = me.y_root; 2434 m_last_resize_y = me.y_root;
2435 2435
2436 if (moved_x && screen().isWorkspaceWarping()) { 2436 if (moved_x && screen().isWorkspaceWarping()) {
2437 unsigned int cur_id = screen().getCurrentWorkspaceID(); 2437 unsigned int cur_id = screen().currentWorkspaceID();
2438 unsigned int new_id = cur_id; 2438 unsigned int new_id = cur_id;
2439 const int warpPad = screen().getEdgeSnapThreshold(); 2439 const int warpPad = screen().getEdgeSnapThreshold();
2440 // 1) if we're inside the border threshold 2440 // 1) if we're inside the border threshold
2441 // 2) if we moved in the right direction 2441 // 2) if we moved in the right direction
2442 if (me.x_root >= int(screen().getWidth()) - warpPad - 1 && 2442 if (me.x_root >= int(screen().width()) - warpPad - 1 &&
2443 moved_x > 0) { 2443 moved_x > 0) {
2444 //warp right 2444 //warp right
2445 new_id = (cur_id + 1) % screen().getCount(); 2445 new_id = (cur_id + 1) % screen().getCount();
@@ -2448,7 +2448,7 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) {
2448 moved_x < 0) { 2448 moved_x < 0) {
2449 //warp left 2449 //warp left
2450 new_id = (cur_id + screen().getCount() - 1) % screen().getCount(); 2450 new_id = (cur_id + screen().getCount() - 1) % screen().getCount();
2451 dx = screen().getWidth() - me.x_root-1; // move mouse to screen width - 1 2451 dx = screen().width() - me.x_root-1; // move mouse to screen width - 1
2452 } 2452 }
2453 if (new_id != cur_id) { 2453 if (new_id != cur_id) {
2454 XWarpPointer(display, None, None, 0, 0, 0, 0, dx, 0); 2454 XWarpPointer(display, None, None, 0, 0, 0, 0, dx, 0);
@@ -2559,12 +2559,12 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) {
2559 dy -= screen().rootTheme().borderWidth(); 2559 dy -= screen().rootTheme().borderWidth();
2560 2560
2561 if (screen().getEdgeSnapThreshold()) { 2561 if (screen().getEdgeSnapThreshold()) {
2562 int drx = screen().getWidth() - (dx + 1); 2562 int drx = screen().width() - (dx + 1);
2563 2563
2564 if (dx > 0 && dx < drx && dx < screen().getEdgeSnapThreshold()) 2564 if (dx > 0 && dx < drx && dx < screen().getEdgeSnapThreshold())
2565 dx = 0; 2565 dx = 0;
2566 else if (drx > 0 && drx < screen().getEdgeSnapThreshold()) 2566 else if (drx > 0 && drx < screen().getEdgeSnapThreshold())
2567 dx = screen().getWidth() - 1; 2567 dx = screen().width() - 1;
2568 2568
2569 int dty, dby; 2569 int dty, dby;
2570 2570
@@ -2821,8 +2821,8 @@ void FluxboxWindow::stopMoving() {
2821 frame().width() + 2*frame().window().borderWidth()-1, 2821 frame().width() + 2*frame().window().borderWidth()-1,
2822 frame().height() + 2*frame().window().borderWidth()-1); 2822 frame().height() + 2*frame().window().borderWidth()-1);
2823 moveResize(m_last_move_x, m_last_move_y, frame().width(), frame().height()); 2823 moveResize(m_last_move_x, m_last_move_y, frame().width(), frame().height());
2824 if (m_workspace_number != screen().getCurrentWorkspaceID()) { 2824 if (m_workspace_number != screen().currentWorkspaceID()) {
2825 screen().reassociateWindow(this, screen().getCurrentWorkspaceID(), true); 2825 screen().reassociateWindow(this, screen().currentWorkspaceID(), true);
2826 frame().show(); 2826 frame().show();
2827 } 2827 }
2828 fluxbox->ungrab(); 2828 fluxbox->ungrab();
@@ -2853,7 +2853,7 @@ void FluxboxWindow::resumeMoving() {
2853 return; 2853 return;
2854 } 2854 }
2855 2855
2856 if (m_workspace_number == screen().getCurrentWorkspaceID()) { 2856 if (m_workspace_number == screen().currentWorkspaceID()) {
2857 frame().show(); 2857 frame().show();
2858 } 2858 }
2859 XSync(display,false); 2859 XSync(display,false);
@@ -2930,13 +2930,13 @@ void FluxboxWindow::doSnapping(int &orig_left, int &orig_top) {
2930 ///////////////////////////////////// 2930 /////////////////////////////////////
2931 // begin by checking the screen edges 2931 // begin by checking the screen edges
2932 2932
2933 snapToWindow(dx, dy, left, right, top, bottom, 0, screen().getWidth(), 0, screen().getHeight()); 2933 snapToWindow(dx, dy, left, right, top, bottom, 0, screen().width(), 0, screen().height());
2934 2934
2935 ///////////////////////////////////// 2935 /////////////////////////////////////
2936 // now check window edges 2936 // now check window edges
2937 2937
2938 Workspace::Windows &wins = 2938 Workspace::Windows &wins =
2939 screen().getCurrentWorkspace()->windowList(); 2939 screen().currentWorkspace()->windowList();
2940 2940
2941 Workspace::Windows::iterator it = wins.begin(); 2941 Workspace::Windows::iterator it = wins.begin();
2942 Workspace::Windows::iterator it_end = wins.end(); 2942 Workspace::Windows::iterator it_end = wins.end();
@@ -2951,26 +2951,6 @@ void FluxboxWindow::doSnapping(int &orig_left, int &orig_top) {
2951 (*it)->y() + (*it)->height() + 2*borderW); 2951 (*it)->y() + (*it)->height() + 2*borderW);
2952 } 2952 }
2953 2953
2954 /////////////////////////////////////
2955 // now the toolbar
2956
2957 Toolbar *tbar = screen().getToolbar();
2958 if (tbar)
2959 snapToWindow(dx, dy, left, right, top, bottom,
2960 tbar->x(), tbar->x() + tbar->width() + 2*borderW,
2961 tbar->y(), tbar->y() + tbar->height() + 2*borderW);
2962
2963 /////////////////////////////////////
2964 // and the slit
2965
2966#ifdef SLIT
2967 Slit *slit = screen().getSlit();
2968 if (slit)
2969 snapToWindow(dx, dy, left, right, top, bottom,
2970 slit->x(), slit->x() + slit->width() + 2*borderW,
2971 slit->y(), slit->y() + slit->height() + 2*borderW);
2972#endif // SLIT
2973
2974 // commit 2954 // commit
2975 if (dx <= screen().getEdgeSnapThreshold()) 2955 if (dx <= screen().getEdgeSnapThreshold())
2976 orig_left += dx; 2956 orig_left += dx;
@@ -3066,10 +3046,11 @@ void FluxboxWindow::attachTo(int x, int y) {
3066 3046
3067//finds and redraw the icon label 3047//finds and redraw the icon label
3068void FluxboxWindow::updateIcon() { 3048void FluxboxWindow::updateIcon() {
3069 if (screen().getToolbar()) { 3049 //!! TODO we shouldn't know about the toolbar in fluxboxwindow!
3050 if (screen().toolbar()) {
3070 const IconBar *iconbar = 0; 3051 const IconBar *iconbar = 0;
3071 const IconBarObj *icon = 0; 3052 const IconBarObj *icon = 0;
3072 if ((iconbar = screen().getToolbar()->iconBar()) != 0) { 3053 if ((iconbar = screen().toolbar()->iconBar()) != 0) {
3073 if ((icon = iconbar->findIcon(this)) != 0) 3054 if ((icon = iconbar->findIcon(this)) != 0)
3074 iconbar->draw(icon, icon->width()); 3055 iconbar->draw(icon, icon->width());
3075 } 3056 }
@@ -3216,7 +3197,7 @@ void FluxboxWindow::changeBlackboxHints(const BlackboxHints &net) {
3216 3197
3217 screen().reassociateWindow(this, net.workspace, true); 3198 screen().reassociateWindow(this, net.workspace, true);
3218 3199
3219 if (screen().getCurrentWorkspaceID() != net.workspace) 3200 if (screen().currentWorkspaceID() != net.workspace)
3220 withdraw(); 3201 withdraw();
3221 else 3202 else
3222 deiconify(); 3203 deiconify();