From 481d0fd18c406fc24aa83deade226580148e2971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Fri, 19 Dec 2025 11:38:21 +0100 Subject: [PATCH] Switch TouchInputFlags to enum class, fix some minor UI issues Scroll views now only wheel-scroll if the mouse is hovering over them. --- Common/Input/GestureDetector.cpp | 8 +++--- Common/Input/InputState.h | 44 ++++++++++++++++------------- Common/UI/PopupScreens.cpp | 2 +- Common/UI/Root.cpp | 2 +- Common/UI/Screen.cpp | 8 +++--- Common/UI/ScrollView.cpp | 35 +++++++++++++---------- Common/UI/ScrollView.h | 2 ++ Common/UI/UIScreen.cpp | 4 +-- Common/UI/View.cpp | 30 ++++++++++---------- Common/UI/ViewGroup.cpp | 2 +- Common/VR/PPSSPPVR.cpp | 4 +-- Qt/QtMain.cpp | 8 +++--- SDL/SDLMain.cpp | 16 +++++------ Tools/langtool/Cargo.lock | 20 ++++++------- Tools/langtool/src/main.rs | 16 +++++------ UI/DevScreens.cpp | 6 ++-- UI/DisplayLayoutScreen.cpp | 6 ++-- UI/EmuScreen.cpp | 6 ++-- UI/GamepadEmu.cpp | 42 +++++++++++++-------------- UI/MainScreen.cpp | 4 +-- UI/MiscScreens.cpp | 8 +++--- UI/MiscViews.cpp | 2 +- UI/OnScreenDisplay.cpp | 2 +- UI/SimpleDialogScreen.cpp | 26 +++++++++++++---- UI/SimpleDialogScreen.h | 2 ++ UI/SystemInfoScreen.cpp | 21 ++++++++------ UI/TabbedDialogScreen.cpp | 4 +-- UI/TouchControlLayoutScreen.cpp | 6 ++-- UI/TouchControlVisibilityScreen.cpp | 4 +-- UI/TouchControlVisibilityScreen.h | 8 +++--- UI/UIAtlas.cpp | 1 + UWP/App.cpp | 6 ++-- UWP/PPSSPP_UWPMain.cpp | 4 +-- Windows/MainWindow.cpp | 10 +++---- Windows/RawInput.cpp | 2 +- Windows/TouchInputHandler.cpp | 6 ++-- android/jni/app-android.cpp | 6 ++-- assets/lang/ar_AE.ini | 1 + assets/lang/az_AZ.ini | 1 + assets/lang/be_BY.ini | 1 + assets/lang/bg_BG.ini | 1 + assets/lang/ca_ES.ini | 1 + assets/lang/cz_CZ.ini | 1 + assets/lang/da_DK.ini | 1 + assets/lang/de_DE.ini | 1 + assets/lang/dr_ID.ini | 1 + assets/lang/en_US.ini | 1 + assets/lang/es_ES.ini | 1 + assets/lang/es_LA.ini | 1 + assets/lang/fa_IR.ini | 1 + assets/lang/fi_FI.ini | 1 + assets/lang/fr_FR.ini | 1 + assets/lang/gl_ES.ini | 1 + assets/lang/gr_EL.ini | 1 + assets/lang/he_IL.ini | 1 + assets/lang/he_IL_invert.ini | 1 + assets/lang/hr_HR.ini | 1 + assets/lang/hu_HU.ini | 1 + assets/lang/id_ID.ini | 1 + assets/lang/it_IT.ini | 1 + assets/lang/ja_JP.ini | 1 + assets/lang/jv_ID.ini | 1 + assets/lang/ko_KR.ini | 1 + assets/lang/ku_SO.ini | 1 + assets/lang/lo_LA.ini | 1 + assets/lang/lt-LT.ini | 1 + assets/lang/ms_MY.ini | 1 + assets/lang/nl_NL.ini | 1 + assets/lang/no_NO.ini | 1 + assets/lang/pl_PL.ini | 1 + assets/lang/pt_BR.ini | 1 + assets/lang/pt_PT.ini | 1 + assets/lang/ro_RO.ini | 1 + assets/lang/ru_RU.ini | 1 + assets/lang/sv_SE.ini | 1 + assets/lang/tg_PH.ini | 1 + assets/lang/th_TH.ini | 1 + assets/lang/tr_TR.ini | 1 + assets/lang/uk_UA.ini | 1 + assets/lang/vi_VN.ini | 1 + assets/lang/zh_CN.ini | 1 + assets/lang/zh_TW.ini | 1 + assets/ui_images/images.svg | 13 +++++---- ext/imgui/imgui_impl_platform.cpp | 10 +++---- 84 files changed, 265 insertions(+), 186 deletions(-) diff --git a/Common/Input/GestureDetector.cpp b/Common/Input/GestureDetector.cpp index 5b99a79993..08f4f8edcb 100644 --- a/Common/Input/GestureDetector.cpp +++ b/Common/Input/GestureDetector.cpp @@ -19,7 +19,7 @@ TouchInput GestureDetector::Update(const TouchInput &touch, const Bounds &bounds } // Mouse / 1-finger-touch control. Pointer &p = pointers[touch.id]; - if ((touch.flags & TOUCH_DOWN) && bounds.Contains(touch.x, touch.y)) { + if ((touch.flags & TouchInputFlags::DOWN) && bounds.Contains(touch.x, touch.y)) { p.down = true; p.downTime = time_now_d(); p.downX = touch.x; @@ -30,7 +30,7 @@ TouchInput GestureDetector::Update(const TouchInput &touch, const Bounds &bounds p.distanceY = 0.0f; p.estimatedInertiaX = 0.0f; p.estimatedInertiaY = 0.0f; - } else if (touch.flags & TOUCH_UP) { + } else if (touch.flags & TouchInputFlags::UP) { p.down = false; } else { p.distanceX += fabsf(touch.x - p.lastX); @@ -52,7 +52,7 @@ TouchInput GestureDetector::Update(const TouchInput &touch, const Bounds &bounds p.active |= GESTURE_DRAG_VERTICAL; // Kill the drag. TODO: Only cancel the drag in one direction. TouchInput inp2 = touch; - inp2.flags = TOUCH_UP | TOUCH_CANCEL; + inp2.flags = TouchInputFlags::UP | TouchInputFlags::CANCEL; return inp2; } } else { @@ -67,7 +67,7 @@ TouchInput GestureDetector::Update(const TouchInput &touch, const Bounds &bounds p.active |= GESTURE_DRAG_HORIZONTAL; // Kill the drag. TODO: Only cancel the drag in one direction. TouchInput inp2 = touch; - inp2.flags = TOUCH_UP | TOUCH_CANCEL; + inp2.flags = TouchInputFlags::UP | TouchInputFlags::CANCEL; return inp2; } } else { diff --git a/Common/Input/InputState.h b/Common/Input/InputState.h index 4d4dfe7e35..dc9a03a5f8 100644 --- a/Common/Input/InputState.h +++ b/Common/Input/InputState.h @@ -7,6 +7,7 @@ #include #include +#include "Common/Common.h" #include "Common/Input/KeyCodes.h" #include "Common/Log.h" @@ -128,43 +129,45 @@ public: void FormatDebug(char *buffer, size_t bufSize) const; }; -enum { - TOUCH_MOVE = 1 << 0, - TOUCH_DOWN = 1 << 1, - TOUCH_UP = 1 << 2, - TOUCH_CANCEL = 1 << 3, // Sent by scrollviews to their children when they detect a scroll - TOUCH_WHEEL = 1 << 4, // Scrollwheel event. Usually only affects Y but can potentially affect X. - TOUCH_MOUSE = 1 << 5, // Identifies that this touch event came from a mouse. Id is now set to the mouse button for DOWN/UP commands. - TOUCH_RELEASE_ALL = 1 << 6, // Useful for app focus switches when events may be lost. - TOUCH_HOVER = 1 << 7, +enum class TouchInputFlags { + MOVE = 1 << 0, + DOWN = 1 << 1, + UP = 1 << 2, + CANCEL = 1 << 3, // Sent by scrollviews to their children when they detect a scroll + WHEEL = 1 << 4, // Scrollwheel event. Usually only affects Y but can potentially affect X. + MOUSE = 1 << 5, // Identifies that this touch event came from a mouse. Id is now set to the mouse button for DOWN/UP commands. + RELEASE_ALL = 1 << 6, // Useful for app focus switches when events may be lost. + HOVER = 1 << 7, // These are the Android getToolType() codes, shifted by 10. Unused currently. - TOUCH_TOOL_MASK = 7 << 10, - TOUCH_TOOL_UNKNOWN = 0 << 10, - TOUCH_TOOL_FINGER = 1 << 10, - TOUCH_TOOL_STYLUS = 2 << 10, - TOUCH_TOOL_MOUSE = 3 << 10, - TOUCH_TOOL_ERASER = 4 << 10, - - TOUCH_MAX_POINTERS = 10, + // TOOL_MASK = 7 << 10, + // TOOL_UNKNOWN = 0 << 10, + // TOOL_FINGER = 1 << 10, + // TOOL_STYLUS = 2 << 10, + // TOOL_MOUSE = 3 << 10, + // TOOL_ERASER = 4 << 10, }; +ENUM_CLASS_BITOPS(TouchInputFlags); + +constexpr int TOUCH_MAX_POINTERS = 10; // Used for asynchronous touch input. // DOWN is always on its own. // MOVE and UP can be combined. +// TODO: As this handles both mouse and touch, should probably rename to PointerInput or something. struct TouchInput { float x; float y; int id; // Needs to be <= GestureDetector::MAX_PTRS (10.) int buttons; // bit mask - int flags; + TouchInputFlags flags; double timestamp; }; #undef KEY_DOWN #undef KEY_UP -enum { +enum KeyInputFlags { KEY_DOWN = 1 << 0, KEY_UP = 1 << 1, KEY_HASWHEELDELTA = 1 << 2, @@ -184,8 +187,9 @@ struct KeyInput { int flags; // Used by mousewheel events. The delta is packed in the upper 16 bits of flags. + // TODO: Move mousewheel events to TouchInput? int Delta() const { - return flags >> 16; + return (s32)flags >> 16; } }; diff --git a/Common/UI/PopupScreens.cpp b/Common/UI/PopupScreens.cpp index 7212f4b899..0af8e186ed 100644 --- a/Common/UI/PopupScreens.cpp +++ b/Common/UI/PopupScreens.cpp @@ -29,7 +29,7 @@ PopupScreen::PopupScreen(std::string_view title, std::string_view button1, std:: } void PopupScreen::touch(const TouchInput &touch) { - if (!box_ || (touch.flags & TOUCH_DOWN) == 0) { + if (!box_ || (touch.flags & TouchInputFlags::DOWN) == 0) { // Handle down-presses here. UIDialogScreen::touch(touch); return; diff --git a/Common/UI/Root.cpp b/Common/UI/Root.cpp index ec699e28e5..a067a7a750 100644 --- a/Common/UI/Root.cpp +++ b/Common/UI/Root.cpp @@ -249,7 +249,7 @@ bool KeyEvent(const KeyInput &key, ViewGroup *root) { void TouchEvent(const TouchInput &touch, ViewGroup *root) { focusForced = false; root->Touch(touch); - if ((touch.flags & TOUCH_DOWN) && !focusForced) { + if ((touch.flags & TouchInputFlags::DOWN) && !focusForced) { EnableFocusMovement(false); } } diff --git a/Common/UI/Screen.cpp b/Common/UI/Screen.cpp index c06332a5db..f865821224 100644 --- a/Common/UI/Screen.cpp +++ b/Common/UI/Screen.cpp @@ -148,7 +148,7 @@ void ScreenManager::switchToNext() { void ScreenManager::touch(const TouchInput &touch) { std::lock_guard guard(inputLock_); // Send release all events to every screen layer. - if (touch.flags & TOUCH_RELEASE_ALL) { + if (touch.flags & TouchInputFlags::RELEASE_ALL) { for (auto &layer : stack_) { Screen *screen = layer.screen; layer.screen->UnsyncTouch(screen->transformTouch(touch)); @@ -156,7 +156,7 @@ void ScreenManager::touch(const TouchInput &touch) { } else if (!stack_.empty()) { // Let the overlay know about touch-downs, to be able to dismiss popups. bool skip = false; - if (overlayScreen_ && (touch.flags & TOUCH_DOWN)) { + if (overlayScreen_ && (touch.flags & TouchInputFlags::DOWN)) { skip = overlayScreen_->UnsyncTouch(overlayScreen_->transformTouch(touch)); } if (!skip) { @@ -300,7 +300,7 @@ void ScreenManager::sendMessage(UIMessage message, const char *value) { TouchInput input{}; input.x = -50000.0f; input.y = -50000.0f; - input.flags = TOUCH_RELEASE_ALL; + input.flags = TouchInputFlags::RELEASE_ALL; input.timestamp = time_now_d(); input.id = 0; touch(input); @@ -345,7 +345,7 @@ void ScreenManager::push(Screen *screen, int layerFlags) { TouchInput input{}; input.x = -50000.0f; input.y = -50000.0f; - input.flags = TOUCH_RELEASE_ALL; + input.flags = TouchInputFlags::RELEASE_ALL; input.timestamp = time_now_d(); input.id = 0; touch(input); diff --git a/Common/UI/ScrollView.cpp b/Common/UI/ScrollView.cpp index a46a73641f..63972768a9 100644 --- a/Common/UI/ScrollView.cpp +++ b/Common/UI/ScrollView.cpp @@ -16,16 +16,20 @@ ScrollView::~ScrollView() { lastScrollPosY = 0; } -void ScrollView::Measure(const UIContext &dc, MeasureSpec horiz, MeasureSpec vert) { - // Respect margins - Margins margins; +Margins ScrollView::GetMargins() const { if (views_.size()) { const LinearLayoutParams *linLayoutParams = views_[0]->GetLayoutParams()->As(); if (linLayoutParams) { - margins = linLayoutParams->margins; + return linLayoutParams->margins; } } + return Margins(0); +} +void ScrollView::Measure(const UIContext &dc, MeasureSpec horiz, MeasureSpec vert) { + // Respect margins + const Margins margins = GetMargins(); + // The scroll view itself simply obeys its parent - but also tries to fit the child if possible. MeasureBySpec(layoutParams_->width, horiz.size, horiz, &measuredWidth_); MeasureBySpec(layoutParams_->height, vert.size, vert, &measuredHeight_); @@ -68,11 +72,7 @@ void ScrollView::Layout() { Bounds scrolled; // Respect margins - Margins margins; - const LinearLayoutParams *linLayoutParams = views_[0]->GetLayoutParams()->As(); - if (linLayoutParams) { - margins = linLayoutParams->margins; - } + const Margins margins = GetMargins(); scrolled.w = views_[0]->GetMeasuredWidth() - margins.horiz(); scrolled.h = views_[0]->GetMeasuredHeight() - margins.vert(); @@ -118,7 +118,7 @@ bool ScrollView::Key(const KeyInput &input) { break; } - if (input.flags & KEY_DOWN) { + if ((input.flags & KEY_DOWN) && mouseHover_) { if ((input.keyCode == NKCODE_EXT_MOUSEWHEEL_UP || input.keyCode == NKCODE_EXT_MOUSEWHEEL_DOWN) && (input.flags & KEY_HASWHEELDELTA)) { scrollSpeed = (float)(short)(input.flags >> 16) * 1.25f; // Fudge factor. TODO: Should be moved to the backends. @@ -142,7 +142,7 @@ const float friction = 0.92f; const float stop_threshold = 0.1f; bool ScrollView::Touch(const TouchInput &input) { - if ((input.flags & TOUCH_DOWN) && scrollTouchId_ == -1 && bounds_.Contains(input.x, input.y)) { + if ((input.flags & TouchInputFlags::DOWN) && scrollTouchId_ == -1 && bounds_.Contains(input.x, input.y)) { if (orientation_ == ORIENT_VERTICAL) { Bob bob = ComputeBob(); float internalY = input.y - bounds_.y; @@ -159,7 +159,7 @@ bool ScrollView::Touch(const TouchInput &input) { Gesture gesture = orientation_ == ORIENT_VERTICAL ? GESTURE_DRAG_VERTICAL : GESTURE_DRAG_HORIZONTAL; - if ((input.flags & TOUCH_UP) && input.id == scrollTouchId_) { + if ((input.flags & TouchInputFlags::UP) && input.id == scrollTouchId_) { float info[4]; if (gesture_.GetGestureInfo(gesture, input.id, info)) { inertia_ = info[1]; @@ -168,12 +168,17 @@ bool ScrollView::Touch(const TouchInput &input) { draggingBob_ = false; } + if (input.flags & TouchInputFlags::MOUSE) { + // Kinda hacky, we should make a proper hover mechanism. + mouseHover_ = bounds_.Contains(input.x, input.y); + } + // We modify the input2 we send to children, so we can cancel drags if we start scrolling, and stuff like that. TouchInput input2; if (CanScroll()) { if (draggingBob_) { // Cancel any drags/holds on the children instantly to avoid accidental click-throughs. - input2.flags = TOUCH_UP | TOUCH_CANCEL; + input2.flags = TouchInputFlags::UP | TouchInputFlags::CANCEL; // Skip the gesture manager, do calculations directly. // Might switch to the gesture later. Bob bob = ComputeBob(); @@ -190,7 +195,7 @@ bool ScrollView::Touch(const TouchInput &input) { } else { input2 = gesture_.Update(input, bounds_); float info[4]; - if (input.id == scrollTouchId_ && gesture_.GetGestureInfo(gesture, input.id, info) && !(input.flags & TOUCH_DOWN)) { + if (input.id == scrollTouchId_ && gesture_.GetGestureInfo(gesture, input.id, info) && !(input.flags & TouchInputFlags::DOWN)) { float pos = scrollStart_ - info[0]; scrollPos_ = pos; scrollTarget_ = pos; @@ -203,7 +208,7 @@ bool ScrollView::Touch(const TouchInput &input) { scrollToTarget_ = false; } - if (!(input.flags & TOUCH_DOWN) || bounds_.Contains(input.x, input.y)) { + if (!(input.flags & TouchInputFlags::DOWN) || bounds_.Contains(input.x, input.y)) { return ViewGroup::Touch(input2); } else { return false; diff --git a/Common/UI/ScrollView.h b/Common/UI/ScrollView.h index f090c9f9d9..72f4c453f7 100644 --- a/Common/UI/ScrollView.h +++ b/Common/UI/ScrollView.h @@ -47,6 +47,7 @@ public: NeighborResult FindScrollNeighbor(View *view, const Point2D &target, FocusDirection direction, NeighborResult best) override; private: + Margins GetMargins() const; float ChildSize() const; // in the scrolled direction float ScrollMax() const; float HardClampedScrollPos(float pos) const; @@ -79,6 +80,7 @@ private: float *rememberPos_ = nullptr; bool alignOpposite_ = false; bool draggingBob_ = false; + bool mouseHover_ = false; float barDragStart_ = 0.0f; float barDragOffset_ = 0.0f; diff --git a/Common/UI/UIScreen.cpp b/Common/UI/UIScreen.cpp index be5eec16fe..196bb52a35 100644 --- a/Common/UI/UIScreen.cpp +++ b/Common/UI/UIScreen.cpp @@ -87,7 +87,7 @@ bool UIScreen::key(const KeyInput &key) { } bool UIScreen::UnsyncTouch(const TouchInput &touch) { - if (ClickDebug && root_ && (touch.flags & TOUCH_DOWN)) { + if (ClickDebug && root_ && (touch.flags & TouchInputFlags::DOWN)) { INFO_LOG(Log::System, "Touch down!"); std::vector views; root_->Query(touch.x, touch.y, views); @@ -173,7 +173,7 @@ void UIScreen::update() { key(ev.key); break; case QueuedEventType::TOUCH: - if (ClickDebug && (ev.touch.flags & TOUCH_DOWN)) { + if (ClickDebug && (ev.touch.flags & TouchInputFlags::DOWN)) { INFO_LOG(Log::System, "Touch down!"); std::vector views; root_->Query(ev.touch.x, ev.touch.y, views); diff --git a/Common/UI/View.cpp b/Common/UI/View.cpp index e129b2bc3b..8da1f60a9b 100644 --- a/Common/UI/View.cpp +++ b/Common/UI/View.cpp @@ -244,11 +244,11 @@ bool Clickable::Touch(const TouchInput &input) { } // Ignore buttons other than the left one. - if ((input.flags & TOUCH_MOUSE) && (input.buttons & 1) == 0) { + if ((input.flags & TouchInputFlags::MOUSE) && (input.buttons & 1) == 0) { return contains; } - if (input.flags & TOUCH_DOWN) { + if (input.flags & TouchInputFlags::DOWN) { if (bounds_.Contains(input.x, input.y)) { if (IsFocusMovementEnabled()) SetFocusedView(this); @@ -258,12 +258,12 @@ bool Clickable::Touch(const TouchInput &input) { down_ = false; dragging_ = false; } - } else if (input.flags & TOUCH_MOVE) { + } else if (input.flags & TouchInputFlags::MOVE) { if (dragging_) down_ = bounds_.Contains(input.x, input.y); } - if (input.flags & TOUCH_UP) { - if ((input.flags & TOUCH_CANCEL) == 0 && dragging_ && bounds_.Contains(input.x, input.y)) { + if (input.flags & TouchInputFlags::UP) { + if ((input.flags & TouchInputFlags::CANCEL) == 0 && dragging_ && bounds_.Contains(input.x, input.y)) { ClickInternal(); } down_ = false; @@ -389,7 +389,7 @@ bool StickyChoice::Touch(const TouchInput &touch) { return contains; } - if (touch.flags & TOUCH_DOWN) { + if (touch.flags & TouchInputFlags::DOWN) { if (contains) { if (IsFocusMovementEnabled()) SetFocusedView(this); @@ -1163,11 +1163,11 @@ bool ClickableTextView::Touch(const TouchInput &input) { bool contains = bounds_.Contains(input.x, input.y); // Ignore buttons other than the left one. - if ((input.flags & TOUCH_MOUSE) && (input.buttons & 1) == 0) { + if ((input.flags & TouchInputFlags::MOUSE) && (input.buttons & 1) == 0) { return contains; } - if (input.flags & TOUCH_DOWN) { + if (input.flags & TouchInputFlags::DOWN) { if (bounds_.Contains(input.x, input.y)) { if (IsFocusMovementEnabled()) SetFocusedView(this); @@ -1177,12 +1177,12 @@ bool ClickableTextView::Touch(const TouchInput &input) { down_ = false; dragging_ = false; } - } else if (input.flags & TOUCH_MOVE) { + } else if (input.flags & TouchInputFlags::MOVE) { if (dragging_) down_ = bounds_.Contains(input.x, input.y); } - if (input.flags & TOUCH_UP) { - if ((input.flags & TOUCH_CANCEL) == 0 && dragging_ && bounds_.Contains(input.x, input.y)) { + if (input.flags & TouchInputFlags::UP) { + if ((input.flags & TouchInputFlags::CANCEL) == 0 && dragging_ && bounds_.Contains(input.x, input.y)) { EventParams e{}; e.v = this; OnClick.Trigger(e); @@ -1279,7 +1279,7 @@ static std::string FirstLine(const std::string &text) { } bool TextEdit::Touch(const TouchInput &touch) { - if (touch.flags & TOUCH_DOWN) { + if (touch.flags & TouchInputFlags::DOWN) { if (bounds_.Contains(touch.x, touch.y)) { SetFocusedView(this, true); return true; @@ -1485,20 +1485,20 @@ void Spinner::Draw(UIContext &dc) { bool TriggerButton::Touch(const TouchInput &input) { bool contains = bounds_.Contains(input.x, input.y); - if (input.flags & TOUCH_DOWN) { + if (input.flags & TouchInputFlags::DOWN) { if (contains) { down_ |= 1 << input.id; } } - if (input.flags & TOUCH_MOVE) { + if (input.flags & TouchInputFlags::MOVE) { if (contains) down_ |= 1 << input.id; else down_ &= ~(1 << input.id); } - if (input.flags & TOUCH_UP) { + if (input.flags & TouchInputFlags::UP) { down_ &= ~(1 << input.id); } diff --git a/Common/UI/ViewGroup.cpp b/Common/UI/ViewGroup.cpp index 434c05e0e0..3f10b062be 100644 --- a/Common/UI/ViewGroup.cpp +++ b/Common/UI/ViewGroup.cpp @@ -109,7 +109,7 @@ bool ViewGroup::Touch(const TouchInput &input) { if (view->GetVisibility() == V_VISIBLE) { bool touch = view->Touch(input); any = any || touch; - if (exclusiveTouch_ && touch && (input.flags & TOUCH_DOWN)) { + if (exclusiveTouch_ && touch && (input.flags & TouchInputFlags::DOWN)) { break; } } diff --git a/Common/VR/PPSSPPVR.cpp b/Common/VR/PPSSPPVR.cpp index cfa70f5af8..db971301c4 100644 --- a/Common/VR/PPSSPPVR.cpp +++ b/Common/VR/PPSSPPVR.cpp @@ -332,9 +332,9 @@ void UpdateVRInput(bool haptics, float dp_xscale, float dp_yscale) { bool pressed = IN_VRGetButtonState(mouseController) & ovrButton_Trigger; if (mousePressed != pressed) { if (pressed) { - touch.flags = TOUCH_DOWN; + touch.flags = TouchInputFlags::DOWN; cbNativeTouch(touch); - touch.flags = TOUCH_UP; + touch.flags = TouchInputFlags::UP; cbNativeTouch(touch); } mousePressed = pressed; diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp index fc48dbdd5e..c82e0895da 100644 --- a/Qt/QtMain.cpp +++ b/Qt/QtMain.cpp @@ -599,14 +599,14 @@ bool MainUI::event(QEvent *e) { case Qt::TouchPointReleased: input.x = touchPoint.pos().x() * g_display.dpi_scale_x * xscale; input.y = touchPoint.pos().y() * g_display.dpi_scale_y * yscale; - input.flags = (touchPoint.state() == Qt::TouchPointPressed) ? TOUCH_DOWN : TOUCH_UP; + input.flags = (touchPoint.state() == Qt::TouchPointPressed) ? TouchInputFlags::DOWN : TouchInputFlags::UP; input.id = touchPoint.id(); NativeTouch(input); break; case Qt::TouchPointMoved: input.x = touchPoint.pos().x() * g_display.dpi_scale_x * xscale; input.y = touchPoint.pos().y() * g_display.dpi_scale_y * yscale; - input.flags = TOUCH_MOVE; + input.flags = TouchInputFlags::MOVE; input.id = touchPoint.id(); NativeTouch(input); break; @@ -625,7 +625,7 @@ bool MainUI::event(QEvent *e) { case Qt::LeftButton: input.x = ((QMouseEvent*)e)->pos().x() * g_display.dpi_scale_x * xscale; input.y = ((QMouseEvent*)e)->pos().y() * g_display.dpi_scale_y * yscale; - input.flags = ((e->type() == QEvent::MouseButtonPress) ? TOUCH_DOWN : TOUCH_UP) | TOUCH_MOUSE; + input.flags = ((e->type() == QEvent::MouseButtonPress) ? TouchInputFlags::DOWN : TouchInputFlags::UP) | TouchInputFlags::MOUSE; input.id = 0; NativeTouch(input); break; @@ -648,7 +648,7 @@ bool MainUI::event(QEvent *e) { case QEvent::MouseMove: input.x = ((QMouseEvent*)e)->pos().x() * g_display.dpi_scale_x * xscale; input.y = ((QMouseEvent*)e)->pos().y() * g_display.dpi_scale_y * yscale; - input.flags = TOUCH_MOVE | TOUCH_MOUSE; + input.flags = TouchInputFlags::MOVE | TouchInputFlags::MOUSE; input.id = 0; NativeTouch(input); break; diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp index ab24160461..c31efac077 100644 --- a/SDL/SDLMain.cpp +++ b/SDL/SDLMain.cpp @@ -1096,7 +1096,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta input.id = event.tfinger.fingerId; input.x = event.tfinger.x * w * g_DesktopDPI * g_display.dpi_scale_x; input.y = event.tfinger.y * h * g_DesktopDPI * g_display.dpi_scale_x; - input.flags = TOUCH_MOVE; + input.flags = TouchInputFlags::MOVE; input.timestamp = event.tfinger.timestamp; NativeTouch(input); break; @@ -1109,7 +1109,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta input.id = event.tfinger.fingerId; input.x = event.tfinger.x * w * g_DesktopDPI * g_display.dpi_scale_x; input.y = event.tfinger.y * h * g_DesktopDPI * g_display.dpi_scale_x; - input.flags = TOUCH_DOWN; + input.flags = TouchInputFlags::DOWN; input.timestamp = event.tfinger.timestamp; NativeTouch(input); @@ -1128,7 +1128,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta input.id = event.tfinger.fingerId; input.x = event.tfinger.x * w * g_DesktopDPI * g_display.dpi_scale_x; input.y = event.tfinger.y * h * g_DesktopDPI * g_display.dpi_scale_x; - input.flags = TOUCH_UP; + input.flags = TouchInputFlags::UP; input.timestamp = event.tfinger.timestamp; NativeTouch(input); @@ -1148,7 +1148,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta TouchInput input{}; input.x = mx; input.y = my; - input.flags = TOUCH_DOWN | TOUCH_MOUSE; + input.flags = TouchInputFlags::DOWN | TouchInputFlags::MOUSE; input.buttons = 1; input.id = 0; NativeTouch(input); @@ -1162,7 +1162,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta TouchInput input{}; input.x = mx; input.y = my; - input.flags = TOUCH_DOWN | TOUCH_MOUSE; + input.flags = TouchInputFlags::DOWN | TouchInputFlags::MOUSE; input.buttons = 2; input.id = 0; NativeTouch(input); @@ -1224,7 +1224,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta TouchInput input{}; input.x = mx; input.y = my; - input.flags = TOUCH_MOVE | TOUCH_MOUSE; + input.flags = TouchInputFlags::MOVE | TouchInputFlags::MOUSE; input.buttons = inputTracker->mouseDown; input.id = 0; NativeTouch(input); @@ -1241,7 +1241,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta TouchInput input{}; input.x = mx; input.y = my; - input.flags = TOUCH_UP | TOUCH_MOUSE; + input.flags = TouchInputFlags::UP | TouchInputFlags::MOUSE; input.buttons = 1; NativeTouch(input); KeyInput key(DEVICE_ID_MOUSE, NKCODE_EXT_MOUSEBUTTON_1, KEY_UP); @@ -1256,7 +1256,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta TouchInput input{}; input.x = mx; input.y = my; - input.flags = TOUCH_UP | TOUCH_MOUSE; + input.flags = TouchInputFlags::UP | TouchInputFlags::MOUSE; input.buttons = 2; NativeTouch(input); KeyInput key(DEVICE_ID_MOUSE, NKCODE_EXT_MOUSEBUTTON_2, KEY_UP); diff --git a/Tools/langtool/Cargo.lock b/Tools/langtool/Cargo.lock index 3620b89568..fd8d33849d 100644 --- a/Tools/langtool/Cargo.lock +++ b/Tools/langtool/Cargo.lock @@ -96,9 +96,9 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "bytes" @@ -998,9 +998,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "reqwest" -version = "0.12.25" +version = "0.12.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a" +checksum = "3b4c14b2d9afca6a60277086b0cc6a6ae0b568f6f7916c943a8cdc79f8be240f" dependencies = [ "base64", "bytes", @@ -1080,9 +1080,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" +checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282" dependencies = [ "zeroize", ] @@ -1449,9 +1449,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", "tracing-core", @@ -1459,9 +1459,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", ] diff --git a/Tools/langtool/src/main.rs b/Tools/langtool/src/main.rs index 372b06744a..15ff673098 100644 --- a/Tools/langtool/src/main.rs +++ b/Tools/langtool/src/main.rs @@ -57,8 +57,8 @@ enum Command { key: String, }, CopyKey { - old: String, - new: String, + old_section: String, + new_section: String, key: String, }, DupeKey { @@ -789,11 +789,11 @@ fn execute_command(cmd: Command, ai: Option<&ChatGPT>, dry_run: bool, verbose: b } Command::CopyKey { // Copies between sections - ref old, - ref new, + ref old_section, + ref new_section, ref key, } => { - copy_key(&mut target_ini, old, new, key).unwrap(); + copy_key(&mut target_ini, old_section, new_section, key).unwrap(); } Command::DupeKey { ref section, @@ -904,11 +904,11 @@ fn execute_command(cmd: Command, ai: Option<&ChatGPT>, dry_run: bool, verbose: b } Command::CopyKey { // between sections - ref old, - ref new, + ref old_section, + ref new_section, ref key, } => { - copy_key(&mut reference_ini, old, new, key).unwrap(); + copy_key(&mut reference_ini, old_section, new_section, key).unwrap(); } Command::DupeKey { // Inside a section, preserving a value diff --git a/UI/DevScreens.cpp b/UI/DevScreens.cpp index f9d3b92c6e..cefae777c3 100644 --- a/UI/DevScreens.cpp +++ b/UI/DevScreens.cpp @@ -605,7 +605,7 @@ void FrameDumpTestScreen::update() { void TouchTestScreen::touch(const TouchInput &touch) { UIBaseDialogScreen::touch(touch); - if (touch.flags & TOUCH_DOWN) { + if (touch.flags & TouchInputFlags::DOWN) { bool found = false; for (int i = 0; i < MAX_TOUCH_POINTS; i++) { if (touches_[i].id == touch.id) { @@ -626,7 +626,7 @@ void TouchTestScreen::touch(const TouchInput &touch) { } } } - if (touch.flags & TOUCH_MOVE) { + if (touch.flags & TouchInputFlags::MOVE) { bool found = false; for (int i = 0; i < MAX_TOUCH_POINTS; i++) { if (touches_[i].id == touch.id) { @@ -639,7 +639,7 @@ void TouchTestScreen::touch(const TouchInput &touch) { WARN_LOG(Log::System, "Move with buttons %d without touch down: %d", touch.buttons, touch.id); } } - if (touch.flags & TOUCH_UP) { + if (touch.flags & TouchInputFlags::UP) { bool found = false; for (int i = 0; i < MAX_TOUCH_POINTS; i++) { if (touches_[i].id == touch.id) { diff --git a/UI/DisplayLayoutScreen.cpp b/UI/DisplayLayoutScreen.cpp index 721060d8aa..29527c8d82 100644 --- a/UI/DisplayLayoutScreen.cpp +++ b/UI/DisplayLayoutScreen.cpp @@ -68,7 +68,7 @@ public: DisplayLayoutConfig &config = g_Config.GetDisplayLayoutConfig(orientation_); - if ((touch.flags & TOUCH_MOVE) != 0 && dragging_) { + if ((touch.flags & TouchInputFlags::MOVE) != 0 && dragging_) { float relativeTouchX = touch.x - startX_; float relativeTouchY = touch.y - startY_; @@ -87,7 +87,7 @@ public: } } - if ((touch.flags & TOUCH_DOWN) != 0 && !dragging_) { + if ((touch.flags & TouchInputFlags::DOWN) != 0 && !dragging_) { // Check that we're in the central 80% of the screen. // If outside, it may be a drag from displaying the back button on phones // where you have to drag from the side, etc. @@ -102,7 +102,7 @@ public: } } - if ((touch.flags & TOUCH_UP) != 0 && dragging_) { + if ((touch.flags & TouchInputFlags::UP) != 0 && dragging_) { dragging_ = false; } diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index fb1d603c37..370546e78f 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -680,7 +680,7 @@ bool EmuScreen::UnsyncTouch(const TouchInput &touch) { } } - if (touch.flags & TOUCH_DOWN) { + if (touch.flags & TouchInputFlags::DOWN) { if (!(g_Config.bShowImDebugger && imguiInited_) && !ignoreGamepad) { // This just prevents the gamepad from timing out. GamepadTouch(); @@ -1166,7 +1166,7 @@ void EmuScreen::touch(const TouchInput &touch) { if (!ImGui::GetIO().WantCaptureMouse) { UIScreen::touch(touch); } - } else if (g_Config.bMouseControl && !(touch.flags & TOUCH_UP) && (touch.flags & TOUCH_MOUSE)) { + } else if (g_Config.bMouseControl && !(touch.flags & TouchInputFlags::UP) && (touch.flags & TouchInputFlags::MOUSE)) { // don't do anything as the mouse pointer is hidden in this case. // But we let touch-up events through to avoid getting stuck if the user toggles mouse control. } else { @@ -1174,7 +1174,7 @@ void EmuScreen::touch(const TouchInput &touch) { if (chatMenu_ && chatMenu_->GetVisibility() == UI::V_VISIBLE) { // Avoid pressing touch button behind the chat if (!chatMenu_->Contains(touch.x, touch.y)) { - if ((touch.flags & TOUCH_DOWN) != 0) { + if ((touch.flags & TouchInputFlags::DOWN) != 0) { chatMenu_->Close(); if (chatButton_) chatButton_->SetVisibility(UI::V_VISIBLE); diff --git a/UI/GamepadEmu.cpp b/UI/GamepadEmu.cpp index 5bba6e3bc4..5ace55d35f 100644 --- a/UI/GamepadEmu.cpp +++ b/UI/GamepadEmu.cpp @@ -111,14 +111,14 @@ bool MultiTouchButton::Touch(const TouchInput &input) { _dbg_assert_(input.id >= 0 && input.id < TOUCH_MAX_POINTERS); bool retval = GamepadView::Touch(input); - if ((input.flags & TOUCH_DOWN) && bounds_.Contains(input.x, input.y)) { + if ((input.flags & TouchInputFlags::DOWN) && bounds_.Contains(input.x, input.y)) { pointerDownMask_ |= 1 << input.id; usedPointerMask |= 1 << input.id; if (CanGlide() && !primaryButton[input.id]) primaryButton[input.id] = this; } - if (input.flags & TOUCH_MOVE) { - if (!(input.flags & TOUCH_MOUSE) || input.buttons) { + if (input.flags & TouchInputFlags::MOVE) { + if (!(input.flags & TouchInputFlags::MOUSE) || input.buttons) { if (bounds_.Contains(input.x, input.y) && !(analogPointerMask & (1 << input.id))) { if (CanGlide() && !primaryButton[input.id]) { primaryButton[input.id] = this; @@ -129,12 +129,12 @@ bool MultiTouchButton::Touch(const TouchInput &input) { } } } - if (input.flags & TOUCH_UP) { + if (input.flags & TouchInputFlags::UP) { pointerDownMask_ &= ~(1 << input.id); usedPointerMask &= ~(1 << input.id); primaryButton[input.id] = nullptr; } - if (input.flags & TOUCH_RELEASE_ALL) { + if (input.flags & TouchInputFlags::RELEASE_ALL) { pointerDownMask_ = 0; usedPointerMask = 0; } @@ -304,15 +304,15 @@ void PSPDpad::GetContentDimensions(const UIContext &dc, float &w, float &h) cons bool PSPDpad::Touch(const TouchInput &input) { bool retval = GamepadView::Touch(input); - if (input.flags & TOUCH_DOWN) { + if (input.flags & TouchInputFlags::DOWN) { if (dragPointerId_ == -1 && bounds_.Contains(input.x, input.y)) { dragPointerId_ = input.id; usedPointerMask |= 1 << input.id; ProcessTouch(input.x, input.y, true); } } - if (input.flags & TOUCH_MOVE) { - if (!(input.flags & TOUCH_MOUSE) || input.buttons) { + if (input.flags & TouchInputFlags::MOVE) { + if (!(input.flags & TouchInputFlags::MOUSE) || input.buttons) { if (dragPointerId_ == -1 && bounds_.Contains(input.x, input.y) && !(analogPointerMask & (1 << input.id))) { dragPointerId_ = input.id; } @@ -321,7 +321,7 @@ bool PSPDpad::Touch(const TouchInput &input) { } } } - if (input.flags & TOUCH_UP) { + if (input.flags & TouchInputFlags::UP) { if (input.id == dragPointerId_) { dragPointerId_ = -1; usedPointerMask &= ~(1 << input.id); @@ -475,7 +475,7 @@ void PSPStick::Draw(UIContext &dc) { bool PSPStick::Touch(const TouchInput &input) { bool retval = GamepadView::Touch(input); - if (input.flags & TOUCH_RELEASE_ALL) { + if (input.flags & TouchInputFlags::RELEASE_ALL) { dragPointerId_ = -1; centerX_ = bounds_.centerX(); centerY_ = bounds_.centerY(); @@ -484,7 +484,7 @@ bool PSPStick::Touch(const TouchInput &input) { analogPointerMask = 0; return retval; } - if (input.flags & TOUCH_DOWN) { + if (input.flags & TouchInputFlags::DOWN) { const TouchControlConfig &config = g_Config.GetTouchControlsConfig(g_display.GetDeviceOrientation()); float fac = 0.5f * (stick_ ? config.fRightStickHeadScale : config.fLeftStickHeadScale)-0.5f; if (dragPointerId_ == -1 && bounds_.Expand(bounds_.w*fac, bounds_.h*fac).Contains(input.x, input.y)) { @@ -502,13 +502,13 @@ bool PSPStick::Touch(const TouchInput &input) { retval = true; } } - if (input.flags & TOUCH_MOVE) { + if (input.flags & TouchInputFlags::MOVE) { if (input.id == dragPointerId_) { ProcessTouch(input.x, input.y, true); retval = true; } } - if (input.flags & TOUCH_UP) { + if (input.flags & TouchInputFlags::UP) { if (input.id == dragPointerId_) { dragPointerId_ = -1; centerX_ = bounds_.centerX(); @@ -586,7 +586,7 @@ void PSPCustomStick::Draw(UIContext &dc) { bool PSPCustomStick::Touch(const TouchInput &input) { bool retval = GamepadView::Touch(input); - if (input.flags & TOUCH_RELEASE_ALL) { + if (input.flags & TouchInputFlags::RELEASE_ALL) { dragPointerId_ = -1; centerX_ = bounds_.centerX(); centerY_ = bounds_.centerY(); @@ -596,7 +596,7 @@ bool PSPCustomStick::Touch(const TouchInput &input) { analogPointerMask = 0; return false; } - if (input.flags & TOUCH_DOWN) { + if (input.flags & TouchInputFlags::DOWN) { const TouchControlConfig &config = g_Config.GetTouchControlsConfig(g_display.GetDeviceOrientation()); float fac = 0.5f * config.fRightStickHeadScale - 0.5f; if (dragPointerId_ == -1 && bounds_.Expand(bounds_.w*fac, bounds_.h*fac).Contains(input.x, input.y)) { @@ -614,13 +614,13 @@ bool PSPCustomStick::Touch(const TouchInput &input) { retval = true; } } - if (input.flags & TOUCH_MOVE) { + if (input.flags & TouchInputFlags::MOVE) { if (input.id == dragPointerId_) { ProcessTouch(input.x, input.y, true); retval = true; } } - if (input.flags & TOUCH_UP) { + if (input.flags & TouchInputFlags::UP) { if (input.id == dragPointerId_) { dragPointerId_ = -1; centerX_ = bounds_.centerX(); @@ -1034,12 +1034,12 @@ bool GestureGamepad::Touch(const TouchInput &input) { return false; } - if (input.flags & TOUCH_RELEASE_ALL) { + if (input.flags & TouchInputFlags::RELEASE_ALL) { dragPointerId_ = -1; return false; } - if (input.flags & TOUCH_DOWN) { + if (input.flags & TouchInputFlags::DOWN) { if (dragPointerId_ == -1) { dragPointerId_ = input.id; lastX_ = input.x; @@ -1056,7 +1056,7 @@ bool GestureGamepad::Touch(const TouchInput &input) { lastTouchDown_ = now; } } - if (input.flags & TOUCH_MOVE) { + if (input.flags & TouchInputFlags::MOVE) { if (input.id == dragPointerId_) { deltaX_ += input.x - lastX_; deltaY_ += input.y - lastY_; @@ -1073,7 +1073,7 @@ bool GestureGamepad::Touch(const TouchInput &input) { } } } - if (input.flags & TOUCH_UP) { + if (input.flags & TouchInputFlags::UP) { if (input.id == dragPointerId_) { dragPointerId_ = -1; if (time_now_d() - lastTouchDown_ < 0.3f) diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp index b949eb4109..2c82140a91 100644 --- a/UI/MainScreen.cpp +++ b/UI/MainScreen.cpp @@ -139,10 +139,10 @@ public: bool Touch(const TouchInput &input) override { bool retval = UI::Clickable::Touch(input); hovering_ = bounds_.Contains(input.x, input.y); - if (hovering_ && (input.flags & TOUCH_DOWN)) { + if (hovering_ && (input.flags & TouchInputFlags::DOWN)) { holdStart_ = time_now_d(); } - if (input.flags & TOUCH_UP) { + if (input.flags & TouchInputFlags::UP) { holdStart_ = 0; } return retval; diff --git a/UI/MiscScreens.cpp b/UI/MiscScreens.cpp index 8566b33847..1ab57c9d61 100644 --- a/UI/MiscScreens.cpp +++ b/UI/MiscScreens.cpp @@ -417,7 +417,7 @@ bool LogoScreen::key(const KeyInput &key) { } void LogoScreen::touch(const TouchInput &touch) { - if (touch.flags & TOUCH_DOWN) { + if (touch.flags & TouchInputFlags::DOWN) { Next(); } } @@ -482,14 +482,14 @@ public: bool Touch(const TouchInput &touch) override { if (touch.id != 0) return false; - if (touch.flags & TOUCH_DOWN) { + if (touch.flags & TouchInputFlags::DOWN) { dragYStart_ = touch.y; dragYOffsetStart_ = dragOffset_; } - if (touch.flags & TOUCH_UP) { + if (touch.flags & TouchInputFlags::UP) { dragYStart_ = -1.0f; } - if (touch.flags & TOUCH_MOVE) { + if (touch.flags & TouchInputFlags::MOVE) { if (dragYStart_ >= 0.0f) { dragOffset_ = dragYOffsetStart_ + (touch.y - dragYStart_); } diff --git a/UI/MiscViews.cpp b/UI/MiscViews.cpp index b1e8d51fa2..d4230957f8 100644 --- a/UI/MiscViews.cpp +++ b/UI/MiscViews.cpp @@ -153,7 +153,7 @@ PaneTitleBar::PaneTitleBar(const Path &gamePath, std::string_view title, const s } else { settingsUrl = join("https://www.ppsspp.org/docs/settings/", settingsCategory); } - Choice *helpButton = Add(new Choice(ImageID("I_INFO"), new LinearLayoutParams())); + Choice *helpButton = Add(new Choice(ImageID("I_LINK_OUT_QUESTION"), new LinearLayoutParams())); helpButton->OnClick.Add([settingsUrl](UI::EventParams &) { System_LaunchUrl(LaunchUrlType::BROWSER_URL, settingsUrl); }); diff --git a/UI/OnScreenDisplay.cpp b/UI/OnScreenDisplay.cpp index 2574aaf2c9..137765a09c 100644 --- a/UI/OnScreenDisplay.cpp +++ b/UI/OnScreenDisplay.cpp @@ -544,7 +544,7 @@ bool OnScreenMessagesView::Dismiss(float x, float y) { bool OSDOverlayScreen::UnsyncTouch(const TouchInput &touch) { // Don't really need to forward. // UIScreen::UnsyncTouch(touch); - if ((touch.flags & TOUCH_DOWN) && osmView_) { + if ((touch.flags & TouchInputFlags::DOWN) && osmView_) { return osmView_->Dismiss(touch.x, touch.y); } else { return false; diff --git a/UI/SimpleDialogScreen.cpp b/UI/SimpleDialogScreen.cpp index 8f78b3d2bf..6e45eec487 100644 --- a/UI/SimpleDialogScreen.cpp +++ b/UI/SimpleDialogScreen.cpp @@ -13,11 +13,25 @@ void UISimpleBaseDialogScreen::CreateViews() { const bool portrait = GetDeviceOrientation() == DeviceOrientation::Portrait; root_ = new LinearLayout(ORIENT_VERTICAL, new LayoutParams(FILL_PARENT, FILL_PARENT)); - root_->Add(new TopBar(*screenManager()->getUIContext(), portrait ? TopBarFlags::Portrait : TopBarFlags::Default, GetTitle())); + + TopBarFlags topBarFlags = portrait ? TopBarFlags::Portrait : TopBarFlags::Default; + if (flags_ & SimpleDialogFlags::CustomContextMenu) { + topBarFlags |= TopBarFlags::ContextMenuButton; + } + + TopBar *topBar = root_->Add(new TopBar(*screenManager()->getUIContext(), topBarFlags, GetTitle())); + if (flags_ & SimpleDialogFlags::CustomContextMenu) { + View *menuButton = topBar->GetContextMenuButton(); + topBar->OnContextMenuClick.Add([this, menuButton](UI::EventParams &e) { + this->screenManager()->push(new PopupCallbackScreen([this](UI::ViewGroup *parent) { + CreateContextMenu(parent); + }, menuButton)); + }); + } if (canScroll) { ScrollView *scroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT, 1.0f)); - LinearLayout *contents = new LinearLayoutList(ORIENT_VERTICAL); + LinearLayout *contents = new LinearLayoutList(ORIENT_VERTICAL, new LinearLayoutParams(Margins(0, 0, 8, 0))); contents->SetSpacing(0); CreateDialogViews(contents); scroll->Add(contents); @@ -120,12 +134,12 @@ void UITwoPaneBaseDialogScreen::CreateViews() { root->Add(columns); // root_->Add(new TopBar(*screenManager()->getUIContext(), portrait, GetTitle(), new LayoutParams(FILL_PARENT, FILL_PARENT))); - ScrollView *settingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(SettingsWidth(), FILL_PARENT, 0.0f, Margins(8))); - LinearLayout *settingsPane = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT)); + ScrollView *settingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(SettingsWidth(), FILL_PARENT, 0.0f, Margins(0, 8, 0, 0))); + LinearLayout *settingsPane = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, Margins(0, 8, 0, 0))); settingsPane->SetSpacing(0.0f); CreateSettingsViews(settingsPane); - settingsPane->Add(new BorderView(BORDER_BOTTOM, BorderStyle::HEADER_FG, 2.0f, new LayoutParams(FILL_PARENT, 40.0f))); - settingsPane->Add(new Choice(di->T("Back"), ImageID("I_NAVIGATE_BACK")))->OnClick.Handle(this, &UIScreen::OnBack); + // settingsPane->Add(new BorderView(BORDER_BOTTOM, BorderStyle::HEADER_FG, 2.0f, new LayoutParams(FILL_PARENT, 40.0f))); + // settingsPane->Add(new Choice(di->T("Back"), ImageID("I_NAVIGATE_BACK")))->OnClick.Handle(this, &UIScreen::OnBack); settingsScroll->Add(settingsPane); if (flags_ & TwoPaneFlags::SettingsToTheRight) { diff --git a/UI/SimpleDialogScreen.h b/UI/SimpleDialogScreen.h index 4a5464f55c..dce72ebd4d 100644 --- a/UI/SimpleDialogScreen.h +++ b/UI/SimpleDialogScreen.h @@ -7,6 +7,7 @@ enum class SimpleDialogFlags { Default = 0, + CustomContextMenu = 1, ContentsCanScroll = 8, }; ENUM_CLASS_BITOPS(SimpleDialogFlags); @@ -22,6 +23,7 @@ public: // Override this, don't override CreateViews. And don't touch root_ directly. virtual void CreateDialogViews(UI::ViewGroup *parent) = 0; + virtual void CreateContextMenu(UI::ViewGroup *parent) {} // only called if CustomContextMenu is set in flags. virtual std::string_view GetTitle() const { return ""; } private: diff --git a/UI/SystemInfoScreen.cpp b/UI/SystemInfoScreen.cpp index c8422a5af0..9c8576edee 100644 --- a/UI/SystemInfoScreen.cpp +++ b/UI/SystemInfoScreen.cpp @@ -24,6 +24,7 @@ #include "UI/SystemInfoScreen.h" #include "UI/IconCache.h" #include "UI/BaseScreens.h" +#include "UI/MiscViews.h" #include "UI/OnScreenDisplay.h" #include "android/jni/app-android.h" @@ -110,6 +111,8 @@ void SystemInfoScreen::CreateDeviceInfoTab(UI::LinearLayout *deviceSpecs) { auto si = GetI18NCategory(I18NCat::SYSINFO); auto gr = GetI18NCategory(I18NCat::GRAPHICS); + deviceSpecs->Add(new TopBar(*screenManager()->getUIContext(), TopBarFlags::Default, si->T("Device Info"))); + UI::CollapsibleSection *systemInfo = deviceSpecs->Add(new UI::CollapsibleSection(si->T("System Information"))); systemInfo->Add(new Choice(si->T("Copy summary to clipboard"), ImageID("I_FILE_COPY")))->OnClick.Handle(this, &SystemInfoScreen::CopySummaryToClipboard); @@ -411,12 +414,12 @@ void SystemInfoScreen::CreateDriverBugsTab(UI::LinearLayout *driverBugs) { for (int i = 0; i < (int)draw->GetBugs().MaxBugIndex(); i++) { if (draw->GetBugs().Has(i)) { anyDriverBugs = true; - driverBugs->Add(new TextView(draw->GetBugs().GetBugName(i), new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); + driverBugs->Add(new InfoItem(draw->GetBugs().GetBugName(i), "", new LayoutParams(FILL_PARENT, WRAP_CONTENT))); } } if (!anyDriverBugs) { - driverBugs->Add(new TextView(si->T("No GPU driver bugs detected"), new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); + driverBugs->Add(new InfoItem(si->T("No GPU driver bugs detected"), "", new LayoutParams(FILL_PARENT, WRAP_CONTENT))); } } @@ -463,38 +466,38 @@ void SystemInfoScreen::CreateVulkanExtsTab(UI::LinearLayout *gpuExtensions) { CollapsibleSection *vulkanFeatures = gpuExtensions->Add(new CollapsibleSection(si->T("Vulkan Features"))); std::vector features = draw->GetFeatureList(); for (const auto &feature : features) { - vulkanFeatures->Add(new TextView(feature, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); + vulkanFeatures->Add(new TextView(feature, FLAG_DYNAMIC_ASCII, true, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); } CollapsibleSection *presentModes = gpuExtensions->Add(new CollapsibleSection(si->T("Present modes"))); for (const auto &mode : draw->GetPresentModeList(di->T("Current"))) { - presentModes->Add(new TextView(mode, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); + presentModes->Add(new TextView(mode, FLAG_DYNAMIC_ASCII, true, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); } CollapsibleSection *colorFormats = gpuExtensions->Add(new CollapsibleSection(si->T("Display Color Formats"))); for (const auto &format : draw->GetSurfaceFormatList()) { - colorFormats->Add(new TextView(format, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); + colorFormats->Add(new TextView(format, FLAG_DYNAMIC_ASCII, true, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); } CollapsibleSection *enabledExtensions = gpuExtensions->Add(new CollapsibleSection(std::string(si->T("Vulkan Extensions")) + " (" + std::string(di->T("Enabled")) + ")")); std::vector extensions = draw->GetExtensionList(true, true); std::sort(extensions.begin(), extensions.end()); for (auto &extension : extensions) { - enabledExtensions->Add(new TextView(extension, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); + enabledExtensions->Add(new TextView(extension, FLAG_DYNAMIC_ASCII, true, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); } // Also get instance extensions enabledExtensions->Add(new ItemHeader(si->T("Instance"))); extensions = draw->GetExtensionList(false, true); std::sort(extensions.begin(), extensions.end()); for (auto &extension : extensions) { - enabledExtensions->Add(new TextView(extension, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); + enabledExtensions->Add(new TextView(extension, FLAG_DYNAMIC_ASCII, true, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); } CollapsibleSection *vulkanExtensions = gpuExtensions->Add(new CollapsibleSection(si->T("Vulkan Extensions"))); extensions = draw->GetExtensionList(true, false); std::sort(extensions.begin(), extensions.end()); for (auto &extension : extensions) { - vulkanExtensions->Add(new TextView(extension, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); + vulkanExtensions->Add(new TextView(extension, FLAG_DYNAMIC_ASCII, true, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); } vulkanExtensions->Add(new ItemHeader(si->T("Instance"))); @@ -502,6 +505,6 @@ void SystemInfoScreen::CreateVulkanExtsTab(UI::LinearLayout *gpuExtensions) { extensions = draw->GetExtensionList(false, false); std::sort(extensions.begin(), extensions.end()); for (auto &extension : extensions) { - vulkanExtensions->Add(new TextView(extension, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); + vulkanExtensions->Add(new TextView(extension, FLAG_DYNAMIC_ASCII, true, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); } } diff --git a/UI/TabbedDialogScreen.cpp b/UI/TabbedDialogScreen.cpp index 236f300f58..a5b1e0774a 100644 --- a/UI/TabbedDialogScreen.cpp +++ b/UI/TabbedDialogScreen.cpp @@ -26,7 +26,7 @@ void UITabbedBaseDialogScreen::AddTab(const char *tag, std::string_view title, I scroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT)); scroll->SetTag(tag); } - LinearLayout *contents = new LinearLayoutList(ORIENT_VERTICAL); + LinearLayout *contents = new LinearLayoutList(ORIENT_VERTICAL, new LinearLayoutParams(Margins(0, 0, 8, 0))); contents->SetSpacing(0); if (dialogFlags & TabDialogFlags::AddAutoTitles) { @@ -87,7 +87,7 @@ void UITabbedBaseDialogScreen::CreateViews() { if (flags_ & TabDialogFlags::VerticalShowIcons) { tabHolderFlags |= TabHolderFlags::VerticalShowIcons; } - tabHolder_ = new TabHolder(ORIENT_VERTICAL, 300, tabHolderFlags, filterNotice_, nullptr, new AnchorLayoutParams(10, 0, 10, 0)); + tabHolder_ = new TabHolder(ORIENT_VERTICAL, 300, tabHolderFlags, filterNotice_, nullptr, new AnchorLayoutParams(10, 0, 0, 0)); CreateExtraButtons(tabHolder_->Container(), 10); tabHolder_->AddBack(this); root_->Add(tabHolder_); diff --git a/UI/TouchControlLayoutScreen.cpp b/UI/TouchControlLayoutScreen.cpp index a5809f1a3c..5050b5f307 100644 --- a/UI/TouchControlLayoutScreen.cpp +++ b/UI/TouchControlLayoutScreen.cpp @@ -386,7 +386,7 @@ static Point2D ClampTo(const Point2D &p, const Bounds &b) { bool ControlLayoutView::Touch(const TouchInput &touch) { using namespace UI; - if ((touch.flags & TOUCH_MOVE) && pickedControl_ != nullptr) { + if ((touch.flags & TouchInputFlags::MOVE) && pickedControl_ != nullptr) { if (mode_ == 0) { // Allow placing the control halfway outside the play area. @@ -435,7 +435,7 @@ bool ControlLayoutView::Touch(const TouchInput &touch) { pickedControl_->SetScale(newScale); } } - if ((touch.flags & TOUCH_DOWN) && pickedControl_ == 0) { + if ((touch.flags & TouchInputFlags::DOWN) && pickedControl_ == 0) { pickedControl_ = getPickedControl(touch.x, touch.y); if (pickedControl_) { startDragX_ = touch.x; @@ -448,7 +448,7 @@ bool ControlLayoutView::Touch(const TouchInput &touch) { startScale_ = pickedControl_->GetScale(); } } - if ((touch.flags & TOUCH_UP) && pickedControl_ != 0) { + if ((touch.flags & TouchInputFlags::UP) && pickedControl_ != 0) { pickedControl_->SavePosition(); pickedControl_ = 0; } diff --git a/UI/TouchControlVisibilityScreen.cpp b/UI/TouchControlVisibilityScreen.cpp index ca27d77083..cf052ed4dc 100644 --- a/UI/TouchControlVisibilityScreen.cpp +++ b/UI/TouchControlVisibilityScreen.cpp @@ -51,7 +51,7 @@ std::string_view TouchControlVisibilityScreen::GetTitle() const { return co->T("Touch Control Visibility"); } -void TouchControlVisibilityScreen::CreateSettingsViews(UI::ViewGroup *parent) { +void TouchControlVisibilityScreen::CreateContextMenu(UI::ViewGroup *parent) { using namespace UI; auto di = GetI18NCategory(I18NCat::DIALOG); @@ -66,7 +66,7 @@ void TouchControlVisibilityScreen::CreateSettingsViews(UI::ViewGroup *parent) { }); } -void TouchControlVisibilityScreen::CreateContentViews(UI::ViewGroup *parent) { +void TouchControlVisibilityScreen::CreateDialogViews(UI::ViewGroup *parent) { using namespace UI; using namespace CustomKeyData; diff --git a/UI/TouchControlVisibilityScreen.h b/UI/TouchControlVisibilityScreen.h index 000572ec4a..9aab91f16d 100644 --- a/UI/TouchControlVisibilityScreen.h +++ b/UI/TouchControlVisibilityScreen.h @@ -34,11 +34,11 @@ struct TouchButtonToggle { std::function handle; }; -class TouchControlVisibilityScreen : public UITwoPaneBaseDialogScreen { +class TouchControlVisibilityScreen : public UISimpleBaseDialogScreen { public: - TouchControlVisibilityScreen(const Path &gamePath) : UITwoPaneBaseDialogScreen(gamePath, TwoPaneFlags::SettingsInContextMenu | TwoPaneFlags::ContentsCanScroll) {} - void CreateContentViews(UI::ViewGroup *parent) override; - void CreateSettingsViews(UI::ViewGroup *parent) override; + TouchControlVisibilityScreen(const Path &gamePath) : UISimpleBaseDialogScreen(gamePath, SimpleDialogFlags::ContentsCanScroll | SimpleDialogFlags::CustomContextMenu) {} + void CreateDialogViews(UI::ViewGroup *parent) override; + void CreateContextMenu(UI::ViewGroup *parent) override; void onFinish(DialogResult result) override; const char *tag() const override { return "TouchControlVisibility"; } diff --git a/UI/UIAtlas.cpp b/UI/UIAtlas.cpp index 3cf766bea6..06ef58f74a 100644 --- a/UI/UIAtlas.cpp +++ b/UI/UIAtlas.cpp @@ -171,6 +171,7 @@ static const ImageMeta imageIDs[] = { {"I_DEVICE_ROTATION_PORTRAIT", false}, {"I_MOVE", false}, {"I_RESIZE", false}, + {"I_LINK_OUT_QUESTION", false}, }; static std::string PNGNameFromID(std::string_view id) { diff --git a/UWP/App.cpp b/UWP/App.cpp index 74d36aaab4..b6cb56ff45 100644 --- a/UWP/App.cpp +++ b/UWP/App.cpp @@ -203,7 +203,7 @@ void App::OnPointerMoved(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Cor float X = args->CurrentPoint->Position.X; float Y = args->CurrentPoint->Position.Y; int64_t timestamp = args->CurrentPoint->Timestamp; - m_main->OnTouchEvent(TOUCH_MOVE, pointerId, X, Y, (double)timestamp); + m_main->OnTouchEvent(TouchInputFlags::MOVE, pointerId, X, Y, (double)timestamp); } void App::OnPointerEntered(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) { @@ -220,7 +220,7 @@ void App::OnPointerPressed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::C float X = args->CurrentPoint->Position.X; float Y = args->CurrentPoint->Position.Y; int64_t timestamp = args->CurrentPoint->Timestamp; - m_main->OnTouchEvent(TOUCH_DOWN|TOUCH_MOVE, pointerId, X, Y, (double)timestamp); + m_main->OnTouchEvent(TouchInputFlags::DOWN|TouchInputFlags::MOVE, pointerId, X, Y, (double)timestamp); if (!m_isPhone) { sender->SetPointerCapture(); } @@ -233,7 +233,7 @@ void App::OnPointerReleased(Windows::UI::Core::CoreWindow^ sender, Windows::UI:: float X = args->CurrentPoint->Position.X; float Y = args->CurrentPoint->Position.Y; int64_t timestamp = args->CurrentPoint->Timestamp; - m_main->OnTouchEvent(TOUCH_UP|TOUCH_MOVE, pointerId, X, Y, (double)timestamp); + m_main->OnTouchEvent(TouchInputFlags::UP|TouchInputFlags::MOVE, pointerId, X, Y, (double)timestamp); if (!m_isPhone) { sender->ReleasePointerCapture(); } diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp index 49b9f1a6fd..48ae35fd58 100644 --- a/UWP/PPSSPP_UWPMain.cpp +++ b/UWP/PPSSPP_UWPMain.cpp @@ -282,12 +282,12 @@ void PPSSPP_UWPMain::OnTouchEvent(int touchEvent, int touchId, float x, float y, KeyInput key{}; key.deviceId = DEVICE_ID_MOUSE; - if (touchEvent & TOUCH_DOWN) { + if (touchEvent & TouchInputFlags::DOWN) { key.keyCode = NKCODE_EXT_MOUSEBUTTON_1; key.flags = KEY_DOWN; NativeKey(key); } - if (touchEvent & TOUCH_UP) { + if (touchEvent & TouchInputFlags::UP) { key.keyCode = NKCODE_EXT_MOUSEBUTTON_1; key.flags = KEY_UP; NativeKey(key); diff --git a/Windows/MainWindow.cpp b/Windows/MainWindow.cpp index deb672e8eb..afe6dffabc 100644 --- a/Windows/MainWindow.cpp +++ b/Windows/MainWindow.cpp @@ -1142,7 +1142,7 @@ namespace MainWindow WindowsRawInput::SetMousePos(x, y); TouchInput touch{}; - touch.flags = TOUCH_DOWN | TOUCH_MOUSE; + touch.flags = TouchInputFlags::DOWN | TouchInputFlags::MOUSE; touch.buttons = 1; touch.x = x; touch.y = y; @@ -1191,7 +1191,7 @@ namespace MainWindow // Mouse moves now happen also when no button is pressed. TouchInput touch{}; - touch.flags = TOUCH_MOVE | TOUCH_MOUSE; + touch.flags = TouchInputFlags::MOVE | TouchInputFlags::MOUSE; if (wParam & MK_LBUTTON) { touch.buttons |= 1; } @@ -1217,7 +1217,7 @@ namespace MainWindow TouchInput touch{}; touch.buttons = 1; - touch.flags = TOUCH_UP | TOUCH_MOUSE; + touch.flags = TouchInputFlags::UP | TouchInputFlags::MOUSE; touch.x = x; touch.y = y; NativeTouch(touch); @@ -1236,7 +1236,7 @@ namespace MainWindow TouchInput touch{}; touch.buttons = 2; - touch.flags = TOUCH_DOWN | TOUCH_MOUSE; + touch.flags = TouchInputFlags::DOWN | TouchInputFlags::MOUSE; touch.x = x; touch.y = y; NativeTouch(touch); @@ -1250,7 +1250,7 @@ namespace MainWindow TouchInput touch{}; touch.buttons = 2; - touch.flags = TOUCH_UP | TOUCH_MOUSE; + touch.flags = TouchInputFlags::UP | TouchInputFlags::MOUSE; touch.x = x; touch.y = y; NativeTouch(touch); diff --git a/Windows/RawInput.cpp b/Windows/RawInput.cpp index bf01ddd1fd..2105e4123a 100644 --- a/Windows/RawInput.cpp +++ b/Windows/RawInput.cpp @@ -308,7 +308,7 @@ namespace WindowsRawInput { TouchInput touch; touch.id = 0; - touch.flags = TOUCH_MOVE; + touch.flags = TouchInputFlags::MOVE; touch.x = mouseX; touch.y = mouseY; diff --git a/Windows/TouchInputHandler.cpp b/Windows/TouchInputHandler.cpp index ea02755c1d..2f7b5ec644 100644 --- a/Windows/TouchInputHandler.cpp +++ b/Windows/TouchInputHandler.cpp @@ -116,7 +116,7 @@ void TouchInputHandler::touchUp(int id, float x, float y){ touchevent.id = id; touchevent.x = x; touchevent.y = y; - touchevent.flags = TOUCH_UP; + touchevent.flags = TouchInputFlags::UP; NativeTouch(touchevent); } @@ -125,7 +125,7 @@ void TouchInputHandler::touchDown(int id, float x, float y){ touchevent.id = id; touchevent.x = x; touchevent.y = y; - touchevent.flags = TOUCH_DOWN; + touchevent.flags = TouchInputFlags::DOWN; NativeTouch(touchevent); } @@ -134,7 +134,7 @@ void TouchInputHandler::touchMove(int id, float x, float y){ touchevent.id = id; touchevent.x = x; touchevent.y = y; - touchevent.flags = TOUCH_MOVE; + touchevent.flags = TouchInputFlags::MOVE; NativeTouch(touchevent); } diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp index dacc4dc066..3de9661722 100644 --- a/android/jni/app-android.cpp +++ b/android/jni/app-android.cpp @@ -1319,7 +1319,7 @@ extern "C" jboolean Java_org_ppsspp_ppsspp_NativeApp_mouse( if (button == 0) { // It's a pure mouse move. - input.flags = TOUCH_MOUSE | TOUCH_MOVE; + input.flags = TouchInputFlags::MOUSE | TouchInputFlags::MOVE; input.x = x; input.y = y; input.id = 0; @@ -1329,10 +1329,10 @@ extern "C" jboolean Java_org_ppsspp_ppsspp_NativeApp_mouse( input.y = y; switch (action) { case 1: - input.flags = TOUCH_MOUSE | TOUCH_DOWN; + input.flags = TouchInputFlags::MOUSE | TouchInputFlags::DOWN; break; case 2: - input.flags = TOUCH_MOUSE | TOUCH_UP; + input.flags = TouchInputFlags::MOUSE | TouchInputFlags::UP; break; } input.id = 0; diff --git a/assets/lang/ar_AE.ini b/assets/lang/ar_AE.ini index 393b157164..a826577eee 100644 --- a/assets/lang/ar_AE.ini +++ b/assets/lang/ar_AE.ini @@ -408,6 +408,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = إفتراضي Delete = ‎مسح Delete all = ‎مسح الكل Delete completed = ‎المسح إكتمل. diff --git a/assets/lang/az_AZ.ini b/assets/lang/az_AZ.ini index c65e35d2f7..3ca6eebd52 100644 --- a/assets/lang/az_AZ.ini +++ b/assets/lang/az_AZ.ini @@ -404,6 +404,7 @@ ConnectionName = Qoşulma adı Copied to clipboard: %1 = Kəsintiliyə köçürüldü: %1 Copy to clipboard = Kəsintiliyə köçürt Corrupted Data = Korlanmış verilən +Default = Varsayılan Delete = Sil Delete all = Hamısını sil Delete completed = Siliniş tamamlandı diff --git a/assets/lang/be_BY.ini b/assets/lang/be_BY.ini index 944dc66e56..a845d839a4 100644 --- a/assets/lang/be_BY.ini +++ b/assets/lang/be_BY.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Па змаўчанні Delete = Delete Delete all = Delete all Delete completed = Delete completed. diff --git a/assets/lang/bg_BG.ini b/assets/lang/bg_BG.ini index 8f73bfc9d1..eaf839c461 100644 --- a/assets/lang/bg_BG.ini +++ b/assets/lang/bg_BG.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Копиране в клипборда Corrupted Data = Повредени данни +Default = По подразбиране Delete = Изтрий Delete all = Изтрий всички Delete completed = Изтриването завършето. diff --git a/assets/lang/ca_ES.ini b/assets/lang/ca_ES.ini index a843d7b5e2..023a6967e1 100644 --- a/assets/lang/ca_ES.ini +++ b/assets/lang/ca_ES.ini @@ -400,6 +400,7 @@ ConnectionName = Nom de la connexió Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Dades corruptes +Default = Per defecte Delete = Eliminar Delete all = Eliminar tot Delete completed = Esborrat completat diff --git a/assets/lang/cz_CZ.ini b/assets/lang/cz_CZ.ini index 0975eff5cd..60e82eebbb 100644 --- a/assets/lang/cz_CZ.ini +++ b/assets/lang/cz_CZ.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Smazat Delete all = Smazat vše Delete completed = Mazání dokončeno. diff --git a/assets/lang/da_DK.ini b/assets/lang/da_DK.ini index a29fe82afa..e6ef912536 100644 --- a/assets/lang/da_DK.ini +++ b/assets/lang/da_DK.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Slet Delete all = Slet alt Delete completed = Slettet. diff --git a/assets/lang/de_DE.ini b/assets/lang/de_DE.ini index 49ff81c943..c9f2bf4227 100644 --- a/assets/lang/de_DE.ini +++ b/assets/lang/de_DE.ini @@ -392,6 +392,7 @@ ConnectionName = Verbindungsname Copied to clipboard: %1 = In Zwischenablage kopiert: %1 Copy to clipboard = In Zwischenablage kopieren Corrupted Data = Beschädigte Daten +Default = Vorgabe Delete = Löschen Delete all = Alle löschen Delete completed = Löschen abgeschlossen diff --git a/assets/lang/dr_ID.ini b/assets/lang/dr_ID.ini index c634020d0f..2d278ab551 100644 --- a/assets/lang/dr_ID.ini +++ b/assets/lang/dr_ID.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Hapusi Delete all = Delete all Delete completed = Terhapusmi. diff --git a/assets/lang/en_US.ini b/assets/lang/en_US.ini index 2ddb7f132d..580b80a1fc 100644 --- a/assets/lang/en_US.ini +++ b/assets/lang/en_US.ini @@ -424,6 +424,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Delete Delete all = Delete all Delete completed = Delete completed. diff --git a/assets/lang/es_ES.ini b/assets/lang/es_ES.ini index 1ef340ca65..7d8f6c04f1 100644 --- a/assets/lang/es_ES.ini +++ b/assets/lang/es_ES.ini @@ -401,6 +401,7 @@ ConnectionName = Nombre de la conexión Copied to clipboard: %1 = Copiado a portapapeles: %1 Copy to clipboard = Copiar a portapapeles Corrupted Data = Datos corruptos +Default = Por defecto Delete = Eliminar Delete all = Eliminar todo Delete completed = Eliminado completado. diff --git a/assets/lang/es_LA.ini b/assets/lang/es_LA.ini index 5704e28401..ac1d1b9163 100644 --- a/assets/lang/es_LA.ini +++ b/assets/lang/es_LA.ini @@ -400,6 +400,7 @@ ConnectionName = Nombre de conexión Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Datos dañados +Default = Por defecto Delete = Borrar Delete all = Borrar todos Delete completed = Borrado terminado. diff --git a/assets/lang/fa_IR.ini b/assets/lang/fa_IR.ini index d1965cb6dc..417ecef7dd 100644 --- a/assets/lang/fa_IR.ini +++ b/assets/lang/fa_IR.ini @@ -400,6 +400,7 @@ ConnectionName = نام اتصال Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = داده‌ها خراب شده +Default = پیشفرض Delete = ‎حذف Delete all = حذف همه Delete completed = ‎.حذف شد diff --git a/assets/lang/fi_FI.ini b/assets/lang/fi_FI.ini index 2e918b9286..6b20fd103b 100644 --- a/assets/lang/fi_FI.ini +++ b/assets/lang/fi_FI.ini @@ -400,6 +400,7 @@ ConnectionName = Yhteyden nimi Copied to clipboard: %1 = Kopioitu leikepöydälle: %1 Copy to clipboard = Kopioi leikepöydälle Corrupted Data = Vioittuneet tiedot +Default = Oletus Delete = Poista Delete all = Poista kaikki Delete completed = Poisto onnistui. diff --git a/assets/lang/fr_FR.ini b/assets/lang/fr_FR.ini index 7eb85b7918..8e1667b81b 100644 --- a/assets/lang/fr_FR.ini +++ b/assets/lang/fr_FR.ini @@ -400,6 +400,7 @@ ConnectionName = Nom de la connexion Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Données corrompues +Default = Default Delete = Supprimer Delete all = Tout supprimer Delete completed = Suppression terminée. diff --git a/assets/lang/gl_ES.ini b/assets/lang/gl_ES.ini index 0d490ba67b..a0d20c302a 100644 --- a/assets/lang/gl_ES.ini +++ b/assets/lang/gl_ES.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Borrar Delete all = Borrar todo Delete completed = Borrado completado. diff --git a/assets/lang/gr_EL.ini b/assets/lang/gr_EL.ini index 0f13288657..4cbf1c4564 100644 --- a/assets/lang/gr_EL.ini +++ b/assets/lang/gr_EL.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = ΔΙΑΓΡΑΦΗ Delete all = ΔΙΑΓΡΑΦΗ ΟΛΩΝ Delete completed = ΔΙΑΓΡΑΦΗ ΟΛΟΚΛΗΡΩΘΗΚΕ diff --git a/assets/lang/he_IL.ini b/assets/lang/he_IL.ini index 3ec2de71d6..27379044d0 100644 --- a/assets/lang/he_IL.ini +++ b/assets/lang/he_IL.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = קחמ Delete all = Delete all Delete completed = .המלשוה הקיחמ diff --git a/assets/lang/he_IL_invert.ini b/assets/lang/he_IL_invert.ini index b4a38590e0..6c5828c04d 100644 --- a/assets/lang/he_IL_invert.ini +++ b/assets/lang/he_IL_invert.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = קחמ Delete all = Delete all Delete completed = .המלשוה הקיחמ diff --git a/assets/lang/hr_HR.ini b/assets/lang/hr_HR.ini index 64dc156439..d36c76dc3d 100644 --- a/assets/lang/hr_HR.ini +++ b/assets/lang/hr_HR.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Izbriši Delete all = Izbriši sve Delete completed = Brisanje dovršeno. diff --git a/assets/lang/hu_HU.ini b/assets/lang/hu_HU.ini index 40668082d4..5b82f8c70a 100644 --- a/assets/lang/hu_HU.ini +++ b/assets/lang/hu_HU.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Vágolapra másolás Corrupted Data = Sérült adat +Default = Alapértelmezett Delete = Töröl Delete all = Mindet töröl Delete completed = Törölve. diff --git a/assets/lang/id_ID.ini b/assets/lang/id_ID.ini index 00ade1521c..3603368356 100644 --- a/assets/lang/id_ID.ini +++ b/assets/lang/id_ID.ini @@ -400,6 +400,7 @@ ConnectionName = Nama koneksi Copied to clipboard: %1 = Disalin ke papan klip: %1 Copy to clipboard = Salin ke papan klip Corrupted Data = Data rusak +Default = Bawaan Delete = Hapus Delete all = Hapus semua Delete completed = Selesai menghapus. diff --git a/assets/lang/it_IT.ini b/assets/lang/it_IT.ini index 944a29a12c..6cbbc1106c 100644 --- a/assets/lang/it_IT.ini +++ b/assets/lang/it_IT.ini @@ -400,6 +400,7 @@ ConnectionName = Nome connessione Copied to clipboard: %1 = Copiato negli appunti: %1 Copy to clipboard = Copia negli appunti Corrupted Data = Dati corrotti +Default = Predefinito Delete = Elimina Delete all = Elimina tutto Delete completed = Eliminazione completata. diff --git a/assets/lang/ja_JP.ini b/assets/lang/ja_JP.ini index 25898f7817..f154660d5e 100644 --- a/assets/lang/ja_JP.ini +++ b/assets/lang/ja_JP.ini @@ -400,6 +400,7 @@ ConnectionName = 接続名 Copied to clipboard: %1 = クリップボードへコピー: %1 Copy to clipboard = クリップボードへコピー Corrupted Data = 破損したデータ +Default = デフォルト Delete = 削除 Delete all = 全て削除 Delete completed = 削除が完了しました。 diff --git a/assets/lang/jv_ID.ini b/assets/lang/jv_ID.ini index ea883545cf..41854519dd 100644 --- a/assets/lang/jv_ID.ini +++ b/assets/lang/jv_ID.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Mbusek Delete all = Mbusek Kabeh Delete completed = Mbusek rampung. diff --git a/assets/lang/ko_KR.ini b/assets/lang/ko_KR.ini index b65f696f65..0d592994f9 100644 --- a/assets/lang/ko_KR.ini +++ b/assets/lang/ko_KR.ini @@ -400,6 +400,7 @@ ConnectionName = 연결 이름 Copied to clipboard: %1 = 클립보드에 복사됨: %1 Copy to clipboard = 클립보드에 복사 Corrupted Data = 손상된 데이터 +Default = 기본 Delete = 삭제 Delete all = 모두 삭제 Delete completed = 삭제가 완료되었습니다. diff --git a/assets/lang/ku_SO.ini b/assets/lang/ku_SO.ini index 5188fb88af..697c671f37 100644 --- a/assets/lang/ku_SO.ini +++ b/assets/lang/ku_SO.ini @@ -414,6 +414,7 @@ ConnectionName = ناوی پەیوەندی Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = زانیاریەکە تێکچووە +Default = Default Delete = سڕینەوە Delete all = سڕینەوەی هەمووی Delete completed = سڕینەوەکە سەرکەووتوو بوو diff --git a/assets/lang/lo_LA.ini b/assets/lang/lo_LA.ini index cfaf9b29c3..f41cfa6471 100644 --- a/assets/lang/lo_LA.ini +++ b/assets/lang/lo_LA.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = ລຶບ Delete all = ລຶບທັງໝົດ Delete completed = ລຶບຂໍ້ມູນສຳເລັດ diff --git a/assets/lang/lt-LT.ini b/assets/lang/lt-LT.ini index 72e9214384..0e17d86536 100644 --- a/assets/lang/lt-LT.ini +++ b/assets/lang/lt-LT.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Ištrinti Delete all = Ištrinti viską Delete completed = Ištrinimas baigtas. diff --git a/assets/lang/ms_MY.ini b/assets/lang/ms_MY.ini index 47b2f104d3..8c4055e829 100644 --- a/assets/lang/ms_MY.ini +++ b/assets/lang/ms_MY.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Padam Delete all = Padam semua Delete completed = Pemadaman selesai. diff --git a/assets/lang/nl_NL.ini b/assets/lang/nl_NL.ini index ec13f8e6c5..b271903c6c 100644 --- a/assets/lang/nl_NL.ini +++ b/assets/lang/nl_NL.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Wissen Delete all = Alles wissen Delete completed = Het verwijderen is voltooid. diff --git a/assets/lang/no_NO.ini b/assets/lang/no_NO.ini index 0e5e849efb..07b89aaf74 100644 --- a/assets/lang/no_NO.ini +++ b/assets/lang/no_NO.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Standard Delete = Slett Delete all = Delete all Delete completed = Slettet!! diff --git a/assets/lang/pl_PL.ini b/assets/lang/pl_PL.ini index f7d2fde802..aac98d83aa 100644 --- a/assets/lang/pl_PL.ini +++ b/assets/lang/pl_PL.ini @@ -399,6 +399,7 @@ ConnectionName = Nazwa Połączenia Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Uszkodzone dane +Default = Domyślny Delete = Usuń Delete all = Usuń wszystko Delete completed = Usuwanie zakończone. diff --git a/assets/lang/pt_BR.ini b/assets/lang/pt_BR.ini index 462b9d378c..00e03da4d4 100644 --- a/assets/lang/pt_BR.ini +++ b/assets/lang/pt_BR.ini @@ -423,6 +423,7 @@ ConnectionName = Nome da conexão Copied to clipboard: %1 = Copiou para a área de transferência: %1 Copy to clipboard = Copiar para a área de transferência Corrupted Data = Dados corrompidos +Default = Padrão Delete = Apagar Delete all = Apagar tudo Delete completed = Exclusão completada. diff --git a/assets/lang/pt_PT.ini b/assets/lang/pt_PT.ini index 8457cdb89f..984b8d850f 100644 --- a/assets/lang/pt_PT.ini +++ b/assets/lang/pt_PT.ini @@ -424,6 +424,7 @@ ConnectionName = Nome da conexão Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Dados Corrompidos +Default = Padrão Delete = Eliminar Delete all = Eliminar tudo Delete completed = Eliminação completa. diff --git a/assets/lang/ro_RO.ini b/assets/lang/ro_RO.ini index dbf85119d0..cf1098f12e 100644 --- a/assets/lang/ro_RO.ini +++ b/assets/lang/ro_RO.ini @@ -401,6 +401,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Șterge Delete all = Șterge tot Delete completed = Ștergere completă diff --git a/assets/lang/ru_RU.ini b/assets/lang/ru_RU.ini index e57ae3b6ca..916fcb7729 100644 --- a/assets/lang/ru_RU.ini +++ b/assets/lang/ru_RU.ini @@ -400,6 +400,7 @@ ConnectionName = Имя повреждено Copied to clipboard: %1 = Скопировано в буфер обмена: %1 Copy to clipboard = Копировать в буфер обмена Corrupted Data = Данные повреждены +Default = По умолчанию Delete = Удалить Delete all = Удалить всё Delete completed = Удаление завершено diff --git a/assets/lang/sv_SE.ini b/assets/lang/sv_SE.ini index 80a6b0a35d..127ca02f05 100644 --- a/assets/lang/sv_SE.ini +++ b/assets/lang/sv_SE.ini @@ -401,6 +401,7 @@ Copied to clipboard: %1 = Kopierat till urklipp: %1 Copy to clipboard = Kopiera till urklipp Corrupted Data = Korrupt data #Default = Standard +Default = Standard Delete = Radera Delete all = Radera allt Delete completed = Borttaget. diff --git a/assets/lang/tg_PH.ini b/assets/lang/tg_PH.ini index 8ce7e65b70..0ee26f927e 100644 --- a/assets/lang/tg_PH.ini +++ b/assets/lang/tg_PH.ini @@ -401,6 +401,7 @@ ConnectionName = Pangalan ng Koneksyon Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted ang data +Default = Default Delete = Burahin Delete all = Burahin Lahat Delete completed = Burado na. diff --git a/assets/lang/th_TH.ini b/assets/lang/th_TH.ini index c2e5023abd..6e9b9a0c73 100644 --- a/assets/lang/th_TH.ini +++ b/assets/lang/th_TH.ini @@ -416,6 +416,7 @@ ConnectionName = ชื่อเครือข่าย Copied to clipboard: %1 = คัดลอกไปยังคลิปบอร์ด: %1 Copy to clipboard = คัดลอกไปยังคลิปบอร์ด Corrupted Data = ข้อมูลเสียหาย +Default = ค่าดั้งเดิม Delete = ลบ Delete all = ลบทั้งหมด Delete completed = ลบข้อมูลสำเร็จ diff --git a/assets/lang/tr_TR.ini b/assets/lang/tr_TR.ini index 94722e9e0d..f2bb981466 100644 --- a/assets/lang/tr_TR.ini +++ b/assets/lang/tr_TR.ini @@ -402,6 +402,7 @@ ConnectionName = Bağlantı adı Copied to clipboard: %1 = Panoya kopyalandı: %1 Copy to clipboard = Panoya kopyala Corrupted Data = Bozuk veri +Default = Varsayılan Delete = Sil Delete all = Tümünü sil Delete completed = Silme işlemi tamamlandı. diff --git a/assets/lang/uk_UA.ini b/assets/lang/uk_UA.ini index 0a591ff0b6..111fe5cca5 100644 --- a/assets/lang/uk_UA.ini +++ b/assets/lang/uk_UA.ini @@ -400,6 +400,7 @@ ConnectionName = Назва підключення Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Копіювати в буфер обміну Corrupted Data = Пошкоджені дані +Default = Звичайна Delete = Видалити Delete all = Видалити все Delete completed = Видалення завершено diff --git a/assets/lang/vi_VN.ini b/assets/lang/vi_VN.ini index a5c2087183..22f070f476 100644 --- a/assets/lang/vi_VN.ini +++ b/assets/lang/vi_VN.ini @@ -400,6 +400,7 @@ ConnectionName = Connection name Copied to clipboard: %1 = Copied to clipboard: %1 Copy to clipboard = Copy to clipboard Corrupted Data = Corrupted data +Default = Default Delete = Xóa Delete all = Xóa tất cả Delete completed = Đã xóa xong. diff --git a/assets/lang/zh_CN.ini b/assets/lang/zh_CN.ini index f951a0160d..a500634b80 100644 --- a/assets/lang/zh_CN.ini +++ b/assets/lang/zh_CN.ini @@ -400,6 +400,7 @@ ConnectionName = 连接名称 Copied to clipboard: %1 = 已复制到剪贴板: %1 Copy to clipboard = 复制到剪贴板 Corrupted Data = 数据损坏 +Default = 默认主题 Delete = 删除 Delete all = 清除 Delete completed = 已删除。 diff --git a/assets/lang/zh_TW.ini b/assets/lang/zh_TW.ini index 942dbd521d..e95fde8797 100644 --- a/assets/lang/zh_TW.ini +++ b/assets/lang/zh_TW.ini @@ -400,6 +400,7 @@ ConnectionName = 連線名稱 Copied to clipboard: %1 = 已複製到剪貼簿:%1 Copy to clipboard = 複製到剪貼簿 Corrupted Data = 已損毀的資料 +Default = 預設 Delete = 刪除 Delete all = 全部刪除 Delete completed = 刪除完成 diff --git a/assets/ui_images/images.svg b/assets/ui_images/images.svg index 90c69de723..7bdf52d7e9 100644 --- a/assets/ui_images/images.svg +++ b/assets/ui_images/images.svg @@ -7,7 +7,7 @@ viewBox="0 0 158.74998 185.20831" version="1.1" id="svg1" - inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)" + inkscape:version="1.4.2 (f4327f4, 2025-05-13)" sodipodi:docname="images.svg" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" @@ -24,9 +24,9 @@ inkscape:pagecheckerboard="true" inkscape:deskcolor="#d1d1d1" inkscape:document-units="px" - inkscape:zoom="5.656855" - inkscape:cx="250.49255" - inkscape:cy="560.11689" + inkscape:zoom="16.000002" + inkscape:cx="338.78121" + inkscape:cy="626.46867" inkscape:window-width="3840" inkscape:window-height="2071" inkscape:window-x="-9" @@ -4426,7 +4426,10 @@ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.553509" />