On 10/15/13 21:33, Ryan Lortie wrote:
> hi,
> 
> On Tue, Oct 15, 2013, at 15:14, Olivier Brunel wrote:
>> I do not understand, however, why the entire GtkImageMenuItem widget was
>> deprecated, and not just what relates to those options - since using
>> icons in menus remain a very useful thing, and one used by many GTK apps
>> out there. It makes better UI/user experience as it allows to accomplish
>> certain tasks much easier/faster.
>>
>> The commit message mentions using a GIO API, but that's certainly not a
>> "valid" replacement, since this is a completely different API and
>> doesn't get us an actual widget/menuitem we can use in a menu.
>> It looks like now every dev/app needs to re-implement this widget
>> itself!?
> 
> I can give a bit of a background to the reasons here.
> 
> We make the distinction these days between "noun icons" and "verb
> icons".  Noun icons are icons that go alongside menu items that are
> nouns (things like bookmarks, applications in a list, disk devices,
> etc.).  Verb icons are the old stock icons that we used to show beside
> verbs (Save, Quit, Print, etc.).

Thanks for all this. (Even though I can't say that I agree with it, as a
user having icons next to e.g. New/Save/Cut/Paste/Print/Quit/etc is
quite useful actually; It also adds consistency between an action from a
menu item and e.g. a toolbar button, ...)

> 
> Take a look at this page:
> 
>   https://wiki.ubuntu.com/MenuLayout
> 
> and take particular note of these paragraphs:
> 
>   "A menu item should have an icon before its text only where the item
>   represents a dynamic object..."
> 
> and
> 
>   "Any icon that comes before a menu item’s text should be laid out as
>   if it is the beginning of the text..."
> 
> and
> 
>   "In particular, icons of this sort should not go inside the margin..."
> 
> These "dynamic object" icons (that we call noun icons in GLib/Gtk) and
> are the sort of icons created by the GIO API.  This is done in Gtk by
> creating a GtkBox and packing the icon and label into it so you get the
> effect mentioned in the spec above ("laid out as if is is the beginning
> of the text", "not inside the margin").
> 
> GtkImageMenuItem puts its icon in the margin.  We don't ever want noun
> icons to appear here.
> 
> I nearly added gtk_menu_item_set_icon() that would add a noun icon in
> the proper place (ie: not in the margin) but implementing this proved to
> be sort of complicated -- mostly owing to the fact that GtkMenuItem is a
> container that can have arbitrary widgets added to it.  Dealing with all
> of the possible combinations of things that could happen with icons,
> images, labels, boxes and other arbitrary widgets got complicated fast
> and I just gave up.  It was much easier to implement for
> GtkModelMenuItem (which is how we get GMenu displayed in Gtk) because of
> the limited scope and my total control over the widget, so I only did it
> there.
> 
> My thinking was that if you want noun icons, you can use GIO.  If you
> want to continue using GtkImageMenuItem for verb icons (ie: things like
> "Save", "Quit", etc... the old stock icons) then you could do so.  If

Except not really, since its functionality was effectively broken in
3.10 : it doesn't show images anymore.
Sure, one can add one call to set_always_show_images() for each item to
get it back, but that means *a lot* of code that needs to be done *in
every existing app*, only to fix what is indeed broken in 3.10 (since
all that is only to restore the same behavior as with 3.8)

> someone else wanted to add gtk_menu_item_set_icon() and take care of the
> edge cases, we can still do that -- but this API should *only* be used
> for noun icons, not to have an icon beside "Save" and "Quit".
> 
>> Moreover, what's the justification for not only deprecated the while
>> widget, but breaking it - and therefore any & all GTK apps using it - at
>> the same time?
> 
> I don't agree with this having happened.  The deprecation is fine (and I
> think we should drop it completely in Gtk 4) but breaking its
> functionality during a stable cycle is not so cool.

But how is having a widget whose sole purpose (over GtkMenuItem) is to
show an image, and which it still did with 3.8, not show images anymore
in 3.10 isn't breaking things?

> 
> I did what I did (adding support for noun icons) because we wanted to
> use them from GNOME applications and applications written for Ubuntu and
> this is what I was working on.  GNOME is also trying to move over to
> using GMenu so it made sense to add the support for the noun icons
> there.  GNOME turns off "verb icons" by default these days and I think
> that makes sense for GNOME (and indeed, GMenu has no support for verb
> icons).  That said, I still don't agree with (effectively) removing the
> ability to have verb icons for people who still want them.
> 
>> This is a widget that is only used when an icon should be present, since
>> that's the whole purpose of the widget. With GTK 3.10 this behavior, the
>> default/expected behavior since - again - that's the very reason to use
>> this widget, is now broken.
> 
> Note: this widget should only be used for verb icons.  These are no
> longer of interest to GNOME developers, but I agree that others may find
> this desirable...
> 
> Hope this provides some clarification.
> 
> Cheers
> 

_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to