Make link.js into a St.Button, delete unused link imports
It's actually totally unused at the moment, but a future patch will use it. https://bugzilla.gnome.org/show_bug.cgi?id=599661
This commit is contained in:
parent
55fbb9d0af
commit
c0ff0066e6
@ -17,6 +17,15 @@
|
|||||||
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
.shell-link {
|
||||||
|
color: #0000ff;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shell-link:hover {
|
||||||
|
color: #0000e0;
|
||||||
|
}
|
||||||
|
|
||||||
StScrollBar
|
StScrollBar
|
||||||
{
|
{
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
|
@ -14,7 +14,6 @@ const Shell = imports.gi.Shell;
|
|||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
const DND = imports.ui.dnd;
|
const DND = imports.ui.dnd;
|
||||||
const Link = imports.ui.link;
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
const RedisplayFlags = { NONE: 0,
|
const RedisplayFlags = { NONE: 0,
|
||||||
|
@ -3,78 +3,21 @@
|
|||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const Signals = imports.signals;
|
const Signals = imports.signals;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
// Link is a clickable link. Right now it just handles properly capturing
|
|
||||||
// press and release events and short-circuiting the button handling in
|
|
||||||
// ClutterText, but more features like different colors for hover/pressed states
|
|
||||||
// or a different mouse cursor could be implemented.
|
|
||||||
//
|
|
||||||
// The properties passed in are forwarded to the Clutter.Text() constructor,
|
|
||||||
// so can include, 'text', 'font_name', etc.
|
|
||||||
function Link(props) {
|
function Link(props) {
|
||||||
this._init(props);
|
this._init(props);
|
||||||
}
|
}
|
||||||
|
|
||||||
Link.prototype = {
|
Link.prototype = {
|
||||||
_init : function(props) {
|
_init : function(props) {
|
||||||
let realProps = { reactive: true };
|
let realProps = { reactive: true,
|
||||||
|
style_class: 'shell-link' };
|
||||||
// The user can pass in reactive: false to override the above and get
|
// The user can pass in reactive: false to override the above and get
|
||||||
// a non-reactive link (a link to the current page, perhaps)
|
// a non-reactive link (a link to the current page, perhaps)
|
||||||
Lang.copyProperties(props, realProps);
|
Lang.copyProperties(props, realProps);
|
||||||
|
|
||||||
this.actor = new Clutter.Text(realProps);
|
this.actor = new St.Button(realProps);
|
||||||
this.actor._delegate = this;
|
|
||||||
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
|
||||||
this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease));
|
|
||||||
this.actor.connect('enter-event', Lang.bind(this, this._onEnter));
|
|
||||||
this.actor.connect('leave-event', Lang.bind(this, this._onLeave));
|
|
||||||
|
|
||||||
this._buttonDown = false;
|
|
||||||
this._havePointer = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
// Update the text of the link
|
|
||||||
setText : function(text) {
|
|
||||||
this.actor.text = text;
|
|
||||||
},
|
|
||||||
|
|
||||||
// We want to react on buttonDown, but if we override button-release-event for
|
|
||||||
// ClutterText, but not button-press-event, we get a stuck grab. Tracking
|
|
||||||
// buttonDown and doing the grab isn't really necessary, but doing it makes
|
|
||||||
// the behavior perfectly correct if the user clicks on one actor, drags
|
|
||||||
// to another and releases - that should not trigger either actor.
|
|
||||||
_onButtonPress : function(actor, event) {
|
|
||||||
this._buttonDown = true;
|
|
||||||
this._havePointer = true; // Hack to work around poor enter/leave tracking in Clutter
|
|
||||||
Clutter.grab_pointer(actor);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onButtonRelease : function(actor, event) {
|
|
||||||
if (this._buttonDown) {
|
|
||||||
this._buttonDown = false;
|
|
||||||
Clutter.ungrab_pointer(actor);
|
|
||||||
|
|
||||||
if (this._havePointer)
|
|
||||||
this.emit('clicked');
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onEnter : function(actor, event) {
|
|
||||||
if (event.get_source() == actor)
|
|
||||||
this._havePointer = true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onLeave : function(actor, event) {
|
|
||||||
if (event.get_source() == actor)
|
|
||||||
this._havePointer = false;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@ const Lang = imports.lang;
|
|||||||
const AppDisplay = imports.ui.appDisplay;
|
const AppDisplay = imports.ui.appDisplay;
|
||||||
const DocDisplay = imports.ui.docDisplay;
|
const DocDisplay = imports.ui.docDisplay;
|
||||||
const GenericDisplay = imports.ui.genericDisplay;
|
const GenericDisplay = imports.ui.genericDisplay;
|
||||||
const Link = imports.ui.link;
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Panel = imports.ui.panel;
|
const Panel = imports.ui.panel;
|
||||||
const Dash = imports.ui.dash;
|
const Dash = imports.ui.dash;
|
||||||
|
Loading…
Reference in New Issue
Block a user