On Sun, 01 Sep 2013, Yaroslav Fedevych escribió:

> On Sun, 2013-09-01 at 13:54 +0200, Paul Seelig wrote:
> > The other thing is that WINGs theming is severely limited, if not even
> > simply broken when trying to integrate it with applications using other
> > widget sets like gtk+ and qt. The latter can both be tricked to take on
> > that NeXTish look (while offering at the same time the missing keyboard
> > navigation features) and can even be tricked into accepting theming
> > styles of each other (via gtk-qt-engine and various common themes). It
> > is a pity that WINGs is so stuck with itself.
> 
> Last I have checked, there are no decent NeXT-looking themes which would
> be unified for GTK2, GTK3, and Qt (I'd rather have all my widgets look
> like Motif, but have them all the same for all toolkits. Nah. Can't
> happen.). So, that side is lagging as well.
> 
> On the other hand, I suspect it's far easier to rewrite the tools in GTK
> than add theming to WINGs. Both would take enormous amount of time for
> little gain. though.
> 
> Other than that, I'd rather have proper XRandR support even before
> keyboard navigation. I use wmaker on a laptop, and it's a great pain in
> the butt every time I plug an external display in or out.
> 
> When I plug the display in, I need to restart wmaker to have it
> acknowledge this.
> When I rotate the display, I need to restart wmaker to have it
> acknowledge this.
> When I plug the display out, I need to restart wmaker again – but also
> chase windows that were on the second head and now are out of reach.
> 
> If I ever have a triple-monitor setup, I'm afraid wmaker is going to
> shoot itself. Also, I'm afraid I have no choice about on which head my
> clip and dock are going to land – the clip is always top-left, the dock
> is always top-right. If I have a monitor that tilts 90 degrees and gives
> me 10:16 or 9:16 aspect ratio, I'd prefer the dock on middle bottom.
> 
> I hope that's possible some time before 1.0.

The problem with XRandR is that wmaker loves the screen. All functions uses 
WScreen as argument. That is terrible. When you run an application, the 
application is binded to the current screen, and the icon is binded too to the 
screen. The Dock, the Clip,... so, wmaker needs to restard if the current 
screen changes.

Before turn to XRandR support we must drop the WScreen. WScreen is our enemy. 
But that is very hard, I am wasting my time on it I have 124 patches here to 
try to remove the fucking WScreen, but I am not sure if this is the way. I am 
not sure because I need make all changes first, try that XRandR runs before 
send them. Because If the patches fails, many of them should be dropped.

Things that should change, IMO:

* Menu: The menus are created when the Dock/Clip/Screen/Workspace/... is 
created. And these menus uses the WScreen. Probably, teh menus should be 
created when the callback is called. Example:

--------- 8< ---------
WDock *wDockCreate(WScreen *scr, int type, const char *name)
{
[snip]
        /* create dock menu */
        dock->menu = dockMenuCreate(scr, type);
--------- 8< ---------

We have the menu in memory all time. The menu is created, binded to the current 
screen, hidden, but is there. Probably, the easier way is, create the menu when 
the callback is called, and destroy it after. I am stopped here, because I can 
create the dock, clip, appicons, ... without the screen. I can create them in 
memory, paint when the screen is created, but I have problems with the menu 
items.

* More power to the Workspaces: The current workspaces aren't used. See these 
lines:

--------- 8< ---------
typedef struct WWorkspace {
    char *name;
    struct WDock *clip;
}
--------- 8< ---------

I changed it to this:

--------- 8< ---------
typedef struct WWorkspace {
        /* Workspace stuff */
        char *name;

        /* Dock stuff */
        struct WDock *dock;             /* Dock for this workspace */

        /* Clip stuff */
        struct WDock *clip;             /* Clip for this workspace */

        /* Drawer stuff */
        WDrawerChain *drawers;          /* Chain of drawers */
        struct WDock *attracting_drawer; /* The drawer that auto-attracts 
icons, or NULL */
        int drawer_count;               /* Nb of drawers in the workspace */
} WWorkspace;

typedef struct wks_info {
        /* Workspace stuff */
        struct WWorkspace **workspaces; /* workspace array */
        int workspace_count;            /* number of workspaces */
        int current_workspace;          /* current workspace number */
        int last_used_workspace;        /* last used workspace number */
        WMFont *workspace_name_font;

        /* Dock & Clip & Drawers stuff */
        struct WAppIcon *clip_icon;     /* The clip main icon, or the dock's, 
if they are merged */

        /* Menus */
        struct WMenu *workspace_menu;   /* workspace operation */
        struct WMenu *workspace_submenu; /* workspace list for window_menu */
        struct WMenu *clip_menu;        /* Menu for clips */
        struct WMenu *clip_submenu;     /* Workspace list for clips */
        struct WMenu *clip_options;     /* Options for Clip */
        struct WMenu *clip_ws_menu;     /* workspace menu for clip */
        struct WMenu *drawer_menu;      /* Menu for drawers */
        struct WMenu *dock_pos_menu;    /* Dock position menu */
} wks_info;
--------- 8< ---------

My code is yours, I can send my current patches if somebody wants help with the 
code.

kix


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to