diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index caa5338..f50767a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,12 +149,40 @@ jobs: - name: Create GitHub Release uses: actions/create-release@v1 + id: create_release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref_name }} release_name: Release ${{ github.ref_name }} draft: false prerelease: false - files: | - ./release-assets/*.AppImage - ./release-assets/*.exe - ./release-assets/*.dmg + - name: Upload AppImage + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./release-assets/*.AppImage + asset_name: PlayerLink.AppImage + asset_content_type: application/octet-stream + + - name: Upload Windows Executable + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: path_to_your_windows_executable + asset_name: ./release-assets/*.exe + asset_content_type: application/octet-stream + + - name: Upload macOS DMG + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./release-assets/*.dmg + asset_name: PlayerLink.dmg + asset_content_type: application/octet-stream diff --git a/src/main.cpp b/src/main.cpp index 9bb172f..5794174 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -184,30 +184,37 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = "textCtrl") - : wxTextCtrl(parent, id, value, pos, size, style, validator, name), placeholder(""), showPlaceholder(true) { + : wxTextCtrl(parent, id, value, pos, size, style, validator, name), + placeholder(""), + showPlaceholder(true), + isPassword((style & wxTE_PASSWORD) != 0) { + Bind(wxEVT_SET_FOCUS, &wxTextCtrlWithPlaceholder::OnFocus, this); Bind(wxEVT_KILL_FOCUS, &wxTextCtrlWithPlaceholder::OnBlur, this); } void SetPlaceholderText(const wxString& p) { placeholder = p; - SetValue(placeholder); - Refresh(); + if (GetValue().IsEmpty() || showPlaceholder) + UpdatePlaceholder(); } protected: void OnFocus(wxFocusEvent& event) { - if (GetValue() == placeholder) + if (showPlaceholder && GetValue() == placeholder) { Clear(); + if (isPassword) + SetStyleToPassword(); + } showPlaceholder = false; event.Skip(); } void OnBlur(wxFocusEvent& event) { - if (GetValue().IsEmpty() || GetValue() == "") { - SetValue(placeholder); + if (GetValue().IsEmpty()) { showPlaceholder = true; + UpdatePlaceholder(); } event.Skip(); } @@ -215,6 +222,21 @@ protected: private: wxString placeholder; bool showPlaceholder; + bool isPassword; + + void UpdatePlaceholder() { + if (isPassword) + SetStyleToNormal(); + SetValue(placeholder); + } + + void SetStyleToPassword() { + SetWindowStyle(GetWindowStyle() | wxTE_PASSWORD); + } + + void SetStyleToNormal() { + SetWindowStyle(GetWindowStyle() & ~wxTE_PASSWORD); + } }; class PlayerLinkFrame : public wxFrame {