mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #1164 from kemenaran/qt-high-dpi-fixes
citra-qt: high-DPI fixes and Retina on OS X
This commit is contained in:
		
						commit
						87eca546b2
					
				@ -24,6 +24,7 @@ set(SRCS
 | 
				
			|||||||
            hotkeys.cpp
 | 
					            hotkeys.cpp
 | 
				
			||||||
            main.cpp
 | 
					            main.cpp
 | 
				
			||||||
            citra-qt.rc
 | 
					            citra-qt.rc
 | 
				
			||||||
 | 
					            Info.plist
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(HEADERS
 | 
					set(HEADERS
 | 
				
			||||||
@ -72,6 +73,7 @@ endif()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
if (APPLE)
 | 
					if (APPLE)
 | 
				
			||||||
    add_executable(citra-qt MACOSX_BUNDLE ${SRCS} ${HEADERS} ${UI_HDRS})
 | 
					    add_executable(citra-qt MACOSX_BUNDLE ${SRCS} ${HEADERS} ${UI_HDRS})
 | 
				
			||||||
 | 
					    set_target_properties(citra-qt PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
    add_executable(citra-qt ${SRCS} ${HEADERS} ${UI_HDRS})
 | 
					    add_executable(citra-qt ${SRCS} ${HEADERS} ${UI_HDRS})
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										40
									
								
								src/citra_qt/Info.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								src/citra_qt/Info.plist
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
				
			||||||
 | 
					<plist version="1.0">
 | 
				
			||||||
 | 
					<dict>
 | 
				
			||||||
 | 
						<key>CFBundleDevelopmentRegion</key>
 | 
				
			||||||
 | 
						<string>English</string>
 | 
				
			||||||
 | 
						<key>CFBundleExecutable</key>
 | 
				
			||||||
 | 
						<string>$(EXECUTABLE_NAME)</string>
 | 
				
			||||||
 | 
						<key>CFBundleGetInfoString</key>
 | 
				
			||||||
 | 
						<string></string>
 | 
				
			||||||
 | 
						<key>CFBundleIconFile</key>
 | 
				
			||||||
 | 
						<string>citra.icns</string>
 | 
				
			||||||
 | 
						<key>CFBundleIdentifier</key>
 | 
				
			||||||
 | 
						<string>com.citra-emu.citra</string>
 | 
				
			||||||
 | 
						<key>CFBundleInfoDictionaryVersion</key>
 | 
				
			||||||
 | 
						<string>6.0</string>
 | 
				
			||||||
 | 
						<key>CFBundleLongVersionString</key>
 | 
				
			||||||
 | 
						<string></string>
 | 
				
			||||||
 | 
						<key>CFBundleName</key>
 | 
				
			||||||
 | 
						<string>Citra</string>
 | 
				
			||||||
 | 
						<key>CFBundlePackageType</key>
 | 
				
			||||||
 | 
						<string>APPL</string>
 | 
				
			||||||
 | 
						<key>CFBundleShortVersionString</key>
 | 
				
			||||||
 | 
						<string></string>
 | 
				
			||||||
 | 
						<key>CFBundleSignature</key>
 | 
				
			||||||
 | 
						<string>????</string>
 | 
				
			||||||
 | 
						<key>CFBundleVersion</key>
 | 
				
			||||||
 | 
						<string></string>
 | 
				
			||||||
 | 
						<key>CSResourcesFileMapped</key>
 | 
				
			||||||
 | 
						<true/>
 | 
				
			||||||
 | 
						<key>LSRequiresCarbon</key>
 | 
				
			||||||
 | 
						<true/>
 | 
				
			||||||
 | 
						<key>NSHumanReadableCopyright</key>
 | 
				
			||||||
 | 
						<string></string>
 | 
				
			||||||
 | 
						<key>NSPrincipalClass</key>
 | 
				
			||||||
 | 
						<string>NSApplication</string>
 | 
				
			||||||
 | 
						<key>NSHighResolutionCapable</key>
 | 
				
			||||||
 | 
						<string>True</string>
 | 
				
			||||||
 | 
					</dict>
 | 
				
			||||||
 | 
					</plist>
 | 
				
			||||||
@ -181,16 +181,9 @@ void GRenderWindow::PollEvents() {
 | 
				
			|||||||
void GRenderWindow::OnFramebufferSizeChanged()
 | 
					void GRenderWindow::OnFramebufferSizeChanged()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // Screen changes potentially incur a change in screen DPI, hence we should update the framebuffer size
 | 
					    // Screen changes potentially incur a change in screen DPI, hence we should update the framebuffer size
 | 
				
			||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
 | 
					    qreal pixelRatio = windowPixelRatio();
 | 
				
			||||||
    // windowHandle() might not be accessible until the window is displayed to screen.
 | 
					    unsigned width = child->QPaintDevice::width() * pixelRatio;
 | 
				
			||||||
    auto pixel_ratio = windowHandle() ? (windowHandle()->screen()->devicePixelRatio()) : 1.0;
 | 
					    unsigned height = child->QPaintDevice::height() * pixelRatio;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    unsigned width = child->QPaintDevice::width() * pixel_ratio;
 | 
					 | 
				
			||||||
    unsigned height = child->QPaintDevice::height() * pixel_ratio;
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    unsigned width = child->QPaintDevice::width();
 | 
					 | 
				
			||||||
    unsigned height = child->QPaintDevice::height();
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NotifyFramebufferLayoutChanged(EmuWindow::FramebufferLayout::DefaultScreenLayout(width, height));
 | 
					    NotifyFramebufferLayoutChanged(EmuWindow::FramebufferLayout::DefaultScreenLayout(width, height));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -223,6 +216,16 @@ QByteArray GRenderWindow::saveGeometry()
 | 
				
			|||||||
        return geometry;
 | 
					        return geometry;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					qreal GRenderWindow::windowPixelRatio()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
 | 
				
			||||||
 | 
					    // windowHandle() might not be accessible until the window is displayed to screen.
 | 
				
			||||||
 | 
					    return windowHandle() ? windowHandle()->screen()->devicePixelRatio() : 1.0f;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    return 1.0f;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GRenderWindow::closeEvent(QCloseEvent* event) {
 | 
					void GRenderWindow::closeEvent(QCloseEvent* event) {
 | 
				
			||||||
    emit Closed();
 | 
					    emit Closed();
 | 
				
			||||||
    QWidget::closeEvent(event);
 | 
					    QWidget::closeEvent(event);
 | 
				
			||||||
@ -243,14 +246,18 @@ void GRenderWindow::mousePressEvent(QMouseEvent *event)
 | 
				
			|||||||
    if (event->button() == Qt::LeftButton)
 | 
					    if (event->button() == Qt::LeftButton)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        auto pos = event->pos();
 | 
					        auto pos = event->pos();
 | 
				
			||||||
        this->TouchPressed(static_cast<unsigned>(pos.x()), static_cast<unsigned>(pos.y()));
 | 
					        qreal pixelRatio = windowPixelRatio();
 | 
				
			||||||
 | 
					        this->TouchPressed(static_cast<unsigned>(pos.x() * pixelRatio),
 | 
				
			||||||
 | 
					                           static_cast<unsigned>(pos.y() * pixelRatio));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GRenderWindow::mouseMoveEvent(QMouseEvent *event)
 | 
					void GRenderWindow::mouseMoveEvent(QMouseEvent *event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    auto pos = event->pos();
 | 
					    auto pos = event->pos();
 | 
				
			||||||
    this->TouchMoved(static_cast<unsigned>(std::max(pos.x(), 0)), static_cast<unsigned>(std::max(pos.y(), 0)));
 | 
					    qreal pixelRatio = windowPixelRatio();
 | 
				
			||||||
 | 
					    this->TouchMoved(std::max(static_cast<unsigned>(pos.x() * pixelRatio), 0u),
 | 
				
			||||||
 | 
					                     std::max(static_cast<unsigned>(pos.y() * pixelRatio), 0u));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GRenderWindow::mouseReleaseEvent(QMouseEvent *event)
 | 
					void GRenderWindow::mouseReleaseEvent(QMouseEvent *event)
 | 
				
			||||||
 | 
				
			|||||||
@ -111,6 +111,8 @@ public:
 | 
				
			|||||||
    void restoreGeometry(const QByteArray& geometry); // overridden
 | 
					    void restoreGeometry(const QByteArray& geometry); // overridden
 | 
				
			||||||
    QByteArray saveGeometry();  // overridden
 | 
					    QByteArray saveGeometry();  // overridden
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    qreal windowPixelRatio();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void closeEvent(QCloseEvent* event) override;
 | 
					    void closeEvent(QCloseEvent* event) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void keyPressEvent(QKeyEvent* event) override;
 | 
					    void keyPressEvent(QKeyEvent* event) override;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user