Changeset 94013 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Mar 1, 2022 9:04:44 AM (3 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp
r93115 r94013 19 19 #include <QApplication> 20 20 #include <QDesktopWidget> 21 #include <QWidget> 21 22 #include <QScreen> 22 23 #ifdef VBOX_WS_WIN … … 25 26 #ifdef VBOX_WS_X11 26 27 # include <QTimer> 27 # include <QX11Info>28 28 #endif 29 29 … … 738 738 | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; 739 739 uint32_t values[] = { (uint32_t)(x * dDPR), (uint32_t)(y * dDPR), (uint32_t)(w * dDPR), (uint32_t)(h * dDPR) }; 740 xcb_configure_window( QX11Info::connection(), (xcb_window_t)pWidget->winId(),740 xcb_configure_window(NativeWindowSubsystem::X11GetConnection(), (xcb_window_t)pWidget->winId(), 741 741 fMask, values); 742 742 xcb_size_hints_t hints; … … 764 764 hints.flags |= 64 /* XCB_ICCCM_SIZE_HINT_P_MIN_SIZE */ 765 765 | 256 /* XCB_ICCCM_SIZE_HINT_BASE_SIZE */; 766 xcb_change_property( QX11Info::connection(), XCB_PROP_MODE_REPLACE,766 xcb_change_property(NativeWindowSubsystem::X11GetConnection(), XCB_PROP_MODE_REPLACE, 767 767 (xcb_window_t)pWidget->winId(), XCB_ATOM_WM_NORMAL_HINTS, 768 768 XCB_ATOM_WM_SIZE_HINTS, 32, sizeof(hints) >> 2, &hints); 769 xcb_flush( QX11Info::connection());769 xcb_flush(NativeWindowSubsystem::X11GetConnection()); 770 770 } 771 771 else -
trunk/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxUtils-x11.cpp
r93917 r94013 23 23 #include <QtXml/QDomDocument> 24 24 #include <QtXml/QDomElement> 25 #include <QX11Info>26 25 #include <QWidget> 26 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) 27 # include <QGuiApplication> 28 #else 29 # include <QX11Info> 30 #endif 27 31 28 32 /* GUI includes: */ … … 51 55 /* For each screen it manage, compositing manager MUST acquire ownership 52 56 * of a selection named _NET_WM_CM_Sn, where n is the screen number. */ 53 Display *pDisplay = QX11Info::display();57 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 54 58 Atom atom_property_name = XInternAtom(pDisplay, "_NET_WM_CM_S0", True); 55 59 return XGetSelectionOwner(pDisplay, atom_property_name); … … 59 63 { 60 64 /* Ask if root-window supports check for WM name: */ 61 Display *pDisplay = QX11Info::display();65 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 62 66 Atom atom_property_name; 63 67 Atom atom_returned_type; … … 68 72 X11WMType wmType = X11WMType_Unknown; 69 73 atom_property_name = XInternAtom(pDisplay, "_NET_SUPPORTING_WM_CHECK", True); 70 if (XGetWindowProperty(pDisplay, QX11Info::appRootWindow(), atom_property_name,74 if (XGetWindowProperty(pDisplay, NativeWindowSubsystem::X11GetAppRootWindow(), atom_property_name, 71 75 0, 512, False, XA_WINDOW, &atom_returned_type, 72 76 &iReturnedFormat, &ulReturnedItemCount, &ulDummy, &pcData) == Success) … … 86 90 &iReturnedFormat, &ulReturnedItemCount, &ulDummy, &pcData) == Success) 87 91 { 92 /** @todo r=bird: 6 QString conversions cannot be very efficient. */ 88 93 if (QString((const char*)pcData).contains("Compiz", Qt::CaseInsensitive)) 89 94 wmType = X11WMType_Compiz; … … 119 124 { 120 125 /* Init screen-save availability: */ 121 Display *pDisplay = QX11Info::display();126 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 122 127 int dummy; 123 128 gX11ScreenSaverDpmsAvailable = DPMSQueryExtension(pDisplay, &dummy, &dummy); … … 135 140 * save and restore the state prior and after each of these function calls. */ 136 141 137 Display *pDisplay = QX11Info::display();142 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 138 143 int dummy; 139 144 CARD16 dummy2; … … 146 151 { 147 152 /* Restore screen-saver settings: */ 148 Display *pDisplay = QX11Info::display();153 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 149 154 int iTimeout, iInterval, iPreferBlank, iAllowExp; 150 155 XGetScreenSaver(pDisplay, &iTimeout, &iInterval, &iPreferBlank, &iAllowExp); … … 159 164 { 160 165 /* Check extension: */ 161 Display *pDisplay = QX11Info::display();166 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 162 167 int major_opcode; 163 168 int first_event; … … 394 399 { 395 400 bool fResult = true; 396 Display *pDisplay = QX11Info::display();401 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 397 402 398 403 if (fSwitchDesktop) … … 442 447 443 448 /* Using a global to get at the display does not feel right, but that is how it is done elsewhere in the code. */ 444 Display *pDisplay = QX11Info::display();449 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 445 450 Atom atomSupported = XInternAtom(pDisplay, "_NET_SUPPORTED", 446 451 True /* only_if_exists */); … … 494 499 bool NativeWindowSubsystem::X11SetFullScreenMonitor(QWidget *pWidget, ulong uScreenId) 495 500 { 496 return XXSendClientMessage( QX11Info::display(),501 return XXSendClientMessage(NativeWindowSubsystem::X11GetDisplay(), 497 502 pWidget->window()->winId(), 498 503 "_NET_WM_FULLSCREEN_MONITORS", … … 504 509 { 505 510 /* Get display: */ 506 Display *pDisplay = QX11Info::display();511 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 507 512 508 513 /* Prepare atoms: */ … … 548 553 { 549 554 /* Get display: */ 550 Display *pDisplay = QX11Info::display();555 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 551 556 552 557 /* Prepare atoms: */ … … 560 565 { 561 566 /* Get display: */ 562 Display *pDisplay = QX11Info::display();567 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 563 568 564 569 /* Prepare atoms: */ … … 582 587 { 583 588 /* Get display: */ 584 Display *pDisplay = QX11Info::display();589 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 585 590 586 591 /* Prepare atoms: */ … … 603 608 { 604 609 /* Get display: */ 605 Display *pDisplay = QX11Info::display();610 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 606 611 607 612 /* Prepare atoms: */ … … 642 647 windowClass.res_class = classByteArray.data(); 643 648 /* Set WM_CLASS of the window to passed name and class strings: */ 644 XSetClassHint( QX11Info::display(), pWidget->window()->winId(), &windowClass);649 XSetClassHint(NativeWindowSubsystem::X11GetDisplay(), pWidget->window()->winId(), &windowClass); 645 650 } 646 651 647 652 void NativeWindowSubsystem::X11SetXwaylandMayGrabKeyboardFlag(QWidget *pWidget) 648 653 { 649 XXSendClientMessage( QX11Info::display(), pWidget->window()->winId(),654 XXSendClientMessage(NativeWindowSubsystem::X11GetDisplay(), pWidget->window()->winId(), 650 655 "_XWAYLAND_MAY_GRAB_KEYBOARD", 1); 651 656 } 657 658 Display *NativeWindowSubsystem::X11GetDisplay(void) 659 { 660 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) 661 Display *pDisplay = nullptr; 662 if (qApp) 663 { 664 QNativeInterface::QX11Application *pX11App = qApp->nativeInterface<QNativeInterface::QX11Application>(); 665 if (pX11App) 666 pDisplay = pX11App->display(); 667 } 668 #else 669 Display *pDisplay = QX11Info::display(); 670 #endif 671 Assert(pDisplay); 672 return pDisplay; 673 } 674 675 xcb_connection_t *NativeWindowSubsystem::X11GetConnection(void) 676 { 677 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) 678 if (qApp) 679 { 680 QNativeInterface::QX11Application *pX11App = qApp->nativeInterface<QNativeInterface::QX11Application>(); 681 if (pX11App) 682 return pX11App->connection(); 683 } 684 return NULL; 685 #else 686 return QX11Info::connection(); 687 #endif 688 } 689 690 uint32_t NativeWindowSubsystem::X11GetAppRootWindow(void) 691 { 692 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) 693 Window idWindow = 0; 694 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 695 if (pDisplay) 696 idWindow = DefaultRootWindow(pDisplay); /** @todo qt6: ?? */ 697 return idWindow; 698 #else 699 return QX11Info::appRootWindow(); 700 #endif 701 } 702 -
trunk/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxUtils-x11.h
r93890 r94013 76 76 } xcb_size_hints_t; 77 77 78 /* X11 structs to avoid dragging in unnecessary X headers: */ 79 struct xcb_connection_t; 80 struct _XDisplay; 81 78 82 /* Namespace for native window sub-system functions: */ 79 83 namespace NativeWindowSubsystem … … 124 128 * focus away from the VM. */ 125 129 SHARED_LIBRARY_STUFF void X11SetXwaylandMayGrabKeyboardFlag(QWidget *pWidget); 130 131 /** X11: Get the X11 display pointer. */ 132 SHARED_LIBRARY_STUFF struct _XDisplay *X11GetDisplay(void); 133 134 /** X11: Get the X11 connection. */ 135 SHARED_LIBRARY_STUFF struct xcb_connection_t *X11GetConnection(void); 136 137 /** X11: Get the X11 root (desktop) window. */ 138 SHARED_LIBRARY_STUFF uint32_t X11GetAppRootWindow(void); 126 139 } 127 140 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp
r93990 r94013 36 36 # include "UIMachineWindow.h" 37 37 #endif /* VBOX_WITH_MASKED_SEAMLESS */ 38 #ifdef VBOX_WS_X11 39 # include "VBoxUtils-x11.h" 40 #endif 38 41 39 42 /* COM includes: */ … … 55 58 #ifdef VBOX_WS_X11 56 59 /* X11 includes: */ 57 # include <QX11Info>58 60 # include <X11/Xlib.h> 59 61 # undef Bool // Qt5 vs Xlib gift.. … … 1121 1123 #ifdef VBOX_WS_X11 1122 1124 /* Sync Qt and X11 Server (see xTracker #7547). */ 1123 XSync( QX11Info::display(), false);1125 XSync(NativeWindowSubsystem::X11GetDisplay(), false); 1124 1126 #endif 1125 1127 … … 1176 1178 #ifdef VBOX_WS_X11 1177 1179 /* Sync Qt and X11 Server (see xTracker #7547). */ 1178 XSync( QX11Info::display(), false);1180 XSync(NativeWindowSubsystem::X11GetDisplay(), false); 1179 1181 #endif 1180 1182 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
r93115 r94013 34 34 #include <QKeyEvent> 35 35 #include <QTimer> 36 #ifdef VBOX_WS_X1137 # include <QX11Info>38 #endif39 36 40 37 /* GUI includes: */ … … 64 61 #ifdef VBOX_WS_X11 65 62 # include "XKeyboard.h" 63 # include "VBoxUtils-x11.h" 66 64 #endif 67 65 … … 275 273 * version check some time in the future. If we do, remove the comment above 276 274 * about the focus notification dance, as it will no longer be relevant. */ 277 xcb_get_input_focus_cookie_t xcbFocusCookie = xcb_get_input_focus(QX11Info::connection()); 278 xcb_get_input_focus_reply_t *pFocusReply = xcb_get_input_focus_reply(QX11Info::connection(), xcbFocusCookie, 0); 275 xcb_get_input_focus_cookie_t xcbFocusCookie = xcb_get_input_focus(NativeWindowSubsystem::X11GetConnection()); 276 xcb_get_input_focus_reply_t *pFocusReply = xcb_get_input_focus_reply(NativeWindowSubsystem::X11GetConnection(), 277 xcbFocusCookie, 0); 279 278 xcb_window_t xcbFocusWindow = pFocusReply->focus; 280 279 free(pFocusReply); … … 287 286 /* If any previous grab is still in process, release it. */ 288 287 if (m_hButtonGrabWindow != 0) 289 xcb_ungrab_button_checked( QX11Info::connection(), XCB_BUTTON_INDEX_ANY,288 xcb_ungrab_button_checked(NativeWindowSubsystem::X11GetConnection(), XCB_BUTTON_INDEX_ANY, 290 289 m_hButtonGrabWindow, XCB_MOD_MASK_ANY); 291 m_hButtonGrabWindow = QX11Info::appRootWindow();292 xcb_grab_button_checked( QX11Info::connection(), 0, m_hButtonGrabWindow,290 m_hButtonGrabWindow = NativeWindowSubsystem::X11GetAppRootWindow(); 291 xcb_grab_button_checked(NativeWindowSubsystem::X11GetConnection(), 0, m_hButtonGrabWindow, 293 292 XCB_EVENT_MASK_BUTTON_PRESS, XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC, 294 293 XCB_NONE, XCB_NONE, XCB_BUTTON_INDEX_ANY, XCB_MOD_MASK_ANY); 295 294 /* And grab the keyboard, using XCB directly, as Qt does not report failure. */ 296 xcb_grab_keyboard_cookie_t xcbGrabCookie = xcb_grab_keyboard(QX11Info::connection(), false, m_views[m_iKeyboardCaptureViewIndex]->winId(), 295 xcb_grab_keyboard_cookie_t xcbGrabCookie = xcb_grab_keyboard(NativeWindowSubsystem::X11GetConnection(), false, 296 m_views[m_iKeyboardCaptureViewIndex]->winId(), 297 297 XCB_TIME_CURRENT_TIME, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC); 298 xcb_grab_keyboard_reply_t *pGrabReply = xcb_grab_keyboard_reply(QX11Info::connection(), xcbGrabCookie, NULL); 298 xcb_grab_keyboard_reply_t *pGrabReply = xcb_grab_keyboard_reply(NativeWindowSubsystem::X11GetConnection(), 299 xcbGrabCookie, NULL); 299 300 if (pGrabReply == NULL || pGrabReply->status != XCB_GRAB_STATUS_SUCCESS) 300 301 { 301 302 /* Release the mouse button grab. 302 303 * We do not check for failure as we do not currently implement a back-up plan. */ 303 xcb_ungrab_button_checked( QX11Info::connection(), XCB_BUTTON_INDEX_ANY,304 xcb_ungrab_button_checked(NativeWindowSubsystem::X11GetConnection(), XCB_BUTTON_INDEX_ANY, 304 305 m_hButtonGrabWindow, XCB_MOD_MASK_ANY); 305 306 m_hButtonGrabWindow = 0; … … 370 371 371 372 /* Ungrab using XCB: */ 372 xcb_ungrab_keyboard( QX11Info::connection(), XCB_TIME_CURRENT_TIME);373 xcb_ungrab_keyboard(NativeWindowSubsystem::X11GetConnection(), XCB_TIME_CURRENT_TIME); 373 374 /* Release the mouse button grab. 374 375 * We do not check for failure as we do not currently implement a back-up plan. */ 375 xcb_ungrab_button_checked( QX11Info::connection(), XCB_BUTTON_INDEX_ANY,376 xcb_ungrab_button_checked(NativeWindowSubsystem::X11GetConnection(), XCB_BUTTON_INDEX_ANY, 376 377 m_hButtonGrabWindow, XCB_MOD_MASK_ANY); 377 378 m_hButtonGrabWindow = 0; … … 823 824 824 825 /* Translate the keycode to a PC scan code: */ 825 unsigned uScan = handleXKeyEvent( QX11Info::display(), pKeyEvent->detail);826 unsigned uScan = handleXKeyEvent(NativeWindowSubsystem::X11GetDisplay(), pKeyEvent->detail); 826 827 827 828 /* Scan codes 0x00 (no valid translation) and 0x80 (extended flag) are ignored: */ … … 856 857 857 858 /* Translate the keycode to a keysym: */ 858 KeySym ks = ::wrapXkbKeycodeToKeysym( QX11Info::display(), pKeyEvent->detail, 0, 0);859 KeySym ks = ::wrapXkbKeycodeToKeysym(NativeWindowSubsystem::X11GetDisplay(), pKeyEvent->detail, 0, 0); 859 860 860 861 /* Update special flags: */ … … 1020 1021 #ifdef VBOX_WS_X11 1021 1022 /* Initialize the X keyboard subsystem: */ 1022 initMappedX11Keyboard( QX11Info::display(), gEDataManager->remappedScanCodes());1023 initMappedX11Keyboard(NativeWindowSubsystem::X11GetDisplay(), gEDataManager->remappedScanCodes()); 1023 1024 /* Fix for http://www.virtualbox.org/ticket/1296: 1024 1025 * when X11 sends events for repeated keys, it always inserts an XKeyRelease 1025 1026 * before the XKeyPress. */ 1026 1027 /* Disable key release events during key auto-repeat: */ 1027 XkbSetDetectableAutoRepeat( QX11Info::display(), True, NULL);1028 XkbSetDetectableAutoRepeat(NativeWindowSubsystem::X11GetDisplay(), True, NULL); 1028 1029 #endif /* VBOX_WS_X11 */ 1029 1030 … … 1774 1775 1775 1776 Q_UNUSED(pHotKey); 1776 Display *pDisplay = QX11Info::display();1777 Display *pDisplay = NativeWindowSubsystem::X11GetDisplay(); 1777 1778 KeyCode keyCode = XKeysymToKeycode(pDisplay, iHotKey); 1778 1779 for (int i = 0; i < 4 && !fWasProcessed; ++i) /* Up to four groups. */ … … 1852 1853 unsigned uMask; 1853 1854 unsigned uKeyMaskNum = 0, uKeyMaskCaps = 0; 1855 Display * const pDisplay = NativeWindowSubsystem::X11GetDisplay(); 1854 1856 1855 1857 uKeyMaskCaps = LockMask; 1856 XModifierKeymap* map = XGetModifierMapping( QX11Info::display());1857 KeyCode keyCodeNum = XKeysymToKeycode( QX11Info::display(), XK_Num_Lock);1858 XModifierKeymap* map = XGetModifierMapping(pDisplay); 1859 KeyCode keyCodeNum = XKeysymToKeycode(pDisplay, XK_Num_Lock); 1858 1860 1859 1861 for (int i = 0; i < 8; ++ i) 1860 1862 if (keyCodeNum != NoSymbol && map->modifiermap[map->max_keypermod * i] == keyCodeNum) 1861 1863 uKeyMaskNum = 1 << i; 1862 XQueryPointer( QX11Info::display(), DefaultRootWindow(QX11Info::display()), &wDummy1, &wDummy2,1864 XQueryPointer(pDisplay, DefaultRootWindow(pDisplay), &wDummy1, &wDummy2, 1863 1865 &iDummy3, &iDummy4, &iDummy5, &iDummy6, &uMask); 1864 1866 XFreeModifiermap(map); -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
r93997 r94013 28 28 # include <QMenuBar> 29 29 #endif /* VBOX_WS_MAC */ 30 #ifdef VBOX_WS_X1131 # include <QX11Info>32 #endif /* VBOX_WS_X11 */33 30 34 31 /* GUI includes: */ … … 72 69 # include "UINetworkRequestManager.h" 73 70 #endif 71 #ifdef VBOX_WS_X11 72 # include "VBoxUtils-x11.h" 73 #endif 74 74 75 75 /* COM includes: */ … … 565 565 /* The keyboard handler may wish to do some release logging on startup. 566 566 * Tell it that the logger is now active. */ 567 doXKeyboardLogging( QX11Info::display());567 doXKeyboardLogging(NativeWindowSubsystem::X11GetDisplay()); 568 568 break; 569 569 } -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp
r94008 r94013 20 20 #include <QTimer> 21 21 #include <QTouchEvent> 22 #ifdef VBOX_WS_X1123 # include <QX11Info>24 #endif25 22 26 23 /* GUI includes: */ … … 44 41 # include "VBoxUtils-win.h" 45 42 #endif 43 #ifdef VBOX_WS_X11 44 # include "VBoxUtils-x11.h" 45 #endif 46 46 47 47 /* COM includes: */ … … 51 51 /* Other VBox includes: */ 52 52 #include <iprt/time.h> 53 54 /* External includes: */55 #ifdef VBOX_WS_X1156 #include "VBoxUtils-x11.h"57 #endif58 53 59 54 … … 341 336 machineLogic()->keyboardHandler()->captureKeyboard(uScreenId); 342 337 /* Re-send the event so that the window which it was meant for gets it: */ 343 xcb_allow_events_checked( QX11Info::connection(), XCB_ALLOW_REPLAY_POINTER, pButtonEvent->time);338 xcb_allow_events_checked(NativeWindowSubsystem::X11GetConnection(), XCB_ALLOW_REPLAY_POINTER, pButtonEvent->time); 344 339 /* Do not let Qt see the event: */ 345 340 return true; -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
r93901 r94013 27 27 # include <iprt/win/windows.h> /* Workaround for compile errors if included directly by QtWin. */ 28 28 # include <QtWin> 29 #endif30 #ifdef VBOX_WS_X1131 # include <QX11Info>32 29 #endif 33 30 -
trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIHostComboEditor.cpp
r93990 r94013 23 23 #include <QStylePainter> 24 24 #include <QTimer> 25 #ifdef VBOX_WS_X1126 # include <QX11Info>27 #endif28 25 #if defined(VBOX_WS_MAC) || defined(VBOX_WS_WIN) 29 26 # include <QAbstractNativeEventFilter> … … 44 41 #elif defined(VBOX_WS_X11) 45 42 # include "XKeyboard.h" 43 # include "VBoxUtils-x11.h" 46 44 #endif 47 45 … … 561 559 #elif defined(VBOX_WS_X11) 562 560 /* Initialize the X keyboard subsystem: */ 563 initMappedX11Keyboard( QX11Info::display(), gEDataManager->remappedScanCodes());561 initMappedX11Keyboard(NativeWindowSubsystem::X11GetDisplay(), gEDataManager->remappedScanCodes()); 564 562 #endif /* VBOX_WS_X11 */ 565 563 } … … 748 746 xcb_key_press_event_t *pKeyEvent = static_cast<xcb_key_press_event_t*>(pMessage); 749 747 RT_GCC_NO_WARN_DEPRECATED_BEGIN 750 const KeySym ks = ::XKeycodeToKeysym( QX11Info::display(), pKeyEvent->detail, 0);748 const KeySym ks = ::XKeycodeToKeysym(NativeWindowSubsystem::X11GetDisplay(), pKeyEvent->detail, 0); 751 749 RT_GCC_NO_WARN_DEPRECATED_END 752 750 const int iKeySym = static_cast<int>(ks);
Note:
See TracChangeset
for help on using the changeset viewer.