Modified by: dyek real.com
Date: 8/29/2007
Project: RealPlayer
Synopsis: Made Superbuffer widget subclass from GtkWidget.
Overview:
This is HXSuperbufHScale version 2, which is a
"reimplemented"
Superbuffer slider subclassed from GtkWidget base class,
instead of the former GtkHScale/GtkScale/GtkRange base
classes.
One reason for this "rework" is that GtkRange is
very limiting with
numerous pieces of layout functions and information made
private,
preventing reuse.
One other option was to include the LGPL GtkRange source
code in
an open source Helix subproject, which requires special
handling
of tricky licensing issues.
This checkin eliminated the use of
GtkHScale/GtkScale/GtkRange
and subclassed from GtkWidget, which is "installed on
the system."
This enables us to license this under RPSL, RCSL, besides
GPL.
As pointer clicks and motion need to be handled already when
subclassing from GtkWidget, more custom mouse support can be
implemented quite easily.
It feels more naturally implementing all functionality
based
on top of GtkWidget.
This HXSuperbufHScale widget features
click-on-trough-and-drag for
both mouse button 1 and 2 -- paging up and down when clicked
on
trough isn't desired; button 2 is designed to be identical
to
button 1 because that is how GtkRange button 2 behaves.
Button 3 can drag if clicked on the slider (thumb) itself.
During dragging and before letting go (release the mouse
button),
the user can change his/her mind, press ESC and the slider
would
snap back (restored) to the position before the drag was
started.
Playback should then resume from where it was before being
interrupted.
Mouse wheel scrolling is supported by this Superbuffer
widget too;
As well as the HOME and END keys.
If used in situation with allocated area smaller than the
widget's
natural size, preferential clipping is included to keep the
through,
then slider (upper) label, end labels, and at the bottom,
the border.
The right end label would "go above" the start
label and arrow as
spec-ed.
This checkin only address the most important integration
issues
with the player. There are more work to do to make sure that
the
Superbuffer widget's functionality works well as a whole in
the
player.
Files Modified:
player/app/gtk/superbufhscale.c - New superbuffer widget.
player/app/gtk/superbufhscale.h
player/app/gtk/hxstatuspositionslider.cpp
player/installer/archive/make_tempdir - copy
sliders.png.
Files Added:
player/app/gtk/res/superbuffer/sliders.png
Image Size and Heap Use impact (Client -Only):
None.
Platforms and Profiles Affected:
Linux
Distribution Libraries Affected:
None.
Distribution library impact and planned action:
None.
Platforms and Profiles Build Verified:
Profile: helix_client_all_define
Platform: Fedora Core 5
Platforms and Profiles Functionality verified:
Profile: helix_client_all_define
Platform: Fedora Core 5
Branch: HEAD
Copyright assignment: I am a RealNetworks employee.
--
Daniel Yek.
_______________________________________________
Player-dev mailing list
Player-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/play
er-dev
|