Ticket #4721: app_server_flags_4721_nowindowmod.patch
File app_server_flags_4721_nowindowmod.patch, 3.5 KB (added by , 15 years ago) |
---|
-
src/servers/app/Window.cpp
781 781 int32 modifiers = _ExtractModifiers(message); 782 782 bool inBorderRegion = fBorderRegion.Contains(where); 783 783 bool windowModifier = (fFlags & B_NO_SERVER_SIDE_WINDOW_MODIFIERS) == 0 784 && (~modifiers & (B_COMMAND_KEY | B_CONTROL_KEY)) == 0; 784 && (modifiers & (B_COMMAND_KEY | B_CONTROL_KEY 785 | B_OPTION_KEY | B_SHIFT_KEY)) 786 == B_COMMAND_KEY | B_CONTROL_KEY; 785 787 786 // default action is to drag the Window787 if (windowModifier || inBorderRegion) {788 // clicking Window visible area789 790 click_type action = DEC_NONE;788 // get special action if any (drag, resize etc) 789 click_type action = DEC_NONE; 790 791 if (inBorderRegion || windowModifier) { 792 // clicking window title bar/borders, or windowModifier keys are down 791 793 int32 buttons = _ExtractButtons(message); 792 794 793 795 if (inBorderRegion && fDecorator != NULL) … … 803 805 // non-floating window doesn't have focus 804 806 if (!IsFocus() && !IsFloating() && action != DEC_MOVETOBACK 805 807 && action != DEC_RESIZE && action != DEC_SLIDETAB) 806 action = DEC_DRAG; 808 action = (fFlags & B_NOT_MOVABLE) ? DEC_NONE : DEC_DRAG; 809 } 810 811 // let clicks caught by windowModifier through to window if no special 812 // action would take place anyway, e.g. if window is not movable. 813 if (inBorderRegion || (windowModifier && action != DEC_NONE)) { 807 814 808 815 // set decorator internals 809 816 switch (action) { … … 1530 1537 } 1531 1538 1532 1539 1533 /*! Returns w ether or not a window is in the workspace list with the1540 /*! Returns whether or not a window is in the workspace list with the 1534 1541 specified \a index. 1535 1542 */ 1536 1543 bool … … 1847 1854 /*static*/ uint32 1848 1855 Window::ValidWindowFlags() 1849 1856 { 1850 return B_NOT_MOVABLE | B_NOT_CLOSABLE | B_NOT_ZOOMABLE 1851 | B_NOT_MINIMIZABLE | B_NOT_RESIZABLE 1852 | B_NOT_H_RESIZABLE | B_NOT_V_RESIZABLE 1853 | B_AVOID_FRONT | B_AVOID_FOCUS 1854 | B_WILL_ACCEPT_FIRST_CLICK | B_OUTLINE_RESIZE 1855 | B_NO_WORKSPACE_ACTIVATION 1856 | B_NOT_ANCHORED_ON_ACTIVATE 1857 | B_ASYNCHRONOUS_CONTROLS 1858 | B_QUIT_ON_WINDOW_CLOSE 1859 | B_SAME_POSITION_IN_ALL_WORKSPACES 1860 | kWindowScreenFlag; 1857 return B_NOT_MOVABLE 1858 | B_NOT_CLOSABLE 1859 | B_NOT_ZOOMABLE 1860 | B_NOT_MINIMIZABLE 1861 | B_NOT_RESIZABLE 1862 | B_NOT_H_RESIZABLE 1863 | B_NOT_V_RESIZABLE 1864 | B_AVOID_FRONT 1865 | B_AVOID_FOCUS 1866 | B_WILL_ACCEPT_FIRST_CLICK 1867 | B_OUTLINE_RESIZE 1868 | B_NO_WORKSPACE_ACTIVATION 1869 | B_NOT_ANCHORED_ON_ACTIVATE 1870 | B_ASYNCHRONOUS_CONTROLS 1871 | B_QUIT_ON_WINDOW_CLOSE 1872 | B_SAME_POSITION_IN_ALL_WORKSPACES 1873 | B_AUTO_UPDATE_SIZE_LIMITS 1874 | B_CLOSE_ON_ESCAPE 1875 | B_NO_SERVER_SIDE_WINDOW_MODIFIERS 1876 | kWindowScreenFlag; 1861 1877 } 1862 1878 1863 1879 -
headers/os/interface/Window.h
32 32 B_FLOATING_WINDOW = 21 33 33 }; 34 34 35 // must update app_server's IsValidLook() when changing 35 36 enum window_look { 36 37 B_BORDERED_WINDOW_LOOK = 20, 37 38 B_NO_BORDER_WINDOW_LOOK = 19, … … 41 42 B_FLOATING_WINDOW_LOOK = 7 42 43 }; 43 44 45 // must update app_server's IsValidFeel() when changing 44 46 enum window_feel { 45 47 B_NORMAL_WINDOW_FEEL = 0, 46 48 B_MODAL_SUBSET_WINDOW_FEEL = 2, … … 57 59 }; 58 60 59 61 // window flags 62 // WARNING: must update app_server's ValidWindowFlags() if adding/removing 60 63 enum { 61 64 B_NOT_MOVABLE = 0x00000001, 62 65 B_NOT_CLOSABLE = 0x00000020,