[Mono-docs-list] Tab Navigation

Mario Sopena Novales masono1@teleco.upv.es
Thu, 20 Jan 2005 02:32:18 +0100


--=-KDSHJC7HARYfYoj5qqUA
Content-Type: multipart/alternative; boundary="=-83R+7Msif9zsBNdwnOnE"


--=-83R+7Msif9zsBNdwnOnE
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Hi,
    I've returned with my patch to tab navigation. Summarizing
everything:

        * Added Tab feature to Monodoc by adding a new Tab class that
manage everything.
        * Move the related code from Browser to Tab class
        * Delete all the related GUI from browser.glade
        * Add support for ctrl-click, ctrl-pageup and pagedown to add
and move between tabs
        * Tab shows more informative names like "Button: Memebers" or
"Button: Events"
        * Add a CurrentTab variable to acces the GUI of the tab from the
browser class
        * Add an active property in history so only one history (from
all the tabs) responds to the buttons

I've added a ChangeLog with the Patch. If it is too sort (or too long) I
will rewrite it. I had never done one.

Two thing remains:

    * I couldn't add a right-click for new Tab feature. That was because
gtkHtml throws only LinkClicked events when a link is left-clicked. One
idea that I had was to catch ButtonPressEvent from Widget class and when
it was due to a right-click, then, throw a new ButtonPressed with the
same coordinates but faking a left-clicked, so deceiving gtkHtml. But I
couldn't make it. Any ideas?

    * I hold the Active property in history in spite of what Miguel told
me. I think it makes sense there is one active history (from the active
tab at that moment), so it can be tested when Backclicked or
Fordwardclicked are called if that history event is the active and
proceed or return where is not. What is a little confusing is that when
you set a tab active, it makes the fordward or backward buttons active
or not. But I think for that where the properties made, to hold more
processing than setting a variable. Anyways, I thought more solutions,
but no one seemed to me better.

And that is all. Well, Happy new year to everybody (a little late, but
here it is). XD
Mario

--=-83R+7Msif9zsBNdwnOnE
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.2.3">
</HEAD>
<BODY>
Hi,<BR>
&nbsp;&nbsp;&nbsp; I've returned with my patch to tab navigation. Summarizing everything:<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Added Tab feature to Monodoc by adding a new Tab class that manage everything.<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Move the related code from Browser to Tab class<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Delete all the related GUI from browser.glade<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Add support for ctrl-click, ctrl-pageup and pagedown to add and move between tabs<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Tab shows more informative names like <TT>&quot;Button: Memebers&quot; or &quot;Button: Events&quot;</TT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Add a CurrentTab variable to acces the GUI of the tab from the browser class<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Add an active property in history so only one history (from all the tabs) responds to the buttons<BR>
<BR>
I've added a ChangeLog with the Patch. If it is too sort (or too long) I will rewrite it. I had never done one.<BR>
<BR>
Two thing remains:<BR>
<BR>
&nbsp;&nbsp;&nbsp; * I couldn't add a right-click for new Tab feature. That was because gtkHtml throws only LinkClicked events when a link is left-clicked. One idea that I had was to catch ButtonPressEvent from Widget class and when it was due to a right-click, then, throw a new ButtonPressed with the same coordinates but faking a left-clicked, so deceiving gtkHtml. But I couldn't make it. Any ideas?<BR>
<BR>
&nbsp;&nbsp;&nbsp; * I hold the Active property in history in spite of what Miguel told me. I think it makes sense there is one active history (from the active tab at that moment), so it can be tested when Backclicked or Fordwardclicked are called if that history event is the active and proceed or return where is not. What is a little confusing is that when you set a tab active, it makes the fordward or backward buttons active or not. But I think for that where the properties made, to hold more processing than setting a variable. Anyways, I thought more solutions, but no one seemed to me better.<BR>
<BR>
And that is all. Well, Happy new year to everybody (a little late, but here it is). XD<BR>
Mario
</BODY>
</HTML>

--=-83R+7Msif9zsBNdwnOnE--

--=-KDSHJC7HARYfYoj5qqUA
Content-Disposition: attachment; filename=TabsPatch.tar.gz
Content-Type: application/x-compressed-tar; name=TabsPatch.tar.gz
Content-Transfer-Encoding: base64

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
n+WzfJbPc3n+DxFmd00AyAAA


--=-KDSHJC7HARYfYoj5qqUA--