> On April 30, 2012, 10:19 p.m., David Faure wrote:
> > I am in favour of the idea, since I was hit by this limitation in the past, 
> > too.
> > However I think the API changes should be more conservative, there's no 
> > need to deprecate so many of the existing methods, just because it is 
> > *possible* to define more than 2 shortcuts.
> > 
> > Also, Qt's QAction already has void QAction::setShortcuts(const 
> > QList<QKeySequence> &shortcuts)... remind me why we are not using that? 
> > Because it doesn't know "default shortcut" vs "current shortcut"?
> >

I would love to remind you, but i simply don't know. I took it for granted 
since the current documentation talks about it. The doc above 
http://quickgit.kde.org/index.php?p=kdelibs.git&a=blob&h=d87755435e9131767e63311a8b3edc34adbf87ce&hb=dc217720bd685a30ef7914f09ab8c1e321b92c88&f=kdeui%2Factions%2Fkaction.h
 (line 316)


> On April 30, 2012, 10:19 p.m., David Faure wrote:
> > kdeui/actions/kaction.cpp, line 185
> > <http://git.reviewboard.kde.org/r/104801/diff/1/?file=59740#file59740line185>
> >
> >     This can't possibly be right.
> >     You can deprecate the method, but don't break it.
> >     It should still return the shortcut number 0 or 1, depending on the 
> > type argument.

I don't know about that.
This is how the function looks now (without the patch):

KShortcut KAction::shortcut(ShortcutTypes type) const
{
  Q_ASSERT(type);
 
  if (type == DefaultShortcut) {
      QKeySequence primary = 
property("defaultPrimaryShortcut").value<QKeySequence>();
      QKeySequence secondary = 
property("defaultAlternateShortcut").value<QKeySequence>();
      return KShortcut(primary, secondary);
  }
 
  QKeySequence primary = shortcuts().value(0);
  QKeySequence secondary = shortcuts().value(1);
  return KShortcut(primary, secondary);
}

What it would do if i leave the if in there is:
KShortcut KAction::shortcut(ShortcutTypes type) const
{
  Q_ASSERT(type);
 
  if (type == DefaultShortcut) {
      return KShortcut(shortcuts());
  }
 
  return KShortcut(shortcuts());
}

which is the same as simply returning return KShortcut(shortcuts()); thus 
"ShortcutTypes type" becomes useless.. Or am i missing something here?


> On April 30, 2012, 10:19 p.m., David Faure wrote:
> > kdeui/actions/kaction.h, line 326
> > <http://git.reviewboard.kde.org/r/104801/diff/1/?file=59739#file59739line326>
> >
> >     How does this allow multiple shortcuts per action?
> >     The docu is a bit confusing, for a method that returns only one 
> > shortcut.
> >     
> >     I think you mean this is the convenience method for returning the 
> > primary shortcut, and for other shortcuts, one should use shortcuts().
> >     
> >     In that case, just remove the default value from the deprecated method, 
> > to fix the ambiguity.

Can i remove the default value? Isn't that going to break the API?
As for the name. Yeah, shortcut() returns shortcutS .. it's confusing indeed 
but i don't think i can change that without breaking the API. It's a function 
that seems to be used on quite a few places within KDE.


> On April 30, 2012, 10:19 p.m., David Faure wrote:
> > kdeui/shortcuts/kshortcut.h, line 91
> > <http://git.reviewboard.kde.org/r/104801/diff/1/?file=59741#file59741line91>
> >
> >     I see no reason to deprecate this constructor.
> >     It's just convenience for the two-shortcuts case.
> >

Reverting this change.


> On April 30, 2012, 10:19 p.m., David Faure wrote:
> > kdeui/shortcuts/kshortcut.h, line 101
> > <http://git.reviewboard.kde.org/r/104801/diff/1/?file=59741#file59741line101>
> >
> >     Ditto.

Reverting this change.


> On April 30, 2012, 10:19 p.m., David Faure wrote:
> > kdeui/shortcuts/kshortcut.h, line 139
> > <http://git.reviewboard.kde.org/r/104801/diff/1/?file=59741#file59741line139>
> >
> >     Ditto.

Reverting this change.


> On April 30, 2012, 10:19 p.m., David Faure wrote:
> > kdeui/shortcuts/kshortcut.h, line 145
> > <http://git.reviewboard.kde.org/r/104801/diff/1/?file=59741#file59741line145>
> >
> >     Even this one could stay.

Reverting this change.


> On April 30, 2012, 10:19 p.m., David Faure wrote:
> > kdeui/shortcuts/kshortcut.h, line 205
> > <http://git.reviewboard.kde.org/r/104801/diff/1/?file=59741#file59741line205>
> >
> >     I don't understand why you want to deprecate this one. The argument is 
> > about handling of empty sequences, this is unrelated to "two, or more 
> > shortcuts", isn't it?

Yeah, that was just being over eager. Removed KDE_DEPRECATED and fixed it to 
work with the new internal structure.


- Mark


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/104801/#review13178
-----------------------------------------------------------


On April 30, 2012, 8:59 p.m., Mark Gaiser wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/104801/
> -----------------------------------------------------------
> 
> (Updated April 30, 2012, 8:59 p.m.)
> 
> 
> Review request for kdelibs.
> 
> 
> Description
> -------
> 
> So i was trying to fix this bug: https://bugs.kde.org/show_bug.cgi?id=181531 
> That only asked for one more shortcut. That issue seems to be a little more 
> complicated than it looks. Till this point KActions could only have a 
> "Primary" and a "Alternate" shortcut. 2 in total which is - in some 
> situations - not enough.
> 
> I fixed this by roughly restructuring all of the KShortcut cpp file. The API 
> has remained the same but i would like to deprecate all things that go back 
> to primary/alternate for the KDE 4.x cycle. Remove them for KDE Frameworks.
> 
> I have 2 issues remaining:
> 1. QList<QKeySequence> toList() const;
> 2. KShortcut shortcut() const;
> 
> If i enable those functions the compiler suddenly doesn't know which function 
> to use.. The old ones or the new ones. Some suggestions on how to fix it 
> would be welcome.
> 
> 
> Diffs
> -----
> 
>   kdeui/actions/kaction.h d877554 
>   kdeui/actions/kaction.cpp 309cf82 
>   kdeui/shortcuts/kshortcut.h c720830 
>   kdeui/shortcuts/kshortcut.cpp e307ab0 
> 
> Diff: http://git.reviewboard.kde.org/r/104801/diff/
> 
> 
> Testing
> -------
> 
> I tested this by adding the missing bindings for Dolphin's back/forward and 
> it seems to be working just fine. I can use all available shortcuts.
> 
> 
> Thanks,
> 
> Mark Gaiser
> 
>

Reply via email to