Re: Which function is called when an app is selected in AppDisplay by hitting the return key?



Am 02.10.2012 12:23, schrieb Bazon Bloch:
OK, a new question rises:
How do I recognize this.metaInfo.id is a contact info and not an app?

If it is an app, everything is fine (e.g. this.metaInfo.id.activate() works), but the other case is also needed...
OK, I found it: try and catch of course...
        ....
        try {
            windows = this.metaInfo.id.get_windows();
            ....
        } catch(e) {
            ....
        }
Only an app has windows!



Am 28.09.2012 22:19, schrieb Jasper St. Pierre:
If you're implementing a new search result, the thing that gets passed
to you is whatever object that you return from
getInitialSearchResults/getSubsequentSearchResults.

If you're patching or subclassing AppDisplay, it pushes a ShellApp, so
the thing that gets passed to you is that, from which you can call
launch() or open_new_window() or a bunch of other things.

On Fri, Sep 28, 2012 at 1:31 PM, Bazon Bloch <bazonbloch arcor de> wrote:
OK, I'm a bit further, but unfortunately, only a bit.
I found out which function is called, when the search result is activated by
pressing the return key. It's in
/usr/share/gnome-shell/js/ui/searchDisplay.js in the SearchResult Class the
activate function:

     activate: function() {
         this.provider.activateResult(this.metaInfo.id);
         Main.overview.toggle();
     },

What I would like to have is something like:

     activate: function() {
         if (thisappisoncurrentworkspace) {
                     [activate this app]
         } else {
             [open a new window of this app on this workspace]
         }
         Main.overview.toggle();
     },

I did that before for dash-button-clicks, but there it was easier, as I have
the app object:
(and I didn't found out, what functions that metaInfo object has... ..or
just didn't understood it.)

     .....

     let windows = this.app.get_windows();
     let activeWorkspace = global.screen.get_active_workspace();
     let isoncurrentworkspace=0;

     for (let i = 0; i < windows.length; i++) {
             if (windows[i].get_workspace() == activeWorkspace) {
         isoncurrentworkspace=1;
             }
         }

        .....


         if (isoncurrentworkspace) {
                     this.app.activate();
         } else {
             this.app.open_new_window(-1);
         }
         .......

How can I get the same result with
activate: function() {
         this.provider.activateResult(this.metaInfo.id);
         Main.overview.toggle();
     },
?

Thanks
Bazon



Am 25.09.2012 20:27, schrieb Jasper St. Pierre:
That's because it's a search result. It doesn't activate the button in

that case, it calls activateResult on the search provider.

On Tue, Sep 25, 2012 at 2:24 PM, Bazon Bloch <bazonbloch arcor de> wrote:
Am 25.09.2012 18:01, schrieb Florian Müllner:

The 'button-press' event is only used for the context menu, activation
is handled in response to the 'clicked' event; that event is emitted
when clicking the StButton (click == button-press + button-release
using the same mouse button). Typing Return/Enter while the StButton
has keyboard focus will emulate a click with the left mouse button.

The strange thing is:
There is a difference between left click with mouse and hitting the
return
key! Just as the user calebtom87 reported here
https://extensions.gnome.org/extension/440/workspace-separation-on-dash/
...

If you are interested: Steps to reproduce:

1. Install
https://extensions.gnome.org/extension/440/workspace-separation-on-dash/
(if
you're not running Gnome-Shell 3.4 you can try this version with
increased
compatibility in metadata.json:

https://dl.dropbox.com/u/12168886/gnome-shell/workspace_separation_on_dash%40bazonbloch.arcor.de.zip
)

2. Open e.g. gedit on first workspace

3. Change to second or any other workspace

4. Hit super and start typing "gedit"

5. (a) Click gedit with your mouse. Result: A new instance of gedit is opened on your current workspace, just as overwritten by the "workspace
separation on dash" extension. (in function _onActivate(event))

5. (b) Hit Return while gedit is focussed. Result: You are taken back to
the
opened instance of gedit on the first workspace, so the overwritten
function
in "workspace separation on dash" isn't used.

So my question, in order to fulfill the user request:
What can I do to make case 5(b) like case 5(a)....


thanks
Bazon

_______________________________________________
gnome-shell-list mailing list
gnome-shell-list gnome org
https://mail.gnome.org/mailman/listinfo/gnome-shell-list


_______________________________________________
gnome-shell-list mailing list
gnome-shell-list gnome org
https://mail.gnome.org/mailman/listinfo/gnome-shell-list






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]