*fix* finish dnd problems and autohide
git-svn-id: http://tint2.googlecode.com/svn/trunk@514 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
@@ -71,11 +71,6 @@ GArray* backgrounds;
|
||||
|
||||
Imlib_Image default_icon;
|
||||
|
||||
|
||||
void autohide_hide(void* p);
|
||||
void autohide_show(void* p);
|
||||
|
||||
|
||||
void default_panel()
|
||||
{
|
||||
panel1 = 0;
|
||||
|
||||
@@ -149,6 +149,7 @@ int click_clock(Panel *panel, int x, int y);
|
||||
Area* click_area(Panel *panel, int x, int y);
|
||||
|
||||
void autohide_show(void* p);
|
||||
void autohide_hide(void* p);
|
||||
void autohide_trigger_show(Panel* p);
|
||||
void autohide_trigger_hide(Panel* p);
|
||||
|
||||
|
||||
@@ -95,6 +95,7 @@ void server_init_atoms ()
|
||||
server.atom.XdndAware = XInternAtom(server.dsp, "XdndAware", False);
|
||||
server.atom.XdndPosition = XInternAtom(server.dsp, "XdndPosition", False);
|
||||
server.atom.XdndStatus = XInternAtom(server.dsp, "XdndStatus", False);
|
||||
server.atom.XdndLeave = XInternAtom(server.dsp, "XdndLeave", False);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ typedef struct Global_atom
|
||||
Atom XdndAware;
|
||||
Atom XdndPosition;
|
||||
Atom XdndStatus;
|
||||
Atom XdndLeave;
|
||||
} Global_atom;
|
||||
|
||||
|
||||
|
||||
@@ -708,6 +708,7 @@ int main (int argc, char *argv[])
|
||||
Panel *panel;
|
||||
GSList *it;
|
||||
struct timeval* timeout;
|
||||
int hidden_dnd = 0;
|
||||
|
||||
start:
|
||||
init (argc, argv);
|
||||
@@ -791,11 +792,17 @@ start:
|
||||
else if (e.type == LeaveNotify)
|
||||
autohide_trigger_hide(panel);
|
||||
if (panel->is_hidden) {
|
||||
if (e.type == ClientMessage && e.xclient.message_type == server.atom.XdndPosition)
|
||||
if (e.type == ClientMessage && e.xclient.message_type == server.atom.XdndPosition) {
|
||||
hidden_dnd = 1;
|
||||
autohide_show(panel);
|
||||
}
|
||||
else
|
||||
continue; // discard further processing of this event because the panel is not visible yet
|
||||
}
|
||||
else if (hidden_dnd && e.type == ClientMessage && e.xclient.message_type == server.atom.XdndLeave) {
|
||||
hidden_dnd = 0;
|
||||
autohide_hide(panel);
|
||||
}
|
||||
}
|
||||
|
||||
switch (e.type) {
|
||||
|
||||
Reference in New Issue
Block a user