[Sugar-devel] [PATCH Browse] Display only the URL in the URL entry SL #3553

Gary Martin garycmartin at googlemail.com
Thu Sep 27 11:46:06 EDT 2012


Hi Martin,

On 27 Sep 2012, at 15:35, Martin Langhoff <martin.langhoff at gmail.com> wrote:

> If there is concensus that it's better, then it's ok. It was one of
> those things where I liked Browse more than Chrome, but perhaps it's a
> personal quirk.

I don't think I'd explicitly noted the +/- reasons, just tried to make a quick call on the patch/ticket to move things along. So...

Some '+' for the change:

+ editing URLs via touch. Using a mouse cursor, the title reverts to a URL on hover, so you can more easily know where to click to make an edit [1]
+ exposing URLs for touch users. The cursor hover is the only way to expose URLs when browsing (unless tap to editing them)
+ why show the same text twice on the screen (in tab and in the URL location entry), URL plus Title would make better use of the available space
+ seems to be a standard in other Browsers (Chrome, Safari, Firefox, Explorer9) – probably partly a choice for some security reasons

Some '-' against:

- removes some visual re-enforcement of which tab you may currently be looking at (the Tab and location input area won't have the identical text)
- less elegant to see, and less comprehensible. The case that makes me a little uncomfortable is the default, first thing you see OLPC Library case, "file:///home/olpc/.library_pages/index.html".
- exposes some 'inner workings' of the web, dns, file structure – this one could also be in the '+' section ;)
- a change in behaviour

I'm still a +1, just wish the change was more designer 'pretty' ;)

Regards,
--Gary

[1] The touch editing case could be mitigated by having a touch focus initially select the whole URL rather than placing the insertion point as what will at that point be an arbitrary location.

> m
> 
> On Thu, Sep 27, 2012 at 10:33 AM, Gonzalo Odiard <gonzalo at laptop.org> wrote:
>> This change was discussed with Manuq and Gary.
>> I can't find the discussion now.
>> CC both
>> 
>> Gonzalo
>> 
>> On Thu, Sep 27, 2012 at 11:25 AM, Martin Langhoff
>> <martin.langhoff at gmail.com> wrote:
>>> 
>>> Is this really an improvement in behaviour?
>>> 
>>> - The tabs are often too small to show the title.
>>> - The title is more important for the user than the URL. No?
>>> 
>>> cheers,
>>> 
>>> 
>>> m
>>> 
>>> On Mon, Sep 24, 2012 at 5:09 PM, Manuel Kaufmann <humitos at gmail.com>
>>> wrote:
>>>> The Title of the current page is no longer shown in the URL
>>>> entry. Now, it's only shown in the tab and the current URL is visible
>>>> all the time in the URL entry.
>>>> 
>>>> Signed-off-by: Manuel Kaufmann <humitos at gmail.com>
>>>> ---
>>>> browser.py    | 13 +++++++++++++
>>>> webtoolbar.py | 53
>>>> +++++------------------------------------------------
>>>> 2 files changed, 18 insertions(+), 48 deletions(-)
>>>> 
>>>> diff --git a/browser.py b/browser.py
>>>> index de546f2..1c67beb 100644
>>>> --- a/browser.py
>>>> +++ b/browser.py
>>>> @@ -453,6 +453,10 @@ class Browser(WebKit.WebView):
>>>>         # Scale text and graphics:
>>>>         self.set_full_content_zoom(True)
>>>> 
>>>> +        # This property is used to set the title immediatly the user
>>>> +        # presses Enter on the URL Entry
>>>> +        self._loading_uri = None
>>>> +
>>>>         # Reference to the global history and callbacks to handle it:
>>>>         self._global_history = globalhistory.get_global_history()
>>>>         self.connect('notify::load-status',
>>>> self.__load_status_changed_cb)
>>>> @@ -542,6 +546,15 @@ class Browser(WebKit.WebView):
>>>>     def open_new_tab(self, url):
>>>>         self.emit('new-tab', url)
>>>> 
>>>> +    def _set_loading_uri(self, uri):
>>>> +        self._loading_uri = uri
>>>> +
>>>> +    def _get_loading_uri(self):
>>>> +        return self._loading_uri
>>>> +
>>>> +    loading_uri = GObject.property(type=str, setter=_set_loading_uri,
>>>> +                                   getter=_get_loading_uri)
>>>> +
>>>>     def __run_file_chooser(self, browser, request):
>>>>         picker = FilePicker(self)
>>>>         chosen = picker.run()
>>>> diff --git a/webtoolbar.py b/webtoolbar.py
>>>> index 28bc015..1d531bc 100644
>>>> --- a/webtoolbar.py
>>>> +++ b/webtoolbar.py
>>>> @@ -47,7 +47,6 @@ class WebEntry(iconentry.IconEntry):
>>>>         GObject.GObject.__init__(self)
>>>> 
>>>>         self._address = None
>>>> -        self._title = None
>>>>         self._search_view = self._search_create_view()
>>>> 
>>>>         self._search_window = Gtk.Window(type=Gtk.WindowType.POPUP)
>>>> @@ -57,8 +56,6 @@ class WebEntry(iconentry.IconEntry):
>>>>         self.connect('focus-in-event', self.__focus_in_event_cb)
>>>>         self.connect('populate-popup', self.__populate_popup_cb)
>>>>         self.connect('key-press-event', self.__key_press_event_cb)
>>>> -        self.connect('enter-notify-event',
>>>> self.__enter_notify_event_cb)
>>>> -        self.connect('leave-notify-event',
>>>> self.__leave_notify_event_cb)
>>>>         self._focus_out_hid = self.connect(
>>>>                     'focus-out-event', self.__focus_out_event_cb)
>>>>         self._change_hid = self.connect('changed', self.__changed_cb)
>>>> @@ -79,18 +76,11 @@ class WebEntry(iconentry.IconEntry):
>>>> 
>>>>     def _set_address(self, address):
>>>>         self._address = address
>>>> -        if address is not None and self.props.has_focus:
>>>> +        if address is not None:
>>>>             self._set_text(address)
>>>> 
>>>>     address = GObject.property(type=str, setter=_set_address)
>>>> 
>>>> -    def _set_title(self, title):
>>>> -        self._title = title
>>>> -        if title is not None and not self.props.has_focus:
>>>> -            self._set_text(title)
>>>> -
>>>> -    title = GObject.property(type=str, setter=_set_title)
>>>> -
>>>>     def _search_create_view(self):
>>>>         view = Gtk.TreeView()
>>>>         view.props.headers_visible = False
>>>> @@ -146,21 +136,11 @@ class WebEntry(iconentry.IconEntry):
>>>>         self._search_window.hide()
>>>> 
>>>>     def __focus_in_event_cb(self, entry, event):
>>>> -        self._set_text(self._address)
>>>>         self._search_popdown()
>>>> 
>>>>     def __focus_out_event_cb(self, entry, event):
>>>> -        self._set_text(self._title)
>>>>         self._search_popdown()
>>>> 
>>>> -    def __enter_notify_event_cb(self, entry, event):
>>>> -        if not entry.props.has_focus:
>>>> -            self._set_text(self._address)
>>>> -
>>>> -    def __leave_notify_event_cb(self, entry, event):
>>>> -        if not entry.props.has_focus:
>>>> -            self._set_text(self._title)
>>>> -
>>>>     def __view_button_press_event_cb(self, view, event):
>>>>         model = view.get_model()
>>>> 
>>>> @@ -241,7 +221,6 @@ class PrimaryToolbar(ToolbarBase):
>>>>         self._tabbed_view = tabbed_view
>>>> 
>>>>         self._loading = False
>>>> -        self._title = _('Untitled')
>>>> 
>>>>         toolbar = self.toolbar
>>>>         activity_button = ActivityToolbarButton(self._activity)
>>>> @@ -310,7 +289,6 @@ class PrimaryToolbar(ToolbarBase):
>>>>         self._loading_changed_hid = None
>>>>         self._progress_changed_hid = None
>>>>         self._session_history_changed_hid = None
>>>> -        self._title_changed_hid = None
>>>>         self._uri_changed_hid = None
>>>> 
>>>>         if tabbed_view.get_n_pages():
>>>> @@ -324,25 +302,19 @@ class PrimaryToolbar(ToolbarBase):
>>>> 
>>>>     def _connect_to_browser(self, browser):
>>>>         if self._browser is not None:
>>>> -            self._browser.disconnect(self._title_changed_hid)
>>>>             self._browser.disconnect(self._uri_changed_hid)
>>>>             self._browser.disconnect(self._progress_changed_hid)
>>>>             self._browser.disconnect(self._loading_changed_hid)
>>>> 
>>>>         self._browser = browser
>>>> -        if self._browser.props.title:
>>>> -            self._set_title(self._browser.props.title)
>>>> -        else:
>>>> -            self._set_title(_('Untitled'))
>>>> -        self._set_address(self._browser.props.uri)
>>>> +        address = self._browser.props.uri or
>>>> self._browser.props.loading_uri
>>>> +        self._set_address(address)
>>>>         self._set_progress(self._browser.props.progress)
>>>>         self._set_status(self._browser.props.load_status)
>>>> 
>>>>         is_webkit_browser = isinstance(self._browser, Browser)
>>>>         self.entry.props.editable = is_webkit_browser
>>>> 
>>>> -        self._title_changed_hid = self._browser.connect(
>>>> -                'notify::title', self._title_changed_cb)
>>>>         self._uri_changed_hid = self._browser.connect(
>>>>                 'notify::uri', self.__uri_changed_cb)
>>>>         self._progress_changed_hid = self._browser.connect(
>>>> @@ -353,16 +325,6 @@ class PrimaryToolbar(ToolbarBase):
>>>>         self._update_navigation_buttons()
>>>> 
>>>>     def __loading_changed_cb(self, widget, param):
>>>> -        status = widget.get_load_status()
>>>> -        if status == WebKit.LoadStatus.FAILED:
>>>> -            self.entry._set_title(self._title)
>>>> -        elif WebKit.LoadStatus.PROVISIONAL <= status \
>>>> -                < WebKit.LoadStatus.FINISHED:
>>>> -            self.entry._set_title(_('Loading...'))
>>>> -        elif status == WebKit.LoadStatus.FINISHED:
>>>> -            if widget.props.title == None:
>>>> -                self.entry._set_title(_('Untitled'))
>>>> -                self._title = _('Untitled')
>>>>         self._set_status(widget.get_load_status())
>>>> 
>>>>     def __progress_changed_cb(self, widget, param):
>>>> @@ -383,10 +345,6 @@ class PrimaryToolbar(ToolbarBase):
>>>>         else:
>>>>             self.entry.props.address = uri
>>>> 
>>>> -    def _set_title(self, title):
>>>> -        self.entry.props.title = title
>>>> -        self._title = title
>>>> -
>>>>     def _show_stop_icon(self):
>>>>         self.entry.set_icon_from_name(iconentry.ICON_ENTRY_SECONDARY,
>>>>                                       'browse-dialog-cancel')
>>>> @@ -412,6 +370,8 @@ class PrimaryToolbar(ToolbarBase):
>>>>         url = entry.props.text
>>>>         effective_url =
>>>> self._tabbed_view.normalize_or_autosearch_url(url)
>>>>         self._browser.load_uri(effective_url)
>>>> +        self._browser.props.loading_uri = effective_url
>>>> +        self.entry.props.address = effective_url
>>>>         self._browser.grab_focus()
>>>> 
>>>>     def _go_home_cb(self, button):
>>>> @@ -423,9 +383,6 @@ class PrimaryToolbar(ToolbarBase):
>>>>     def _go_forward_cb(self, button):
>>>>         self._browser.go_forward()
>>>> 
>>>> -    def _title_changed_cb(self, widget, param):
>>>> -        self._set_title(widget.get_title())
>>>> -
>>>>     def __uri_changed_cb(self, widget, param):
>>>>         self._set_address(widget.get_uri())
>>>>         self._update_navigation_buttons()
>>>> --
>>>> 1.7.11.4
>>>> 
>>>> _______________________________________________
>>>> Sugar-devel mailing list
>>>> Sugar-devel at lists.sugarlabs.org
>>>> http://lists.sugarlabs.org/listinfo/sugar-devel
>>> 
>>> 
>>> 
>>> --
>>> martin.langhoff at gmail.com
>>> martin at laptop.org -- Software Architect - OLPC
>>> - ask interesting questions
>>> - don't get distracted with shiny stuff  - working code first
>>> - http://wiki.laptop.org/go/User:Martinlanghoff
>>> _______________________________________________
>>> Sugar-devel mailing list
>>> Sugar-devel at lists.sugarlabs.org
>>> http://lists.sugarlabs.org/listinfo/sugar-devel
>> 
>> 
> 
> 
> 
> -- 
> martin.langhoff at gmail.com
> martin at laptop.org -- Software Architect - OLPC
> - ask interesting questions
> - don't get distracted with shiny stuff  - working code first
> - http://wiki.laptop.org/go/User:Martinlanghoff



More information about the Sugar-devel mailing list