Projects
Extra
vlc-beta
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 98
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/demux/asf/asf.c -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/demux/asf/asf.c
Changed
@@ -40,6 +40,7 @@ #include <vlc_vout.h> #include <limits.h> +#include <stdckdint.h> #include "asfpacket.h" #include "libasf.h" @@ -1256,8 +1257,9 @@ p_sys->p_fp->i_min_data_packet_size; /* calculate the time duration in micro-s */ - p_sys->i_length = VLC_TICK_FROM_MSFTIME(p_sys->p_fp->i_play_duration) * - (vlc_tick_t)i_count / + if ( ckd_mul(&p_sys->i_length, VLC_TICK_FROM_MSFTIME(p_sys->p_fp->i_play_duration), i_count) ) + p_sys->i_length = 0; + p_sys->i_length = p_sys->i_length / (vlc_tick_t)p_sys->p_fp->i_data_packets_count; if( p_sys->i_length <= p_sys->p_fp->i_preroll ) p_sys->i_length = 0;
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/demux/mkv/demux.cpp -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/demux/mkv/demux.cpp
Changed
@@ -75,6 +75,7 @@ if (std::string(doc_type) != "matroska" && std::string(doc_type) != "webm" ) { msg_Err( p_demux, "Not a Matroska file : DocType = %s ", std::string(doc_type).c_str()); + delete p_l0; return false; } @@ -82,6 +83,7 @@ if (uint64_t(doc_read_version) > 5) { msg_Err( p_demux, "matroska file needs version %" PRId64 " but only versions 1 to 4 supported", uint64_t(doc_read_version)); + delete p_l0; return false; }
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/demux/mp4/libmp4.c -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/demux/mp4/libmp4.c
Changed
@@ -37,6 +37,7 @@ #include <math.h> #include <assert.h> #include <limits.h> +#include <stdckdint.h> /* Some assumptions: * The input method HAS to be seekable @@ -53,14 +54,17 @@ #ifdef MP4_VERBOSE static char * MP4_Time2Str( stime_t i_duration, uint32_t i_scale ) { - uint64_t i_time = (i_scale > 0) ? i_duration / i_scale : 0; + uint64_t i_time = (i_scale) ? i_duration / i_scale : 0; unsigned h = ( i_time /( 60*60 ) ) % 60; unsigned m = ( i_time / 60 ) % 60; unsigned s = i_time % 60; - unsigned ms = (i_scale) ? (1000*i_duration / i_scale) % 1000 : 0; + uint64_t ms; + if ( i_scale == 0 || ckd_mul( &ms, 1000, i_duration ) ) + ms = 0; + ms = (ms / i_scale) % 1000; char *out; - if( asprintf( &out, "%u:%.2u:%.2u:%.3u", h, m, s, ms ) < 0 ) + if( asprintf( &out, "%u:%.2u:%.2u:%.3" PRIu64, h, m, s, ms ) < 0 ) return NULL; return out; }
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/demux/mp4/mp4.c -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/demux/mp4/mp4.c
Changed
@@ -1229,9 +1229,9 @@ else { p_sys->i_timescale = BOXDATA(p_mvhd)->i_timescale; - if( p_sys->i_timescale == 0 ) + if( p_sys->i_timescale == 0 || p_sys->i_timescale > 0x10000000 ) { - msg_Err( p_this, "bad timescale" ); + msg_Err( p_this, "bad timescale %" PRIu32, p_sys->i_timescale ); goto error; } } @@ -3910,9 +3910,18 @@ unsigned int i; msg_Warn( p_demux, "elst box found" ); + bool use_editlist = var_InheritBool( p_demux, CFG_PREFIX"editlist" ); for( i = 0; i < elst->i_entry_count; i++ ) { const MP4_Box_data_elst_entry_t *edit = &elst->entriesi; + if ( edit->i_segment_duration > INT64_MAX / CLOCK_FREQ || + ( edit->i_media_time >= 0 && edit->i_media_time > INT64_MAX / CLOCK_FREQ ) ) + { + use_editlist = false; + msg_Dbg( p_demux, " - %d bogus duration=%" PRId64 " media time=%" PRId64 ")", + i, edit->i_segment_duration, edit->i_media_time ); + } + else msg_Dbg( p_demux, " - %d duration=%"PRId64"ms media time=%"PRId64 "ms) rate=%d.%d", i, MP4_rescale( edit->i_segment_duration, p_sys->i_timescale, 1000 ), @@ -3923,7 +3932,7 @@ edit->i_media_rate_fraction ); } - if( var_InheritBool( p_demux, CFG_PREFIX"editlist" ) ) + if( use_editlist ) p_track->p_elst = p_elst; else msg_Dbg( p_demux, "ignore editlist" );
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/demux/mpeg/timestamps.h -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/demux/mpeg/timestamps.h
Changed
@@ -19,7 +19,7 @@ #ifndef VLC_MPEG_TIMESTAMPS_H #define VLC_MPEG_TIMESTAMPS_H -#define FROM_SCALE_NZ(x) ((vlc_tick_t)((x) * 100 / 9)) +#define FROM_SCALE_NZ(x) (((vlc_tick_t)(x) * 100 / 9)) #define TO_SCALE_NZ(x) ((x) * 9 / 100) #define FROM_SCALE(x) (VLC_TICK_0 + FROM_SCALE_NZ(x))
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/demux/subtitle.c -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/demux/subtitle.c
Changed
@@ -39,6 +39,7 @@ #include <ctype.h> #include <math.h> #include <assert.h> +#include <stdckdint.h> #include <vlc_demux.h> #include <vlc_charset.h> @@ -1129,6 +1130,7 @@ const char *s, size_t length) { int h1, m1, s1, d1 = 0; + int64_t sec, ms, total; int count; if (sscanf(s, "%d:%d:%d,%d%n", &h1, &m1, &s1, &d1, &count) == 4 @@ -1147,8 +1149,14 @@ return VLC_EGENERIC; success: + if (ckd_mul(&sec, h1, 3600) || + ckd_mul(&ms, m1, 60) || + ckd_add(&total, sec, ms) || + ckd_add(&total, total, s1)) + return VLC_EINVAL; + (*timing_value) = VLC_TICK_0 - + vlc_tick_from_sec(h1 * 3600 + m1 * 60 + s1) + + vlc_tick_from_sec(total) + VLC_TICK_FROM_MS(d1); return VLC_SUCCESS; @@ -1194,16 +1202,28 @@ int h1, m1, s1, d1, h2, m2, s2, d2; if( sscanf( s, "%d:%d:%d.%d,%d:%d:%d.%d", - &h1, &m1, &s1, &d1, &h2, &m2, &s2, &d2) == 8 ) - { - p_subtitle->i_start = vlc_tick_from_sec( h1 * 3600 + m1 * 60 + s1) + - VLC_TICK_FROM_MS( d1 ) + VLC_TICK_0; + &h1, &m1, &s1, &d1, &h2, &m2, &s2, &d2) != 8 ) + return VLC_EGENERIC; - p_subtitle->i_stop = vlc_tick_from_sec( h2 * 3600 + m2 * 60 + s2 ) + - VLC_TICK_FROM_MS( d2 ) + VLC_TICK_0; - return VLC_SUCCESS; - } - return VLC_EGENERIC; + int64_t sec, ms, total; + if (ckd_mul(&sec, h1, 3600) || + ckd_mul(&ms, m1, 60) || + ckd_add(&total, sec, ms) || + ckd_add(&total, total, s1)) + return VLC_EINVAL; + + p_subtitle->i_start = vlc_tick_from_sec( total ) + + VLC_TICK_FROM_MS( d1 ) + VLC_TICK_0; + + if (ckd_mul(&sec, h2, 3600) || + ckd_mul(&ms, m2, 60) || + ckd_add(&total, sec, ms) || + ckd_add(&total, total, s2)) + return VLC_EINVAL; + + p_subtitle->i_stop = vlc_tick_from_sec( total ) + + VLC_TICK_FROM_MS( d2 ) + VLC_TICK_0; + return VLC_SUCCESS; } /* ParseSubViewer
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/demux/wav.c -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/demux/wav.c
Changed
@@ -347,9 +347,9 @@ unsigned int i_extended; i_size += 2; - if( i_size < sizeof( WAVEFORMATEX ) ) + if( i_size < sizeof( WAVEFORMATEX ) || i_size > (sizeof( WAVEFORMATEX ) + UINT16_MAX ) ) { - msg_Err( p_demux, "invalid 'fmt ' chunk" ); + msg_Err( p_demux, "invalid 'fmt ' chunk of size %" PRIu32, i_size ); goto error; }
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/macosx/UI/VLCMainVideoView.xib -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/macosx/UI/VLCMainVideoView.xib
Changed
@@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="24112" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> <dependencies> <deployment version="101000" identifier="macosx"/> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="24112"/> <capability name="Image references" minToolsVersion="12.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> @@ -44,12 +44,10 @@ <outlet property="floatOnTopButton" destination="8jZ-hd-YVq" id="x53-4o-LsM"/> <outlet property="forwardButton" destination="sF5-Z0-bef" id="H6w-Le-NAK"/> <outlet property="fullscreenButton" destination="dYZ-ri-Kra" id="Cw2-BS-QG9"/> - <outlet property="fullscreenButtonWidthConstraint" destination="quS-fD-Od7" id="6hT-nR-yQI"/> <outlet property="jumpBackwardButton" destination="AXA-01-AU8" id="gfa-Yt-ezI"/> <outlet property="jumpForwardButton" destination="aAq-uE-mLW" id="M7n-mW-tNe"/> <outlet property="muteVolumeButton" destination="afi-4d-rQk" id="y6R-6o-2OM"/> <outlet property="pipButton" destination="yEi-SZ-SIS" id="vFi-Ln-9lT"/> - <outlet property="pipButtonWidthConstraint" destination="dxa-Jx-T4p" id="a5S-ec-2xD"/> <outlet property="playButton" destination="PCC-8a-sVF" id="ddT-ZM-Jhz"/> <outlet property="playbackRateButton" destination="GHq-pt-nIe" id="k0k-fd-Vz5"/> <outlet property="playingItemDisplayField" destination="lEW-MN-FFU" id="hKa-df-8UB"/> @@ -62,14 +60,14 @@ </connections> </customObject> <customView appearanceType="darkAqua" id="WRu-Ic-lQK"> - <rect key="frame" x="0.0" y="0.0" width="720" height="480"/> + <rect key="frame" x="0.0" y="0.0" width="749" height="480"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <subviews> <customView translatesAutoresizingMaskIntoConstraints="NO" id="MTR-ds-I8o" userLabel="Vout Containing View"> - <rect key="frame" x="0.0" y="0.0" width="720" height="480"/> + <rect key="frame" x="0.0" y="0.0" width="749" height="480"/> <subviews> <customView translatesAutoresizingMaskIntoConstraints="NO" id="mAS-4a-RS8" customClass="VLCVoutView"> - <rect key="frame" x="0.0" y="0.0" width="720" height="480"/> + <rect key="frame" x="0.0" y="0.0" width="749" height="480"/> </customView> </subviews> <constraints> @@ -80,25 +78,25 @@ </constraints> </customView> <box appearanceType="darkAqua" boxType="custom" borderType="none" title="Box" titlePosition="noTitle" transparent="YES" translatesAutoresizingMaskIntoConstraints="NO" id="D4V-Zd-qvB"> - <rect key="frame" x="0.0" y="0.0" width="720" height="480"/> + <rect key="frame" x="0.0" y="0.0" width="749" height="480"/> <view key="contentView" wantsLayer="YES" id="1tI-8K-e3c"> - <rect key="frame" x="0.0" y="0.0" width="720" height="480"/> + <rect key="frame" x="0.0" y="0.0" width="749" height="480"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <visualEffectView blendingMode="withinWindow" material="titlebar" state="followsWindowActiveState" translatesAutoresizingMaskIntoConstraints="NO" id="jnw-gL-nrF"> - <rect key="frame" x="0.0" y="480" width="720" height="0.0"/> + <rect key="frame" x="0.0" y="480" width="749" height="0.0"/> <constraints> <constraint firstAttribute="height" id="wY4-If-nIp"/> </constraints> </visualEffectView> <customView translatesAutoresizingMaskIntoConstraints="NO" id="FGS-tq-54S" customClass="VLCMainVideoViewOverlayView"> - <rect key="frame" x="0.0" y="0.0" width="720" height="480"/> + <rect key="frame" x="0.0" y="0.0" width="749" height="480"/> </customView> <customView translatesAutoresizingMaskIntoConstraints="NO" id="1GA-GG-Sdx"> - <rect key="frame" x="0.0" y="0.0" width="720" height="132"/> + <rect key="frame" x="0.0" y="0.0" width="749" height="132"/> <subviews> <textField wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="f4v-2z-dQ1" customClass="VLCTimeField"> - <rect key="frame" x="623" y="20" width="79" height="14"/> + <rect key="frame" x="652" y="20" width="79" height="14"/> <constraints> <constraint firstAttribute="width" constant="75" id="8Zz-X6-yY1"/> </constraints> @@ -109,17 +107,17 @@ </textFieldCell> </textField> <stackView distribution="fill" orientation="vertical" alignment="leading" spacing="4" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="San-L7-ZvB"> - <rect key="frame" x="20" y="59" width="234" height="53"/> + <rect key="frame" x="20" y="59" width="167" height="53"/> <subviews> <textField wantsLayer="YES" focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="lEW-MN-FFU"> - <rect key="frame" x="-2" y="25" width="238" height="28"/> + <rect key="frame" x="-2" y="25" width="171" height="28"/> <textFieldCell key="cell" controlSize="small" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" placeholderString="Nothing Playing" usesSingleLineMode="YES" id="8l0-zS-fOa"> <font key="font" metaFont="systemBold" size="24"/> <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> - <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5ii-yU-6Zp"> + <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5ii-yU-6Zp"> <rect key="frame" x="-2" y="0.0" width="145" height="21"/> <textFieldCell key="cell" controlSize="small" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" placeholderString="No details to show" usesSingleLineMode="YES" id="k9I-DK-CEe"> <font key="font" textStyle="title2" name=".SFNS-Regular"/> @@ -142,7 +140,7 @@ </customSpacing> </stackView> <slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qNZ-Fh-W8i" customClass="VLCPlaybackProgressSlider"> - <rect key="frame" x="18" y="37" width="684" height="19"/> + <rect key="frame" x="20" y="39" width="709" height="15"/> <constraints> <constraint firstAttribute="height" constant="15" id="xm6-li-LpC"/> </constraints> @@ -151,127 +149,102 @@ <action selector="timeSliderAction:" target="3" id="W32-wA-rN9"/> </connections> </slider> - <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="10" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sJu-ZK-5QH"> - <rect key="frame" x="274" y="59" width="426" height="32"/> + <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="10" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="1000" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sJu-ZK-5QH"> + <rect key="frame" x="207" y="59" width="522" height="28"/> <subviews> - <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Y8F-hr-iaW"> - <rect key="frame" x="0.0" y="0.0" width="299" height="32"/> + <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="1000" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Y8F-hr-iaW"> + <rect key="frame" x="0.0" y="0.0" width="399" height="28"/> <subviews> - <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GHq-pt-nIe" customClass="VLCImageButton"> - <rect key="frame" x="0.0" y="1" width="40" height="29"/> - <buttonCell key="cell" type="recessed" title="1.0x" bezelStyle="recessed" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="pUr-pW-j5a"> + <button wantsLayer="YES" horizontalHuggingPriority="500" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GHq-pt-nIe" customClass="VLCImageButton"> + <rect key="frame" x="0.0" y="0.0" width="49" height="28"/> + <buttonCell key="cell" type="recessed" title="1.0x" bezelStyle="recessed" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="pUr-pW-j5a"> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/> - <font key="font" metaFont="smallSystem"/> + <font key="font" metaFont="systemBold" size="12"/> </buttonCell> - <constraints> - <constraint firstAttribute="width" constant="40" id="Nvo-dk-KyW"/> - </constraints> <connections> <action selector="openPlaybackRate:" target="3" id="tLQ-DO-783"/> </connections> </button> - <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="95O-Oc-zrQ" customClass="VLCImageButton"> - <rect key="frame" x="45" y="-1" width="32" height="33"/> - <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="photo.tv" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="dnH-S4-sBc"> + <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="95O-Oc-zrQ" customClass="VLCImageButton"> + <rect key="frame" x="54" y="0.0" width="47" height="28"/> + <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="photo.tv" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="dnH-S4-sBc"> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/> <font key="font" metaFont="system"/> </buttonCell> - <constraints> - <constraint firstAttribute="width" secondItem="95O-Oc-zrQ" secondAttribute="height" multiplier="1:1" id="jod-n4-Mmj"/> - <constraint firstAttribute="width" secondItem="95O-Oc-zrQ" secondAttribute="height" multiplier="1:1" id="mpK-z1-1hE"/> - <constraint firstAttribute="width" constant="32" id="u03-Cv-8L6"/> - </constraints> <connections> <action selector="openVideoMenu:" target="3" id="pOh-qk-4IK"/> </connections> </button> - <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cja-ZG-8LF" customClass="VLCImageButton"> - <rect key="frame" x="82" y="-1" width="32" height="33"/> - <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="waveform.circle" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="5em-Cm-yoF"> + <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="cja-ZG-8LF" customClass="VLCImageButton"> + <rect key="frame" x="106" y="0.0" width="43" height="28"/> + <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="waveform" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5em-Cm-yoF"> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/> <font key="font" metaFont="system"/> </buttonCell> - <constraints> - <constraint firstAttribute="width" secondItem="cja-ZG-8LF" secondAttribute="height" multiplier="1:1" id="Hc7-cx-AiL"/> - <constraint firstAttribute="width" constant="32" id="NiS-Cd-FWu"/> - </constraints> <connections> <action selector="openAudioMenu:" target="3" id="hHT-Oc-wgF"/> </connections> </button> - <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="YTl-LZ-WDe" customClass="VLCImageButton"> - <rect key="frame" x="119" y="-1" width="32" height="33"/> - <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="text.bubble" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="1qF-LY-LkO"> + <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="YTl-LZ-WDe" customClass="VLCImageButton"> + <rect key="frame" x="154" y="0.0" width="45" height="28"/> + <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="text.bubble" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="1qF-LY-LkO"> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/> <font key="font" metaFont="system"/> </buttonCell> - <constraints> - <constraint firstAttribute="width" secondItem="YTl-LZ-WDe" secondAttribute="height" multiplier="1:1" id="2QI-lH-hlk"/> - <constraint firstAttribute="width" constant="32" id="lX6-ad-1gX"/> - <constraint firstAttribute="width" secondItem="YTl-LZ-WDe" secondAttribute="height" multiplier="1:1" id="vzf-FG-VLf"/> - </constraints> <connections> <action selector="openSubtitlesMenu:" target="3" id="X6e-aG-mVF"/> </connections> </button> - <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4tZ-52-1q9" customClass="VLCImageButton"> - <rect key="frame" x="156" y="-1" width="32" height="33"/> - <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="bookmark.circle" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyUpOrDown" inset="2" id="bGc-fn-jgQ"> + <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="4tZ-52-1q9" customClass="VLCImageButton"> + <rect key="frame" x="204" y="0.0" width="42" height="28"/> + <buttonCell key="cell" type="recessed" bezelStyle="recessed" image="bookmark.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="bGc-fn-jgQ"> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/> <font key="font" metaFont="system"/> </buttonCell> - <constraints> - <constraint firstAttribute="width" secondItem="4tZ-52-1q9" secondAttribute="height" multiplier="1:1" id="UdU-aK-B0s"/> - <constraint firstAttribute="width" constant="32" id="oY2-hp-RHB"/>
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
Changed
@@ -125,6 +125,21 @@ _videoImageViewAspectRatioConstraint.priority = NSLayoutPriorityRequired; _videoImageViewAspectRatioConstraint.active = NO; + if (@available(macOS 26.0, *)) { +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000 + self.playInstantlyButton.bordered = YES; + self.playInstantlyButton.bezelStyle = NSBezelStyleGlass; + self.playInstantlyButton.borderShape = NSControlBorderShapeCircle; + self.playInstantlyButton.image = NSImage imageWithSystemSymbolName:@"play.fill" accessibilityDescription:nil; + self.playInstantlyButton.imageScaling = NSImageScaleProportionallyUpOrDown; + self.playInstantlyButton.controlSize = NSControlSizeExtraLarge; + NSLayoutConstraint activateConstraints:@ + self.playInstantlyButton.widthAnchor constraintEqualToConstant:VLCLibraryUIUnits.mediumPlaybackControlButtonSize, + self.playInstantlyButton.heightAnchor constraintEqualToConstant:VLCLibraryUIUnits.mediumPlaybackControlButtonSize, + ; +#endif + } + (VLCTrackingView *)self.view setViewToHide:self.playInstantlyButton; self.secondaryInfoTextField.textColor = NSColor.VLClibrarySubtitleColor; self.annotationTextField.font = NSFont.VLCLibraryItemAnnotationFont;
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/macosx/library/VLCLibraryTableCellView.m -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/macosx/library/VLCLibraryTableCellView.m
Changed
@@ -32,6 +32,7 @@ #import "library/VLCLibraryImageCache.h" #import "library/VLCLibraryModel.h" #import "library/VLCLibraryRepresentedItem.h" +#import "library/VLCLibraryUIUnits.h" #import "library/video-library/VLCLibraryVideoGroupDescriptor.h" @@ -56,6 +57,17 @@ - (void)awakeFromNib { self prepareForReuse; + + if (@available(macOS 26.0, *)) { +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000 + self.playInstantlyButton.bordered = YES; + self.playInstantlyButton.bezelStyle = NSBezelStyleGlass; + self.playInstantlyButton.borderShape = NSControlBorderShapeCircle; + self.playInstantlyButton.image = NSImage imageWithSystemSymbolName:@"play.fill" accessibilityDescription:nil; + self.playInstantlyButton.imageScaling = NSImageScaleProportionallyUpOrDown; + self.playInstantlyButton.controlSize = NSControlSizeExtraLarge; +#endif + } } - (void)prepareForReuse
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/macosx/library/audio-library/VLCLibraryAlbumTableCellView.m -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/macosx/library/audio-library/VLCLibraryAlbumTableCellView.m
Changed
@@ -144,6 +144,21 @@ self.genreNameTextButton.action = @selector(secondaryDetailAction:); self.trackingView.viewToHide = self.playInstantlyButton; + if (@available(macOS 26.0, *)) { +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000 + self.playInstantlyButton.bordered = YES; + self.playInstantlyButton.bezelStyle = NSBezelStyleGlass; + self.playInstantlyButton.borderShape = NSControlBorderShapeCircle; + self.playInstantlyButton.image = NSImage imageWithSystemSymbolName:@"play.fill" accessibilityDescription:nil; + self.playInstantlyButton.imageScaling = NSImageScaleProportionallyUpOrDown; + self.playInstantlyButton.controlSize = NSControlSizeExtraLarge; + NSLayoutConstraint activateConstraints:@ + self.playInstantlyButton.widthAnchor constraintEqualToConstant:VLCLibraryUIUnits.mediumPlaybackControlButtonSize, + self.playInstantlyButton.heightAnchor constraintEqualToConstant:VLCLibraryUIUnits.mediumPlaybackControlButtonSize, + ; +#endif + } + if (@available(macOS 10.14, *)) { self.artistNameTextButton.contentTintColor = NSColor.VLCAccentColor; self.genreNameTextButton.contentTintColor = NSColor.secondaryLabelColor;
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.m -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/macosx/library/media-source/VLCMediaSourceCollectionViewItem.m
Changed
@@ -30,6 +30,7 @@ #import "library/VLCInputItem.h" #import "library/VLCLibraryMenuController.h" #import "library/VLCLibraryImageCache.h" +#import "library/VLCLibraryUIUnits.h" #import "library/media-source/VLCMediaSourceDataSource.h" @@ -68,6 +69,21 @@ self.annotationTextField.backgroundColor = NSColor.VLClibraryAnnotationBackgroundColor; self.highlightBox.borderColor = NSColor.VLCAccentColor; + if (@available(macOS 26.0, *)) { +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000 + self.playInstantlyButton.bordered = YES; + self.playInstantlyButton.bezelStyle = NSBezelStyleGlass; + self.playInstantlyButton.borderShape = NSControlBorderShapeCircle; + self.playInstantlyButton.image = NSImage imageWithSystemSymbolName:@"play.fill" accessibilityDescription:nil; + self.playInstantlyButton.imageScaling = NSImageScaleProportionallyUpOrDown; + self.playInstantlyButton.controlSize = NSControlSizeExtraLarge; + NSLayoutConstraint activateConstraints:@ + self.playInstantlyButton.widthAnchor constraintEqualToConstant:VLCLibraryUIUnits.mediumPlaybackControlButtonSize, + self.playInstantlyButton.heightAnchor constraintEqualToConstant:VLCLibraryUIUnits.mediumPlaybackControlButtonSize, + ; +#endif + } + if (@available(macOS 10.14, *)) { NSApplication.sharedApplication addObserver:self forKeyPath:@"effectiveAppearance"
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.h -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.h
Changed
@@ -89,4 +89,7 @@ - (void)updateMuteVolumeButton:(NSNotification *)aNotification; - (void)updateCurrentItemDisplayControls:(NSNotification *)aNotification; +- (void)playerStateUpdated:(NSNotification *)notification; +- (void)updateCurrentItemDisplayControls:(NSNotification *)notification; + @end
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m
Changed
@@ -144,18 +144,23 @@ self.fullscreenButton.accessibilityLabel = self.fullscreenButton.toolTip; if (@available(macOS 11.0, *)) { - _playImage = NSImage imageWithSystemSymbolName:@"play.circle.fill" - accessibilityDescription:_NS("Play"); - _pressedPlayImage = NSImage imageWithSystemSymbolName:@"play.circle.fill" - accessibilityDescription:_NS("Play"); - _pauseImage = NSImage imageWithSystemSymbolName:@"pause.circle.fill" - accessibilityDescription:_NS("Pause"); - _pressedPauseImage = NSImage imageWithSystemSymbolName:@"pause.circle.fill" - accessibilityDescription:_NS("Pause"); - _backwardImage = NSImage imageWithSystemSymbolName:@"backward.fill" - accessibilityDescription:_NS("Previous"); - _forwardImage = NSImage imageWithSystemSymbolName:@"forward.fill" - accessibilityDescription:_NS("Next"); + if (@available(macOS 26.0, *)) { + _playImage = NSImage imageWithSystemSymbolName:@"play.fill" accessibilityDescription:_NS("Play"); + _pressedPlayImage = NSImage imageWithSystemSymbolName:@"play.fill" accessibilityDescription:_NS("Play"); + _pauseImage = NSImage imageWithSystemSymbolName:@"pause.fill" accessibilityDescription:_NS("Pause"); + _pressedPauseImage = NSImage imageWithSystemSymbolName:@"pause.fill" accessibilityDescription:_NS("Pause"); + } else { + _playImage = NSImage imageWithSystemSymbolName:@"play.circle.fill" + accessibilityDescription:_NS("Play"); + _pressedPlayImage = NSImage imageWithSystemSymbolName:@"play.circle.fill" + accessibilityDescription:_NS("Play"); + _pauseImage = NSImage imageWithSystemSymbolName:@"pause.circle.fill" + accessibilityDescription:_NS("Pause"); + _pressedPauseImage = NSImage imageWithSystemSymbolName:@"pause.circle.fill" + accessibilityDescription:_NS("Pause"); + } + _backwardImage = NSImage imageWithSystemSymbolName:@"backward.fill" accessibilityDescription:_NS("Previous"); + _forwardImage = NSImage imageWithSystemSymbolName:@"forward.fill" accessibilityDescription:_NS("Next"); _fullscreenImage = NSImage imageWithSystemSymbolName:@"arrow.up.backward.and.arrow.down.forward" accessibilityDescription:_NS("Fullscreen"); _mutedVolumeImage = NSImage imageWithSystemSymbolName:@"speaker.slash.fill" @@ -246,8 +251,6 @@ self.forwardButton setAction:@selector(fwd:); self.backwardButton setAction:@selector(bwd:); - self playerStateUpdated:nil; - self.artworkImageView.cropsImagesToRoundedCorners = YES; self.artworkImageView.image = NSImage imageNamed:@"noart"; self.artworkImageView.contentGravity = VLCImageViewContentGravityResize; @@ -414,6 +417,7 @@ self updateMuteVolumeButtonImage; self updatePlaybackControls:nil; self updateCurrentItemDisplayControls:nil; + self playerStateUpdated:nil; } - (void)updateTimeSlider:(NSNotification *)aNotification;
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.m -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/macosx/windows/controlsbar/VLCMainVideoViewControlsBar.m
Changed
@@ -44,6 +44,9 @@ VLCPlayQueueController *_playQueueController; VLCPlayerController *_playerController; } + +@property (readonly) NSImageSymbolConfiguration *mainButtonsSymbolConfig API_AVAILABLE(macos(26.0)); + @end @implementation VLCMainVideoViewControlsBar @@ -52,14 +55,14 @@ { super awakeFromNib; - _bookmarksButton.toolTip = _NS("Bookmarks"); - _bookmarksButton.accessibilityLabel = _bookmarksButton.toolTip; + self.bookmarksButton.toolTip = _NS("Bookmarks"); + self.bookmarksButton.accessibilityLabel = self.bookmarksButton.toolTip; - _subtitlesButton.toolTip = _NS("Subtitle settings"); - _subtitlesButton.accessibilityLabel = _subtitlesButton.toolTip; + self.subtitlesButton.toolTip = _NS("Subtitle settings"); + self.subtitlesButton.accessibilityLabel = self.subtitlesButton.toolTip; - _audioButton.toolTip = _NS("Audio settings"); - _audioButton.accessibilityLabel = _audioButton.toolTip; + self.audioButton.toolTip = _NS("Audio settings"); + self.audioButton.accessibilityLabel = self.audioButton.toolTip; self.videoButton.toolTip = _NS("Video settings"); self.videoButton.accessibilityLabel = self.videoButton.toolTip; @@ -67,6 +70,36 @@ self.playbackRateButton.toolTip = _NS("Playback rate"); self.playbackRateButton.accessibilityLabel = self.playbackRateButton.toolTip; + if (@available(macOS 26.0, *)) { +#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 260000 + _mainButtonsSymbolConfig = NSImageSymbolConfiguration configurationWithPaletteColors:@NSColor.whiteColor; + NSArray<NSButton *> * const buttons = @ + self.playButton, + self.backwardButton, + self.forwardButton, + self.jumpBackwardButton, + self.jumpForwardButton, + self.bookmarksButton, + self.subtitlesButton, + self.audioButton, + self.videoButton, + self.fullscreenButton, + self.floatOnTopButton, + self.playbackRateButton, + self.pipButton, + self.muteVolumeButton, + ; + for (NSButton * const button in buttons) { + button.bordered = YES; + button.borderShape = NSControlBorderShapeCapsule; + button.bezelStyle = NSBezelStyleGlass; + button.layer = CALayer layer; + button.image = button.image imageWithSymbolConfiguration:_mainButtonsSymbolConfig; + button.alternateImage = button.alternateImage imageWithSymbolConfiguration:_mainButtonsSymbolConfig; + } +#endif + } + _playQueueController = VLCMain.sharedInstance.playQueueController; _playerController = _playQueueController.playerController; @@ -145,6 +178,13 @@ self.playbackRateButton.title = NSString stringWithFormat:@"%.1fx", _playerController.playbackRate; self.playbackRateButton.enabled = _playerController.rateChangable; + + if (@available(macOS 26.0, *)) { + NSMutableAttributedString * const colorTitle = NSMutableAttributedString alloc initWithAttributedString:self.playbackRateButton.attributedTitle; + const NSRange titleRange = NSMakeRange(0, colorTitle.length); + colorTitle addAttribute:NSForegroundColorAttributeName value:NSColor.whiteColor range:titleRange; + self.playbackRateButton.attributedTitle = colorTitle; + } } - (IBAction)openPlaybackRate:(id)sender @@ -230,4 +270,42 @@ self.subtitlesButton.hidden = currentItemIsAudio; } +- (void)playerStateUpdated:(NSNotification *)notification +{ + super playerStateUpdated:notification; + if (@available(macOS 26.0, *)) { + if (self.mainButtonsSymbolConfig == nil) + return; + self.playButton.image = self.playButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + self.playButton.alternateImage = self.playButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + } +} + +- (void)updateCurrentItemDisplayControls:(NSNotification *)notification +{ + super updateCurrentItemDisplayControls:notification; + if (@available(macOS 26.0, *)) { + if (self.mainButtonsSymbolConfig == nil) + return; + self.forwardButton.image = self.forwardButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + self.forwardButton.alternateImage = self.forwardButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + self.backwardButton.image = self.backwardButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + self.backwardButton.alternateImage = self.backwardButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + self.jumpForwardButton.image = self.jumpForwardButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + self.jumpForwardButton.alternateImage = self.jumpForwardButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + self.jumpBackwardButton.image = self.jumpBackwardButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + self.jumpBackwardButton.alternateImage = self.jumpBackwardButton.alternateImage imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + } +} + +- (void)updateMuteVolumeButtonImage +{ + super updateMuteVolumeButtonImage; + if (@available(macOS 26.0, *)) { + if (self.mainButtonsSymbolConfig == nil) + return; + self.muteVolumeButton.image = self.muteVolumeButton.image imageWithSymbolConfiguration:self.mainButtonsSymbolConfig; + } +} + @end
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/qt/medialibrary/qml/ArtistTopBanner.qml -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/qt/medialibrary/qml/ArtistTopBanner.qml
Changed
@@ -205,6 +205,8 @@ //we probably want to keep this button like the other action buttons colorContext.palette: VLCStyle.palette + showText: actionButtons.width > VLCStyle.colWidth(2) + onClicked: MediaLib.addAndPlay( artist.id ) } @@ -213,6 +215,8 @@ iconTxt: VLCIcons.enqueue text: qsTr("Enqueue all") onClicked: MediaLib.addToPlaylist( artist.id ) + + showText: actionButtons.width > VLCStyle.colWidth(2) } } }
View file
_service:obs_scm:vlc-beta-20250813.d99784206.obscpio/modules/gui/qt/widgets/qml/ButtonExt.qml -> _service:obs_scm:vlc-beta-20250815.560134941.obscpio/modules/gui/qt/widgets/qml/ButtonExt.qml
Changed
@@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (C) 2019 VLC authors and VideoLAN + * Copyright (C) 2025 VLC authors and VideoLAN * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,7 +31,10 @@ // Properties - property bool selected: false + property bool showText: (text.length > 0) + + property bool selected: false // WARNING: This property is deprecated. Use `checked` instead. + checked: selected property bool busy: false @@ -46,7 +49,7 @@ property bool extBackgroundAnimation: false // Aliases - property alias iconRotation: icon.rotation + property real iconRotation // Settings @@ -71,6 +74,14 @@ Accessible.onPressAction: control.clicked() + // Tooltip + + T.ToolTip.visible: (T.ToolTip.text && (!showText || label.implicitWidth > label.width) && (hovered || visualFocus)) + + T.ToolTip.delay: VLCStyle.delayToolTipAppear + + T.ToolTip.text: text + // Childs @@ -78,100 +89,103 @@ id: theme colorSet: ColorContext.ButtonStandard - focused: control.activeFocus + focused: control.visualFocus hovered: control.hovered enabled: control.enabled pressed: control.down } background: Widgets.AnimatedBackground { - id: background - - height: control.height - width: control.width - enabled: theme.initialized && !control.extBackgroundAnimation color: theme.bg.primary - border.color: control.visualFocus ? control.colorFocus : theme.border - } + border.color: control.visualFocus ? control.colorFocus + : (theme.border.a > 0.0 ? theme.border : color) - contentItem: Item { - implicitWidth: tabRow.implicitWidth - implicitHeight: tabRow.implicitHeight + Rectangle { + anchors { + bottom: parent.bottom + bottomMargin: VLCStyle.margin_xxxsmall + horizontalCenter: parent.horizontalCenter + } - RowLayout { - id: tabRow + implicitWidth: (parent.width - VLCStyle.margin_xsmall) + implicitHeight: VLCStyle.heightBar_xxxsmall - anchors.fill: parent + width: control.contentItem?.implicitWidth ?? implicitWidth - spacing: control.spacing + visible: (width > 0 && control.checked) + } + } - Item { - Layout.fillHeight: true + contentItem: RowLayout { + spacing: 0 - implicitWidth: VLCStyle.fontHeight_normal - implicitHeight: VLCStyle.fontHeight_normal + Item { + Layout.fillWidth: true + } - visible: (control.iconTxt !== "") || control.busy + Widgets.IconLabel { + id: iconLabel - Widgets.IconLabel { - id: icon + visible: text.length > 0 - anchors.fill: parent + rotation: control.iconRotation - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + text: control.iconTxt - visible: (!control.busy) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter - text: control.iconTxt + color: Qt.alpha(control.color, control.busy ? 0.0 : 1.0) - color: control.color + font.pixelSize: control.iconSize - font.pixelSize: control.iconSize - } + Layout.fillWidth: !label.visible + Layout.fillHeight: true - // FIXME: use Control.Templates - BusyIndicator { - anchors.fill: parent + // FIXME: use `BusyIndicatorExt` when it is ready (!7180) + BusyIndicator { + anchors.fill: parent - padding: 0 + padding: 0 - running: control.busy + running: control.busy - palette.text: theme.fg.primary - } + palette.text: control.color + palette.dark: control.color } + } - Widgets.ListLabel { - Layout.fillWidth: true - Layout.fillHeight: true + T.Label { + id: label - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + visible: control.showText - text: control.text + text: control.text - //button text is already exposed - Accessible.ignored: true + verticalAlignment: Text.AlignVCenter - color: theme.fg.primary - } - } + color: control.color - Rectangle { - anchors.left: tabRow.left - anchors.right: tabRow.right - anchors.bottom: tabRow.bottom + elide: Text.ElideRight - height: 2 + font.pixelSize: VLCStyle.fontSize_normal + font.weight: Font.DemiBold - visible: control.selected + textFormat: Text.PlainText - color: "transparent" + //button text is already exposed + Accessible.ignored: true + + Layout.fillWidth: true + Layout.fillHeight: true + Layout.maximumWidth: implicitWidth + 1 + Layout.leftMargin: iconLabel.visible ? VLCStyle.margin_xsmall : 0 + } - border.color: theme.accent + Item { + Layout.fillWidth: true
View file
_service:obs_scm:vlc-beta.obsinfo
Changed
@@ -1,4 +1,4 @@ name: vlc-beta -version: 20250813.d99784206 -mtime: 1755063886 -commit: d997842067977caa4c54d5c7c9c3f0e72061f330 +version: 20250815.560134941 +mtime: 1755267861 +commit: 560134941dfcd56b060d96f082eab5d6e5f4c25d
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.